将rtsp视频流发送到AWS Kinesis Video Streams的方案——使用Gstreamer(C++) Command Line

大纲

  • 1 创建Kinesis Video Streams
    • 1.1 创建视频流
    • 1.2 记录Creation Time
  • 2 创建策略
    • 2.1 赋予权限
    • 2.2 限制资源
    • 2.3 Json格式描述(或上面手工设置)
    • 2.4 注意事项
  • 3 创建IAM用户
    • 3.1 生成密钥对
    • 3.2 附加策略
    • 3.3 记录访问密钥对
  • 4 编译C++ 创建者库
  • 5 发送
  • 6 检查
  • 参考文献

我们的实验都是在us-east-1上进行的。如果想在其他区域做实验,可以将下面us-east-1都改成对应的区域。

1 创建Kinesis Video Streams

登录到https://us-east-1.console.aws.amazon.com/kinesisvideo/home?region=us-east-1#/streams

1.1 创建视频流

创建名称为RtspVideoStream的视频流
在这里插入图片描述

1.2 记录Creation Time

上步创建完后,我们可以从ARN中获取Creation Time。这个字段之后要在配置策略时使用到。
在这里插入图片描述

2 创建策略

登录到https://us-east-1.console.aws.amazon.com/iamv2/home#/policies
创建名称为RtspVideoStreamPolicy的策略

2.1 赋予权限

在这里插入图片描述

2.2 限制资源

在这里插入图片描述
在Stream name处填写上一步创建的流的名称RtspVideoStream,Creation time处填写之前从ARN中获取的1659609702642。Account会自动填写根账号的ID。
在这里插入图片描述

2.3 Json格式描述(或上面手工设置)

注意将ACCOUNTID替换成自己账号的ID

{
“Version”: “2012-10-17”,
“Statement”: [
{
“Sid”: “VisualEditor0”,
“Effect”: “Allow”,
“Action”: [
“kinesisvideo:PutMedia”,
“kinesisvideo:GetDataEndpoint”,
“kinesisvideo:DescribeStream”
],
“Resource”: “arn:aws:kinesisvideo:us-east-1:AccountID:stream/RtspVideoStream/1659609702642”
}
]
}

2.4 注意事项

如果不希望做到精确控制权限,或者希望快速使用,可以将此策略配置为:所有资源的所有权限。

3 创建IAM用户

登录https://us-east-1.console.aws.amazon.com/iamv2/home#/users
创建名为KinesisVideoStreamsUser的用户。

3.1 生成密钥对

需要勾选Access key - Programmatic access。
在这里插入图片描述

3.2 附加策略

附加上一步创建的策略——RtspVideoStreamPolicy。
在这里插入图片描述

3.3 记录访问密钥对

下载保存(或复制)Access key ID和Secret access key密钥对。
在这里插入图片描述

4 编译C++ 创建者库

我的测试环境是Ubuntu,在console中输入以下指令编译。其中cmake时间有点长,需要耐心等待下。

git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp.git
mkdir -p amazon-kinesis-video-streams-producer-sdk-cpp/build
cd amazon-kinesis-video-streams-producer-sdk-cpp/build
sudo apt-get install libssl-dev libcurl4-openssl-dev liblog4cplus-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-base-apps gstreamer1.0-plugins-bad gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-tools
sudo apt install cmake
cmake -DBUILD_GSTREAMER_PLUGIN=TRUE ..
make
cd ..
export GST_PLUGIN_PATH=`pwd`/build
export LD_LIBRARY_PATH=`pwd`/open-source/local/lib

5 发送

执行下面指令(注意替换YourAccessKeyYourSecretKey为KinesisVideoStreamsUser对应的值):

gst-launch-1.0 -v rtspsrc location=rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mp4 short-header=TRUE ! rtph264depay ! h264parse ! kvssink stream-name=RtspVideoStream storage-size=128 access-key=“YourAccessKey” secret-key=“YourSecretKey” aws-region=“us-east-1”

rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mp4是网上找的公开的rtsp流。至于流有没有效,可以下载VLC播放器测试。
在这里插入图片描述
在这里插入图片描述

6 检查

再登录到Kinesis Video Streams。可以在线查看推送过来的视频。
在这里插入图片描述
如果这个rtsp失效了,可以在本地搭建一个rtsp服务器,然后使用ffmpeg推送视频流。具体的做法可以见《在Windows操作系统上使用rtsp simple server和ffmpeg推送录屏视频流》。

参考文献

  1. https://docs.aws.amazon.com/zh_cn/kinesisvideostreams/latest/dg/producer-sdk-cpp.html
  2. https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/blob/master/docs/linux.md

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/217772.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

openGauss训练营培训课程第1课时

课时1:openGauss全景介绍 1、介绍 openGauss 全景 1.1.openGauss总体架构介绍 本章节主要介绍了openGauss发展的历史,现状以及未来。对当前的DataPod和DataKit 2种openGauss当前主推的场景化产品进行了介绍。同时对openGauss的整个逻辑模块的视图进行了讲解。 …

cv2.threshold 图像二值化

图像二值化 whatparameters示例 what cv2.threshold是OpenCV中用于进行图像二值化的函数。它的作用是将输入图像的像素值转换为两个可能的值之一,通常是0(黑色)或255(白色),根据一个设定的阈值。图像二值化…

操作系统——进程同步

目录 一、信号量相关函数 1. 创建信号量集 2. 获取信号量集 3. 等待、通知信号量集 4. 控制信号量集 二、简单进程同步 1. 创建信号量集 2. P操作 3. V操作 4. 删除信号量集 5. 测试: 三、生产者与消费者 1. 创建、删除共享内存及信号量集 2. 单一生产…

数字化转型的核心是数据,还是应用?_光点科技

数字化转型是当今世界各行各业的热门话题。它不仅仅是将传统的业务流程、产品和服务数字化,更是一种全面的业务战略转变。在这个转变过程中,数据和应用都扮演着至关重要的角色。但究竟哪一个是数字化转型的核心?这个问题值得深入探讨。 我们来…

思维模型 投射效应

本系列文章 主要是 分享 思维模型,涉及各个领域,重在提升认知。将自身想法投射于他人。 1 投射效应的应用 1.1 生活中常见的投射效应 自我投射:一个人在工作中表现出色,他可能会认为其他人也应该像他一样努力工作,并…

字符串函数strlen的用法详解及其相关题目

strlne函数的使用 一.strlen函数的声明二.strlen函数的头文件三.相关题目代码1代码2题目1题目2题目3题目4题目5题目6 一.strlen函数的声明 size_t strlen ( const char * str );二.strlen函数的头文件 使用strlen函数我们需要使用以下头文件 #include <string.h>三.相…

数据库中的笛卡尔积:定义、生成与避免策略

笛卡尔积&#xff08;Cartesian Product&#xff09;是一个在数据库和数据仓库中常见的概念。它来源于数学中的集合论&#xff0c;主要用于描述两个集合中元素之间所有可能的配对情况。在数据库领域&#xff0c;当你在查询中连接两个表时&#xff0c;如果没有指定适当的连接条件…

vue计算排列布局

1、效果 2、html <div class"databubble"><div ref"content"><divv-for"(item, index) in databubble"ref"contentPage":key"index"class"contentPage"><div><span class"title&…

2023-2024-1-高级语言程序设计-第2次月考函数题

6-1-1 调用函数求分段函数 编写函数fun计算下列分段函数的值&#xff1a; 。 函数接口定义&#xff1a; float fun(float x); 其中 x 是用户传入的参数。 函数须返回分段函数的计算结果。 裁判测试程序样例&#xff1a; #include <stdio.h> #include <math.h> …

EI级 | Matlab实现TCN-GRU-Multihead-Attention多头注意力机制多变量时间序列预测

EI级 | Matlab实现TCN-GRU-Multihead-Attention多头注意力机制多变量时间序列预测 目录 EI级 | Matlab实现TCN-GRU-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.【EI级】Matlab实现TCN-GRU-Multihead-Attention…

聊聊 Jetpack Compose 的 “状态订阅自动刷新” -- mutableStateListOf

Jekpack Compose “状态订阅&自动刷新” 系列&#xff1a; 【 聊聊 Jetpack Compose 的 “状态订阅&自动刷新” - - MutableState/mutableStateOf 】 【 聊聊 Jetpack Compose 的 “状态订阅&自动刷新” - - remember 和重组作用域 】 【 聊聊 Jetpack Compose 的 …

王道数据结构课后代码题p175 06.已知一棵树的层次序列及每个结点的度,编写算法构造此树的孩子-兄弟链表。(c语言代码实现)

/* 此树为 A B C D E F G 孩子-兄弟链表为 A B E C F G D */ 本题代码如下 void createtree(tree* t, char a[], int degree[], int n) {// 为B数组分配内存tree* B (tree*)malloc(sizeof(tree) * n);int i 0;i…

Maven基础知识

Maven是一款用于管理和构建Java项目的工具 Maven的作用&#xff1a; 依赖管理&#xff1a;方便快捷的管理项目依赖的jar包&#xff0c;避免版本冲突问题统一项目结构&#xff1a;提供标准统一的项目结构项目构建&#xff1a;标准跨平台的自动化项目构建方式 maven创建的工程…

Milvus 再上新!支持 Upsert、Kafka Connector、集成 Airbyte,助力高效数据流处理

Milvus 已支持 Upsert、 Kafka Connector、Airbyte&#xff01; 在上周的文章中《登陆 Azure、发布新版本……Zilliz 昨夜今晨发生了什么&#xff1f;》&#xff0c;我们已经透露过 Milvus&#xff08;Zilliz Cloud&#xff09;为提高数据流处理效率&#xff0c; 先后支持了 Up…

HostHunter虚拟主机发现

HostHunter虚拟主机发现 1.HostHunter2.安装3.参数解释4.实例1.HostHunter HostHunter 一种工具,用于有效发现和提取提供大量目标 IPv4 或 IPv6 地址的主机名。HostHunter 利用简单的 OSINT 和主动协调技术将 IP 目标与虚拟主机名进行映射。这对于发现组织的真正攻击面特别有…

[ROS2] --- ROS2安装

ROS2安装到Ubuntu2204系统中&#xff0c;安装步骤如下&#xff1a; 1 设置编码 $ sudo apt update && sudo apt install locales $ sudo locale-gen en_US en_US.UTF-8 $ sudo update-locale LC_ALLen_US.UTF-8 LANGen_US.UTF-8 $ export LANGen_US.UTF-82 添加源 $…

深入探讨网络抓取:如何使用 Scala 和 Dispatch 获取 LinkedIn 图片

网络抓取是一种从互联网上获取数据的技术&#xff0c;它可以用于各种目的&#xff0c;例如数据分析、信息检索、竞争情报等。网络抓取的过程通常包括以下几个步骤&#xff1a; 发送 HTTP 请求到目标网站解析响应的 HTML 文档提取所需的数据存储或处理数据 在本文中&#xff0…

从声纹模型到语音合成:音频处理 AI 技术前沿 | 开源专题 No.45

facebookresearch/audiocraft Stars: 16.6k License: MIT AudioCraft 是一个用于音频生成的 PyTorch 库。它包含了两个最先进的 AI 生成模型 (AudioGen 和 MusicGen) 的推理和训练代码&#xff0c;可以产生高质量音频。该项目还提供了其他功能&#xff1a; MusicGen&#xf…

MySQL语法回顾

数据库操作语言包括DDL、DML、DQL和DCL&#xff0c;分别用于定义、操作、查询和控制数据库。 DDL&#xff08;Data Definition Language&#xff09;数据定义语言&#xff1a; DDL用于定义数据库、表、列、索引、视图、存储过程、触发器等对象&#xff0c;包括CREATE、ALTER、…

golang之net/http模块学习

文章目录 开启服务开启访问静态文件获取现在时间按时间创建一个空的json文件按时间创建一个固定值的json文件 跨域请求处理输出是json 开启服务 package mainimport ("fmt""net/http" )//路由 func handler(w http.ResponseWriter, r *http.Request){fmt.…