示例:Kinesis Video Streams SDK GStreamer 制作人插件-kvssink - Amazon Kinesis Video Streams

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

示例:Kinesis Video Streams SDK GStreamer 制作人插件-kvssink

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

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

该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元素

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 系统上的 v4l2 设备,或者适用于设备的 rtspsrc。 RTSP指定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启动命令示例

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

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

以下命令使用 r GStreamer tspsrc 插件在 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。此示例使用 v4l2src 插件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。此示例使用 v4l2src 插件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。此示例使用 rt spsrc 插件GStreamer。

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 插件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 上创建了一个将视频流式传输到 Kinesis Video Streams 的GStreamer管道。此示例使用 v4l2src 插件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 和 Ubuntu 中同时直播音频和视频

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

示例 8:在 macOS 中流式传输来自设备源的音频和视频

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

示例 9:上传同时包含音频和视频的MKV文件

了解如何运行 gst-launch-1.0 命令来上传同时包含音频和视频的MKV文件。你需要一个包含 h.264 和AAC编码媒体的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启动命令示例