如何用Jetson nano拍摄的视频交付到Amazon 云上

naka-kazz
310 0 2020-12-28

准备什么

①平板电脑

这是Jetson nano的主角。Jetson nano宣布了便宜的2GB模型,但是这次我们将使用传统的4G模型。

②摄像头模块

这次,我将使用可拍摄高达180度的相机。通过USB连接,它还支持高达4K @ 30fps(MJPG)的视频录制。

③AWS账户

这次,我们将在AWS上使用Kinesis Video Stream:

您所需要做的就是以上三点。

交付到Amazon Kinesis视频流

为了将使用Jetson nano拍摄的视频分发到Amazon Kinesis Video Streams,必须同时设置作为分发方的Jetson nano和作为接收方的AWS。

Jetson nano(交付侧)设置

视频发行人Jetson nano使用GStreamer插件kvssink元素将视频传递到kinesis Video Stream。

下载kinesis-video-streams-parser-library

首先,下载amazon-kinesis-video-streams-parser-library其中包含kvssink的源代码

$mkdir kvssink
$cd kvssink
$git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp
$

②安装必要的库

然后安装所需的库。就我而言,一切最初都包含在内。

$sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-base-apps
$sudo apt-get install gstreamer1.0-plugins-bad gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-tools
$

③cmake

然后cmake。关键是要添加GStreamer插件的选项“ -DBUILD_GSTREAMER_PLUGIN = ON”。cmake大约需要30分钟,因此请耐心等待

另外,以前的版本中似乎有一个安装脚本,但最新版本似乎已更改为cmake。该信息甚至都没有出现在亚马逊的官方页面上,因此我将在这里进行总结。

$cd amazon-kinesis-video-streams-producer-sdk-cpp
$mkdir build
$cd build
$cmake -DBUILD_GSTREAMER_PLUGIN=ON ..
・・・省略・・・
$

Make

cmake完成后进行构建。这将在大约1分钟内完成。

$make -j3

⑤检查库

完成制作后,让我们检查完整的GStreamer库文件。如下所示创建“ libgstkvssink.so”就可以了。

$ls -l
・・・省略・・・
-rwxrwxr-x  1 test test 535056 10月 24 11:28 libgstkvssink.so

⑥插件路径设置

设置插件路径“ $ GST_PLUGIN_PATH”,以便可以从GStreamer使用创建的插件。

$export GST_PLUGIN_PATH=$GST_PLUGIN_PATH:`pwd`
$ echo $GST_PLUGIN_PATH
:/home/test/kvssinkazon-kinesis-video-streams-producer-sdk-cppild

⑦检查插件的操作

现在让我们看看GStreamer是否提供了kvssink插件。可以使用gst-inspect命令检查kvssink信息,如下所示。



这样就完成了Jetson nano(交付侧)设置。

Amazon Kinesis Video Streams(接收器)设置

在这里,配置接收Amazon Kinesis视频流。

①登录到AWS管理控制台

首先,让我们登录到AWS管理控制台

②选择Kinesis Video Streams服务

选择屏幕左上方的“服务”,然后从服务列表中选择“ Kinesis Video Streams”。

③创建视频流

单击屏幕上的“创建视频流”按钮。如果出现区域选择屏幕,请选择所需的区域。

④输入视频流名称

输入您要创建的视频流的名称,然后单击创建视频流按钮。稍后将在命令行中使用此流名称,因此最好用英语输入它。

⑤确认视频流创建

如果如下所示显示视频流管理屏幕,则可以。

⑥添加IAM用户

接下来,添加一个想要使用Kinesis Video Streams的IAM用户。从服务列表中选择“ IAM”。

⑦添加用户

从左侧菜单中选择“用户”,然后在屏幕上单击“添加用户”按钮。

⑧输入用户名

显示“添加用户”屏幕时,输入用户名,选中“程序访问”,然后单击屏幕右下方的“下一步:访问权限”按钮。

⑨访问权限设置

然后将此用户设置为Kinesis Video Stream访问。

单击屏幕上的“直接附加现有策略”。接下来,在策略搜索字段中输入“ KinessVideo”进行搜索,然后检查显示的“ AmazonKinesisVideoSreamsFullAcess”策略。最后,点击“下一步:标记”按钮。

⑩添加标签

无需在“添加标签”屏幕上进行任何设置,因此请单击屏幕右下角的“下一步:确认”按钮。

11.确认其他用户

将显示一个确认屏幕,检查用户名和访问权限,然后单击“创建用户”按钮。

12.确认键

创建用户时,将发布访问密钥ID和秘密访问密钥,因此请在文本编辑器中记下它们。稍后,您将使用此键从Jetson nano传输视频。

12.确认其他用户

如果按“关闭”按钮,则可以看到已添加新用户。

这样就完成了Kinesis Video Streams(接收器)设置。

执行视频分发

现在是时候将视频从Jetson nano传输到Kinesis Video Streams。

①执行视频分发

从Jetson nano输入以下命令以开始视频分发。将流名称替换为上面创建的Kinesis Video Streams视频流名称,并将访问密钥和秘密密钥替换为上述IAM用户密钥。



GStreamer管道的要点是,从摄像机获取的MJPG格式视频曾经使用nvv4l2decode解码,然后再次使用nvv4l2h264enc编码为h264,并传递给kvssink。此过程使用Jetson nano的硬件编码器/解码器,因此可以高速处理。

②确认视频分配

在Jetson nano上执行命令后,显示先前创建的Kinesis Video Steams屏幕,然后单击“▶︎Media Playback”。

然后,将显示从Jetson nano传递的视频,如下所示!

就这样。谢谢你的辛劳工作。