向 Amazon Kinesis 视频流发送数据 - Amazon Kinesis Video Streams

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

向 Amazon Kinesis 视频流发送数据

本节介绍如何将媒体数据从摄像机发送到您在上一节中创建的 Kinesis 视频流。本节使用使用 C++ 制作人库作为示例:Kinesis Video Streams SDK GStreamer 制作人插件-kvssink插件。

要从各种操作系统上的各种设备发送媒体,本教程使用了 Kinesis Video Streams C++ 制作器库GStreamer以及一个标准化摄像机和其他媒体来源访问的开源媒体框架。

构建SDK和示例

您可以在计算机上或中构建SDK和示例 AWS Cloud9。请按照以下相应步骤操作。

Build on your computer

使用自述文件中的说明生成器库和示例应用程序。

这包括:

  • 安装依赖项

  • 克隆存储库

  • CMake用于生成生成文件

  • 使用 mak e 构建二进制文件

Build in AWS Cloud9

请按照以下步骤上传到 Kinesis Video Stream AWS Cloud9 s 中。您无需将任何内容下载到您的计算机上。

  1. 在 AWS Management Console,打开AWS Cloud9

    选择 “创建环境”。

  2. 创建环境屏幕上,完成以下操作:

    • 名称-键入新环境的名称。

    • 平台-选择 Ubuntu 服务器 22.04。LTS

    您可以将其他字段保留为默认选项。

  3. 创建环境后,在 Cloud9 IDE 列中选择打开

    在屏幕的中间下方区域,你会看到Admin:~/environment $。这是 AWS Cloud9 (亚马逊EC2)终端。

    注意

    如果您不小心关闭了终端,请选择 “窗口”,“新建终端”。

    在终端中运行以下命令将音量更改为 20 GiB。

    1. 下载 脚本。

      wget https://awsj-iot-handson.s3-ap-northeast-1.amazonaws.com/kvs-workshop/resize_volume.sh
    2. 授予脚本执行权限。

      chmod +x resize_volume.sh
    3. 运行 脚本。

      ./resize_volume.sh
  4. 获取有关您可以通过高级打包工具(APT)安装或更新的所有软件的最新信息。

    此命令不会更新软件本身,但可以确保您的系统知道最新的可用版本。

    sudo apt-get update
  5. 安装 C++ 生产者SDK依赖关系。

    sudo apt-get install -y cmake m4 git build-essential pkg-config libssl-dev libcurl4-openssl-dev \ liblog4cplus-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \ gstreamer1.0-plugins-base-apps gstreamer1.0-plugins-bad gstreamer1.0-plugins-good \ gstreamer1.0-plugins-ugly gstreamer1.0-tools
  6. 使用 git 克隆 C++ 制作器SDK。

    git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp.git
  7. 准备一个构建目录。

    cd amazon-kinesis-video-streams-producer-sdk-cpp mkdir build cd build
  8. CMake用于生成生成文件。

    cmake .. -DBUILD_GSTREAMER_PLUGIN=TRUE -DBUILD_DEPENDENCIES=OFF

    预期输出的结尾如下所示:

    -- Build files have been written to: /home/ubuntu/environment/amazon-kinesis-video-streams-producer-sdk-cpp/build
  9. 使用 make 来编译SDK和示例应用程序,以及生成最终的可执行文件。

    make

    预期输出的结尾如下所示:

    [100%] Linking CXX executable kvs_gstreamer_file_uploader_sample [100%] Built target kvs_gstreamer_file_uploader_sample
  10. 确认示例文件已构建。列出当前目录中的文件:

    ls

    确认是否存在以下文件:

    • kvs_gstreamer_sample

    • libgstkvssink.so

  11. (可选)您可以在 shell 的启动脚本中添加设置 GST PLUGIN _ _ PATH 环境变量。这样可以确保PATH在新的终端会话期间正确设置 GST PLUGIN _。在中 AWS Cloud9,外壳程序的启动脚本是:~/.bashrc.

    运行以下命令将该命令附加到 shell 启动脚本的末尾。

    echo "export GST_PLUGIN_PATH=~/environment/amazon-kinesis-video-streams-producer-sdk-cpp/build" >> ~/.bashrc

    键入以下内容以运行 shell 的启动脚本:

    source ~/.bashrc

    确认 GST PLUGIN _ PATH 已设置。

    echo $GST_PLUGIN_PATH

    如果您正确设置了输出,您将看到以下输出。如果输出为空,则说明环境变量设置不正确。

    /home/ubuntu/environment/amazon-kinesis-video-streams-producer-sdk-cpp/build

运行示例将媒体上传到 Kinesis Video Streams

示例应用程序不支持IMDS凭证。在您的终端中,导出您的IAM用户或角色以及直播所在区域的 AWS 凭证。

export AWS_ACCESS_KEY_ID=YourAccessKey export AWS_SECRET_ACCESS_KEY=YourSecretKey export AWS_DEFAULT_REGION=YourAWSRegion

如果您使用的是临时 AWS 证书,请同时导出您的会话令牌:

export AWS_SESSION_TOKEN=YourSessionToken
.mp4 files

下载一个.mp4 视频样本上传到 Kinesis Video Streams。

wget https://awsj-iot-handson.s3-ap-northeast-1.amazonaws.com/kvs-workshop/sample.mp4

视频规格:

  • 分辨率 ——1280 x 720 像素

  • 帧速率-每秒 30 帧

  • 持续时间-14.0 秒

  • 视频编码-H.264,在轨道 1 中

  • 关键帧-每 3 秒,片段持续时间(也称为一组图片 (GoP) 大小)为 3 秒,最后一个片段长为 2 秒。

使用您之前创建的直播的名称运行以下命令。如果您尚未创建直播,请参阅创建 Amazon Kinesis 视频流

./kvs_gstreamer_sample YourStreamName ./sample.mp4
Sample video from GStreamer

使用以下命令使用生成视频GStreamer。

告诉GStreamer在哪里可以找到kvssinkGStreamer插件。在您的生成目录中,指定包含该libgstkvssink.so文件的文件夹的路径。

在您的构建目录中,运行以下命令:

export GST_PLUGIN_PATH=`pwd`

该GStreamer管道生成具有标准测试模式的实时测试视频流,该视频流以每秒 10 帧的速度运行,分辨率为 640x480 像素。添加了一个显示当前系统时间和日期的叠加层。然后将视频编码为 H.264 格式,并且最多每 10 帧生成一次关键帧,从而使片段持续时间(也称为一组图片 (GoP) 大小)为 1 秒。 kvssink获取 H.264 编码的视频流,将其打包为 Matroska (MKV) 容器格式,然后将其上传到你的 Kinesis 视频流中。

运行以下命令:

gst-launch-1.0 -v videotestsrc is-live=true \ ! video/x-raw,framerate=10/1,width=640,height=480 \ ! clockoverlay time-format="%a %B %d, %Y %I:%M:%S %p" \ ! x264enc bframes=0 key-int-max=10 \ ! h264parse \ ! kvssink stream-name="YourStreamName"

要停止GStreamer管道,请选择终端窗口并按 CTRL+C

注意

有关使用该GStreamer插件从摄像机或摄像机RTSP流中流式传输视频的USB更多信息,请参阅示例:Kinesis Video Streams SDK GStreamer 制作人插件-kvssink

查看确认对象

在上传过程中,Kinesis Video Streams 会将确认对象发送回执行上传的客户端。您应该在命令输出中看到这些内容。示例如下所示:

{"EventType":"PERSISTED","FragmentTimecode":1711124585823,"FragmentNumber":"12345678901234567890123456789012345678901234567"}

如果确认EventTypePERSISTED,则表示 Kinesis Video Streams 已对这块媒体进行了持久存储和加密,以供检索、分析和长期存储。

有关致谢的更多信息,请参阅PutMedia