本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
示例:Kinesis 视频流制作人 SDK GStreamer 插件-kvssink
本主题介绍如何构建 Amazon Kinesis Video Streams 制作器 SDK 以用作 GStreamer 插件。
GStreamer
GStreamer 插件通过将 Kinesis Video Streams 制作人 SDK 提供的功能封装在 GStreamer 接收器元素中,自动管理您的视频流向 Kinesis Video Streams 的传输。kvssinkGStreamer 框架提供标准的托管环境,用于构建源自摄像机或其他视频源的媒体流,以供进一步处理、渲染或存储。
GStreamer 管道通常由源(视频摄像头)与接收器元素(用于呈现视频的播放器或用于脱机检索的存储)之间的链接组成。在本示例中,您使用创建者开发工具包元素作为视频源(网络摄像机或 IP 摄像机)的接收器或媒体目标。然后,封装 SDK 的插件元素将视频流发送到 Kinesis 视频流。
本主题介绍如何构建 GStreamer 媒体管道,该管道能够从视频源(例如网络摄像头或 RTSP 流)流式传输视频,通常通过中间编码阶段(使用 H.264 编码)连接到 Kinesis 视频流。当您的视频流作为 Kinesis 视频流可用时,您可以使用来进一步处理、播放、存储或分析您的视频流。使用解析器库观看摄像机的输出
下载、构建和配置 GStreamer 元素
GStreamer 插件示例包含在 Kinesis Video Streams C++ 制作人 SDK 中。有关该开发工具包的先决条件和下载信息,请参阅下载并配置 C++ 生产者库代码。
你可以在 macOS、Ubuntu、Raspberry Pi 或 Windows 上将生产者 SDK GStreamer Sink 构建为动态库。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 插件使用的上游元素。例如,对于 Linux 系统上的 v4l2 设备使用 v4l2srckvssink 作为向创建者开发工具包发送视频的接收器(管道的最终目标)。
除了提供证书和提供区域外,该kvssink元素还具有以下必需参数:
-
stream-name— 目标 Kinesis 视频流的名称。
有关 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 摄像机的视频
以下命令将使用 rtspsrc
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 管道,对来自 USB 摄像头的直播进行 H.264 格式编码,然后将其流式传输到 Kinesis Video Streams。此示例使用 v4l2
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。此示例使用 v4l2
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。此示例使用 rtspsrc
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。此示例使用 rtspsrc
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 上创建一个 GStreamer 管道,将视频流式传输到 Kinesis Video Streams。此示例使用 v4l2
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 中同时传输音频和视频
看看如何运行 gst-launch-1.0 命令开始在 Ubuntu 中直播音频和视频。 Raspberry-PI
示例 8:在 macOS 中流式传输来自设备源的音频和视频
了解在 MacOS 中如何运行 gst-launch-1.0 命令开始对音频和视频进行流式处理
示例 9:上传同时包含音频和视频的 MKV 文件
了解如何运行 gst-launch-1.0 命令来上传包含音频和视频的 MKV 文件
在 Docker 容器中运行 GStreamer 元素
Docker 是一个使用容器来开发、部署和运行应用程序的平台。使用 Docker 创建 GStreamer 管道可以标准化 Kinesis Video Streams 的操作环境,从而简化应用程序的构建和使用。
要安装和配置 Docker,请参阅以下内容:
安装 Docker 后,您可以使用以下提供的命令之一从亚马逊弹性容器注册表下载 Kinesis Video Streams C++ 制作器软件开发工具包(和 GStreamer 插件)。docker
pull
要将带有 Kinesis Video Streams 制作者 SDK 元素作为 Docker 容器中的接收器来运行 GStreamer,请执行以下操作:
验证你的 Docker 客户端
将您的 Docker 客户端验证到要从中提取镜像的 Amazon ECR 注册表。必须为使用的每个注册表获取身份验证令牌。代币的有效期为 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-windowsAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYRTSP_URLSTREAM_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 启动命令示例。