本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
向 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 中。您无需将任何内容下载到您的计算机上。
-
在 AWS Management Console,打开AWS Cloud9。
选择 “创建环境”。
-
在创建环境屏幕上,完成以下操作:
您可以将其他字段保留为默认选项。
-
创建环境后,在 Cloud9 IDE 列中选择打开。
在屏幕的中间下方区域,你会看到Admin:~/environment $
。这是 AWS Cloud9
(亚马逊EC2)终端。
如果您不小心关闭了终端,请选择 “窗口”,“新建终端”。
在终端中运行以下命令将音量更改为 20 GiB。
-
下载 脚本。
wget https://awsj-iot-handson.s3-ap-northeast-1.amazonaws.com/kvs-workshop/resize_volume.sh
-
授予脚本执行权限。
chmod +x resize_volume.sh
-
运行 脚本。
./resize_volume.sh
-
获取有关您可以通过高级打包工具(APT)安装或更新的所有软件的最新信息。
此命令不会更新软件本身,但可以确保您的系统知道最新的可用版本。
sudo apt-get update
-
安装 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
-
使用 git 克隆 C++ 制作器SDK。
git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp.git
-
准备一个构建目录。
cd amazon-kinesis-video-streams-producer-sdk-cpp
mkdir build
cd build
-
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
-
使用 make 来编译SDK和示例应用程序,以及生成最终的可执行文件。
make
预期输出的结尾如下所示:
[100%] Linking CXX executable kvs_gstreamer_file_uploader_sample
[100%] Built target kvs_gstreamer_file_uploader_sample
-
确认示例文件已构建。列出当前目录中的文件:
ls
确认是否存在以下文件:
-
kvs_gstreamer_sample
-
libgstkvssink.so
-
(可选)您可以在 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
视频规格:
使用您之前创建的直播的名称运行以下命令。如果您尚未创建直播,请参阅创建 Amazon Kinesis 视频流。
./kvs_gstreamer_sample YourStreamName
./sample.mp4
- Sample video from GStreamer
-
使用以下命令使用生成视频GStreamer。
告诉GStreamer在哪里可以找到kvssink
GStreamer插件。在您的生成目录中,指定包含该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。
查看确认对象
在上传过程中,Kinesis Video Streams 会将确认对象发送回执行上传的客户端。您应该在命令输出中看到这些内容。示例如下所示:
{"EventType":"PERSISTED","FragmentTimecode":1711124585823
,"FragmentNumber":"12345678901234567890123456789012345678901234567
"}
如果确认EventType
是PERSISTED
,则表示 Kinesis Video Streams 已对这块媒体进行了持久存储和加密,以供检索、分析和长期存储。
有关致谢的更多信息,请参阅PutMedia。