本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
示例:Kinesis Video Streams SDK GStreamer 制作人插件-kvssink
本主题介绍如何构建用作GStreamer插件的 Amazon Kinesis Video Streams SDK 制作器。
GStreamer
该GStreamer插件通过将 Kinesis Video Streams 制作GStreamer人提供的功能封装在接收器元素中,自动管理将视频流传输到 Kinesis Video St SDK reams 的过程。kvssink
该GStreamer框架提供了一个标准的托管环境,用于从摄像机或其他视频源等设备构建媒体流,用于进一步处理、渲染或存储。
GStreamer管道通常由源(摄像机)和接收器元素(用于渲染视频的播放器或用于离线检索的存储)之间的链接组成。在此示例中,您使用 Producer SDK 元素作为视频源(网络摄像头或 IP 摄像机)的接收器或媒体目的地。封装的插件元素SDK然后将视频流发送到 Kinesis Video Streams。
本主题介绍如何构建一个GStreamer媒体管道,该管道能够将来自视频源(例如网络摄像机或视频流)的视频流式传输到 Kinesis Video RTSP Streams,通常通过中间编码阶段(使用 H.264 编码)连接到 Kinesis Video Streams。当您的视频流作为 Kinesis 视频流可用时,您可以使用使用解析器库观看摄像机的输出对视频流进行进一步处理、播放、存储或分析。
下载、构建和配置GStreamer元素
GStreamer插件示例包含在 Kinesis Video Streams Video Streams C++ SDK 制作器中。有关SDK先决条件和下载的信息,请参阅下载并配置 C++ 制作器库代码。
你可以在 macOS、Ubuntu、Raspberry Pi 或 Windows 上将 producer sin SDK GStreamer k 构建为动态库。该GStreamer插件位于您的build
目录中。要加载此插件,它必须位于您的插件中GST_PLUGIN_PATH
。运行以下命令:
export GST_PLUGIN_PATH=`pwd`/build
注意
在 macOS 上,只有在 Docker 容器GStreamer中运行时,才能流式传输来自网络摄像机的视频。在 macOS 上,不支持在 Docker 容器中使用USB摄像头流式传输视频。
运行GStreamer元素
要使用 Kinesis Video Streams SDK 制作者元素作为接收器运行GStreamer,请使用命令gst-launch-1.0
。使用适合GStreamer插件使用的上游元素。例如,v4l2src 适用于 Linux 系统kvssink
为接收器(管道的最终目的地),以向制作人发送视频SDK。
除了提供凭证和提供区域外,该kvssink
元素还具有以下必需参数:
-
stream-name
— 目的地 Kinesis Video Streams 的名称。
有关 kvssink
可选参数的信息,请参阅GStreamer元素参数参考。
有关GStreamer插件和参数的最新信息,请参阅GStreamer插件gst-inspect-1.0
后面加上GStreamer元素或插件的名称来打印其信息,并验证其是否在您的设备上可用:
gst-inspect-1.0 kvssink
如果构建kvssink
失败或 GST PLUGIN __设置不PATH正确,则输出将如下所示:
No such element or plugin 'kvssink'
GStreamer启动命令示例
以下示例演示如何使用该kvssink
GStreamer插件从不同类型的设备流式传输视频。
示例 1:在 Ubuntu 上直播来自RTSP摄像头的视频
以下命令使用 r
gst-launch-1.0 -v rtspsrc location="rtsp://YourCameraRtspUrl" short-header=TRUE ! rtph264depay ! h264parse ! kvssink stream-name="YourStreamName" storage-size=128
示例 2:在 Ubuntu 上对来自USB摄像头的视频进行编码和流式传输
以下命令在 Ubuntu 上创建一个GStreamer管道,该管道以 H.264 格式对来自USB摄像机的直播进行编码,然后将其流式传输到 Kinesis Video Streams。此示例使用 v4l2src 插件
gst-launch-1.0 v4l2src do-timestamp=TRUE device=/dev/video0 ! videoconvert ! video/x-raw,format=I420,width=640,height=480,framerate=30/1 ! x264enc bframes=0 key-int-max=45 bitrate=500 ! video/x-h264,stream-format=avc,alignment=au,profile=baseline ! kvssink stream-name="YourStreamName" storage-size=512 access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"
示例 3:在 Ubuntu 上直播来自USB摄像头的预编码视频
以下命令在 Ubuntu 上创建了一个GStreamer管道,该管道将摄像机已经以 H.264 格式编码的视频流式传输到 Kinesis Video Streams。此示例使用 v4l2src 插件
gst-launch-1.0 v4l2src do-timestamp=TRUE device=/dev/video0 ! h264parse ! video/x-h264,stream-format=avc,alignment=au ! kvssink stream-name="plugin" storage-size=512 access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"
示例 4:在 macOS 上流式传输来自网络摄像机的视频
以下命令在 macOS 上创建一个GStreamer管道,该管道通过网络摄像机将视频流式传输到 Kinesis Video Streams。此示例使用 rt spsrc 插件
gst-launch-1.0 rtspsrc location="rtsp://YourCameraRtspUrl" short-header=TRUE ! rtph264depay ! h264parse ! video/x-h264, format=avc,alignment=au ! kvssink stream-name="YourStreamName" storage-size=512 access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"
示例 5:在 Windows 上流式传输来自网络摄像机的视频
以下命令在 Windows 上创建了一个GStreamer管道,该管道将视频从网络摄像机流式传输到 Kinesis Video Streams。此示例使用 rt spsrc 插件
gst-launch-1.0 rtspsrc location="rtsp://YourCameraRtspUrl" short-header=TRUE ! rtph264depay ! video/x-h264, format=avc,alignment=au ! kvssink stream-name="YourStreamName" storage-size=512 access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"
示例 6:在 Raspberry Pi 上直播来自摄像头的视频
以下命令在 Raspberry Pi 上创建了一个将视频流式传输到 Kinesis Video Streams 的GStreamer管道。此示例使用 v4l2src 插件
gst-launch-1.0 v4l2src do-timestamp=TRUE device=/dev/video0 ! videoconvert ! video/x-raw,format=I420,width=640,height=480,framerate=30/1 ! omxh264enc control-rate=1 target-bitrate=5120000 periodicity-idr=45 inline-header=FALSE ! h264parse ! video/x-h264,stream-format=avc,alignment=au,width=640,height=480,framerate=30/1,profile=baseline ! kvssink stream-name="YourStreamName" access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"
示例 7:在 Raspberry Pi 和 Ubuntu 中同时直播音频和视频
了解在 Raspberry-PI 和 Ubuntu 中如何运行 gst-launch-1.0 命令开始对音频和视频进行流式处理
示例 8:在 macOS 中流式传输来自设备源的音频和视频
了解在 MacOS 中如何运行 gst-launch-1.0 命令开始对音频和视频进行流式处理
示例 9:上传同时包含音频和视频的MKV文件
了解如何运行 gst-launch-1.0 命令来上传同时包含音频和视频的MKV文件
在 Docker 容器中运行该GStreamer元素
Docker 是一个使用容器来开发、部署和运行应用程序的平台。使用 Docker 创建GStreamer管道可以标准化 Kinesis Video Streams 的操作环境,从而简化了应用程序的构建和使用。
要安装和配置 Docker,请参阅以下内容:
安装 Docker 后,您可以使用下面docker
pull
提供的命令之一从亚马逊弹性容器注册表下载 Kinesis Video Streams C++ SDK 制作器(GStreamer和插件)。
要将 Kinesis Video Streams SDK 制作者元素作为 Docker 容器中的接收器元素运行GStreamer,请执行以下操作:
对你的 Docker 客户端进行身份验证
通过您打算从中提取映像的亚马逊ECR注册表对您的 Docker 客户端进行身份验证。您必须为使用的每个注册表获取身份验证令牌。代币的有效期为 12 小时。有关更多信息,请参阅 Amazon Elastic Container Registry 用户指南中的注册表身份验证。
例 : 向 Amazon 进行身份验证 ECR
要向 Amazon 进行身份验证ECR,请复制并粘贴以下命令,如图所示。
sudo aws ecr get-login-password --region us-west-2 | docker login -u AWS --password-stdin https://546150905175.dkr.ecr.us-west-2.amazonaws.com
如果成功,输出将打印 Login Succeeded
。
下载用于 Ubuntu、macOS、Windows 或 Raspberry Pi 的 Docker 映像
根据您的操作系统,使用以下命令之一将 Docker 映像下载到您的 Docker 环境:
下载用于 Ubuntu 的 Docker 映像
sudo docker pull 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux:latest
下载用于 macOS 的 Docker 映像
docker pull 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux:latest
下载用于 Windows 的 Docker 映像
docker pull 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-windows:latest
下载用于 Raspberry Pi 的 Docker 映像
sudo docker pull 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-raspberry-pi:latest
要验证是否已成功添加镜像,请使用以下命令:
docker images
运行 Docker 镜像
根据您的操作系统,使用以下命令之一运行 Docker 映像:
在 Ubuntu 上运行 Docker 镜像
sudo docker run -it --network="host" --device=/dev/video0 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux /bin/bash
在 macOS 上运行 Docker 镜像
sudo docker run -it --network="host" 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux /bin/bash
在 Windows 上运行 Docker 镜像
docker run -it 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-windows
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
RTSP_URL
STREAM_NAME
在树莓派上运行 Docker 镜像
sudo docker run -it --device=/dev/video0 --device=/dev/vchiq -v /opt/vc:/opt/vc 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-raspberry-pi /bin/bash
Docker 启动容器并显示命令提示符,供您在容器中使用命令。
在该容器中,使用以下命令设置环境变量:
export LD_LIBRARY_PATH=/opt/awssdk/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib:$LD_LIBRARY_PATH export PATH=/opt/awssdk/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/bin:$PATH export GST_PLUGIN_PATH=/opt/awssdk/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib:$GST_PLUGIN_PATH
开始kvssink
使用流式传输gst-launch-1.0
以运行适合您的设备和视频源的管道。有关管道的示例,请参见GStreamer启动命令示例。