本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
示例:Kinesis Video Streams Producer SDK gStreamer 插件-kvssink
本主题介绍如何构建用作 GStreamer 插件的 Amazon Kinesis Video Streams Producer SDK。
GStreamer
gStreamer 插件将 Kinesis Video Streams Producer SDK 提供的功能封装在 gStreamer sink 元素中,从而自动管理将你的视频流传输到 Kinesis Video Streams Video Streams 的过程。kvssink
GStreamer 框架提供标准的托管环境,用于构建源自摄像机或其他视频源的媒体流,以供进一步处理、渲染或存储。
GStreamer 管道通常由源(视频摄像头)与接收器元素(用于呈现视频的播放器或用于脱机检索的存储)之间的链接组成。在本示例中,您使用创建者开发工具包元素作为视频源(网络摄像机或 IP 摄像机)的接收器或媒体目标。然后,封装 SDK 的插件元素将视频流发送到 Kinesis Video Streams。
本主题介绍如何构建 GStreamer 媒体管道,该管道能够将来自视频源(例如网络摄像机或 RTSP 流)的视频流式传输到 Kinesis Video Streams,通常通过中间编码阶段(使用 H.264 编码)连接到 Kinesis Video Streams。当您的视频流作为 Kinesis 视频流可用时,您可以使用 K inesis Video Streams 解析器库对视频流进行进一步处理、播放、存储或分析。
![GStreamer 媒体管道的功能视图,用于将视频从摄像机流式传输到 Kinesis Video Streams 服务。](images/gstreamer-pipeline.png)
下载、构建和配置 gStreamer 元素
GStreamer 插件示例包含在 Kinesis Video Streams C++ Producer SDK 中。有关该开发工具包的先决条件和下载信息,请参阅步骤 1:下载并配置 C++ 制作器库代码。
您可以在 macOS、Ubuntu、Raspberry Pi 或 Windows 中将创建者开发工具包 GStreamer 接收器构建为动态库。GStreamer 插件位于您的 build
目录中。要加载此插件,它必须位于您的插件中GST_PLUGIN_PATH
。运行以下命令:
export GST_PLUGIN_PATH=`pwd`/build
注意
在 macOS 上,在 Docker 容器中运行 GStreamer 时,只能对来自网络摄像机的视频进行流式处理。在 macOS 上的 Docker 容器中,不支持对来自 USB 摄像机的视频进行流式处理。
运行 gStreamer 元素
要使用 Kinesis Video Streams Producer SDK 元素作为接收器运行 gStreamer,请使用命令。gst-launch-1.0
使用适合 GStreamer 插件使用的上游元素。例如,对于 Linux 系统上的 v4l2 设备使用 v4l2srckvssink
作为向创建者开发工具包发送视频的接收器(管道的最终目标)。
除了提供凭证和提供区域外,该kvssink
元素还具有以下必需参数:
-
stream-name
— 目的地 Kinesis Video Streams 的名称。
有关 kvssink
可选参数的信息,请参阅gStreamer 元素参数参考。
有关 gStreamer 插件和参数的最新信息,请参阅 ggst-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 管道,该管道以 H.264 格式对来自 USB 摄像头的直播进行编码,然后将其流式传输到 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 中同时直播音频和视频
了解在 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 后,你可以使用下面提供的命令之一从亚马逊弹性容器注册表下载 Kinesis Video Streams C++ Producer SDK(和 gStreamer 插件)。docker
pull
要将 Kinesis Video Streams Producer 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 Amazon --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 启动命令示例。