示例:Kinesis Video Streams Producer SDK gStreamer 插件 - Amazon Kinesis Video Streams
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

示例:Kinesis Video Streams Producer SDK gStreamer 插件

本主题介绍如何构建用作 GStreamer 插件的 Amazon Kinesis Video Streams Producer SDK。

GStreamer 是一种流行的媒体框架,可供多个摄像机和视频源使用,通过组合模块化插件来创建自定义媒体管道。Kinesis Video Streams gStreamer 插件简化了你现有 gStreamer 媒体管道与 Kinesis Video Streams 的集成。集成 gStreamer 后,您可以将来自网络摄像头或实时流媒体协议 (RTSP) 摄像机的视频流式传输到 Kinesis Video Streams,以便进行实时或以后的播放、存储和进一步分析。

gStreamer 插件将 Kinesis Video Streams Producer SDK 提供的功能封装在 gStreamer sink 元素中,从而自动管理将你的视频流传输到 Kinesis Video Streams Video Streams 的过程。kvssinkGStreamer 框架提供标准的托管环境,用于构建源自摄像机或其他视频源的媒体流,以供进一步处理、渲染或存储。

GStreamer 管道通常由源(视频摄像头)与接收器元素(用于呈现视频的播放器或用于脱机检索的存储)之间的链接组成。在本示例中,您使用创建者开发工具包元素作为视频源(网络摄像机或 IP 摄像机)的接收器或媒体目标。然后,封装 SDK 的插件元素将视频流发送到 Kinesis Video Streams。

本主题介绍如何构建 GStreamer 媒体管道,该管道能够将来自视频源(例如网络摄像机或 RTSP 流)的视频流式传输到 Kinesis Video Streams,通常通过中间编码阶段(使用 H.264 编码)连接到 Kinesis Video Streams。当您的视频流作为 Kinesis 视频流可用时,您可以使用 Kinesis 视频流解析器库对视频流进行进一步处理、播放、存储或分析。


                GStreamer 媒体管道的功能视图,用于将视频从摄像机流式传输到 Kinesis Video Streams 服务。

下载、构建和配置 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 设备使用 v4l2src,或对于 RTSP 设备使用 rtspsrc。指定 kvssink 作为向创建者开发工具包发送视频的接收器(管道的最终目标)。

kvssink 元素具有以下必需参数:

  • stream-name— 目标 Kinesis 视频流的名称。

  • storage-size— 设备的存储大小(以千字节为单位)。有关配置设备存储的信息,请参阅StorageInfo

  • access-key— 用于 Amazon 访问 Kinesis Video Streams 的访问密钥。您必须提供此参数或 credential-path

  • secret-key— 用于访问 Kinesis Video Streams 的 Amazon 密钥。您必须提供此参数或 credential-path

  • credential-path— 包含您访问 Kinesis Video Streams 的凭据的文件路径。有关轮换证书的更多信息,请参阅管理 IAM 用户的访问密钥。您必须提供此参数或 access-keysecret-key

有关 kvssink 可选参数的信息,请参阅gStreamer 元素参数参考

有关 gStreamer 插件和参数的最新信息,请参阅 gStreamer 插件,或使用以下命令列出选项:

gst-inspect-1.0 kvssink

如果构建失败或 GST_PLUGIN_PATH 设置不正确,则输出将如下所示:

No such element or plugin 'kvssink'

GStreamer 启动命令示例

以下示例演示如何使用 GStreamer 插件从不同类型的设备流式传输视频。

示例 1:在 Ubuntu 上直播来自 RTSP 摄像头的视频

以下命令将使用 rtspsrc GStreamer 插件在 Ubuntu 上创建一个流自网络 RTSP 摄像机的 GStreamer 管道:

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 src gStreamer 插件。

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 src gStreamer 插件。

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 GStreamer 插件。

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"

示例 5:在 Windows 上流式传输来自网络摄像机的视频

以下命令在 Windows 上创建一个 gStreamer 管道,用于将视频从网络摄像机流式传输到 Kinesis Video Streams。此示例使用 rtspsrc GStreamer 插件。

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 src gStreamer 插件。

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 上直播来自摄像机的视频并指定区域

以下命令在 Raspberry Pi 上创建 GStreamer 管道,该管道将视频流式传输到美国东部(弗吉尼亚北部)地区的 Kinesis Video Streams。此示例使用 v4l2 src gStreamer 插件。

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"

示例 8:在 Raspberry Pi 和 Ubuntu 中同时直播音频和视频

了解在 Raspberry-PI 和 Ubuntu 中如何运行 gst-launch-1.0 命令开始对音频和视频进行流式处理

示例 9:在 macOS 中同时传输音频和视频

了解在 MacOS 中如何运行 gst-launch-1.0 命令开始对音频和视频进行流式处理

示例 10:上传包含音频和视频的 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 进行身份验证
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 映像

sudo 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

使用适合您设备的gst-launch-1.0命令从摄像机开始直播。

有关使用 gst-launch-1.0 命令连接到本地网络摄像机或网络 RTSP 摄像机的示例,请参阅启动命令