前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NVIDIA Jetson结合AWS视频流播放服务

NVIDIA Jetson结合AWS视频流播放服务

作者头像
GPUS Lady
发布2021-01-06 15:23:02
2.4K0
发布2021-01-06 15:23:02
举报
文章被收录于专栏:GPUS开发者GPUS开发者

手机、监控摄像机、无人机、网络摄像头、行车记录仪甚至卫星都可以产生高强度、高质量的视频流。它们将在洪水和其他自然灾害之后调查财产、提高公共安全,让您知道您的孩子安然无恙、收集有助于识别和解决交通问题的数据等。至少可以说,处理大量的视频数据是具有挑战性的。流包含宝贵的实时数据,以在更合适的时间处理。在您获得原始数据后,其他的挑战就会出现,比如提取价值 – 深入探究内容、了解内容的含义并加快行动——这是下一个重要步骤。

今天,我们介绍Amazon Kinesis Video Streams,它是亚马逊实时流式传输服务的 Amazon Kinesis 系列的最新成员。这个服务的目的是让用户可以从数百万台摄像机设备中提取流视频 (或其他时间编码的数据),而不必设置或运行自己的基础设施。Kinesis Video Streams 接受您的传入流、以加密形式持久存储这些流、创建基于时间的索引并支持创建可视应用程序。

高端的食材往往只需要最朴素的烹饪方式。在本文,我们将教会大家如何将NVIDIA Jetson边缘设备结合Amazon Kinesis Video Streams服务。

项目类型:AI-IOT

项目内容:将NVIDIA Jetson 设备摄像头内容,分派至AWS的Kinesis Video Streams服务

项目设备:联宝Jetson Xavier NX嵌入式工业系统 EA-B310 ( 联宝推出Jetson Xavier NX嵌入式系统:看见中国制造的优势)

摄 像 头:1 * USB2接口支持MJPEG格式 + 1 * USB2接口不支持MJPEG格式

执行步骤:

1. 在联宝EA-B310上安装AWS开源的kinesis-video-streams-parser-library

2. 在AWS上开启Kinesis Video Streams服务通道

(1) 建立AWS账号

(2) 进入AWS控制台

(3) 创建IAM账号,生成访问密钥(access key)与私有访问密钥(secret key)

(4) 建立Kinesis Video Streams视频流通道

3. 在联宝EA-B310启动视频流发送机制

4. 在AWS上的Kinesis Video Streams服务通道播放接收的视频

以下说明执行步骤:

1. 在联宝EA-B310上安装AWS开源的kinesis-video-streams-parser-library

# 安装依赖库

$ sudo apt install -y 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

$ cd ~ && git clone github.com/awslabs/amaz

$ cd amazon-kinesis-video-streams-producer-sdk-cpp && mkdir build

$ cd build && cmake -DBUILD_GSTREAMER_PLUGIN=ON ..

(大约1分钟)

make -j(nproc)

(编译过程需要下载其他开源代码进行编译,大约30分钟)

(如果没有AWS账号者,可以趁这个时间先到步骤2去开启账号)

2. 在AWS上开启Kinesis Video Streams服务通道

(1) 如果没有AWS账号者,访问下面链接去申请一个

aws.amazon.com/cn/premi

(2) 进入AWS控制台 aws.amazon.com/cn/conso 点击“再次登录

(3) 接下来创建一个IAM密钥管理账号,同样在搜索栏内输入”IAM“即可

进去后,点选”用户“ => ”添加用户“。这个IAM用户通常只做临时用途或者个别应用的密钥使用,随时新增或删除都没关系,可以放轻松处理。

① 添加用户之后,进入以下页面,在右上方显示有5个步骤需要执行。

输入用户名(本处为”key1“),访问类型只要勾选”编程访问“即可,然后点选”下一步:权限

② 设置访问组权限,套用已有的就可以,所以选择”直接附加现有策略“,然后在搜索框内填入”kinesesVideo“,最后在可选项种勾选”AmazonKinesis- VideoStreamsFullAccess“,然后点选”下一步:标签“

③ 标签部分可不做任何处理,直接点选”下一步:审核“

④ 这里显示创建IAM用户的相关信息,检查完没问题就点”下一步:创建用户“

⑤ 这个步骤要非常小心,这里生成”访问密钥(access key)“与”私有访问密钥(secret key)“都是本项目需要用到的参数。访问密钥会显示在页面上,但私有访问密钥则需要手动点选”显示“之后才会显示。这里只有一次机会,有两种方式可以选择:

1) 下载.csv

2) 必须按下”显示“,然后将私有访问密码内容复制粘贴记录下来

一旦关闭之后就找不到私有访问密钥,不过没关系,再生成一个是很简单。

⑥ 执行完成后回到IAM用户管理界面,会看到刚刚建立的用户,点击进去

⑦ 进入”安全证书“标签,会看到下方列出访问密钥的编号,但不会显示”私有访问密钥“的内容,如果忘记了,可以在这里将原本的删除,然后重新”创建访问密钥“即可。

(4) 创建Kinesis Video Streams

① 在上方搜索栏内填入”kineis“就会出现以下画面,点击第二个”Kinesis Video Streams“,

② 进入Kinesis Video Streams 管理界面后,选择”创建视频流“。

③ 注意:进入控制台后,可以在右上角”用户名“旁边选项选择区域(这里是”东京“),可以自行选择。地区后面的编号(例如”亚太地区(东京)“旁边的”ap-northeast-1“)在本项目种会使用到,请先行记录下来。

④ 点选”创建信息流“之后,会进入下面页面,在箭头内输入视频名称即可,然后到本页面最下方点击”创建视频流“即可。这个名称(本范例为”lcfc-nx“)在后面Jetson NX上执行指令时会用到,请先记录下。

⑤ 进入以下页面,等待边缘端发送数据

3. 在联宝EA-B310启动视频流发送机制

(1) 检查amazon-kinesis-video-streams-producer-sdk-cpp是否编译完成?

$ cd ~/amazon-kinesis-video-streams-producer-sdk-cpp/build

$ ls -l libgstkvssink.so

看看这个文件是否存在?如果不存在则必须回去第1步骤重新执行。

如果存在,则继续往下进行。

(2) 设定GStreamer环境变量,最好写入 ~/.bashrc 文件内,便于长期使用

echo “export GST_PLUGIN_PATH= GST_PLUGIN_PATH: ~/amazon-kinesis-video-streams-producer-sdk-cpp/build” >> ~/.bashrc

$ source ~/.bashrc

(3) 检查kvssink插件是否生效?

$ gst-inspect-1.0 kvssink

如果出现如以下截屏的内容,表示插件安装成功,就能执行为AWS的Kinesis Video Streamer服务推送视频流。

(4) 为了提高作业的弹性,我们将几个参数先行定义:

$ export KVSNODE="lcfc-nx" #Kinesis Video Streamer创建的服务名

$ export ACCESS_KEY="xxxxxxxxxxxxxxxx" #在IAM里创建的访问密钥

$ export SECRET_KEY="yyyyyyyyyyyyyyyy" #在IAM里创建的私有访问密钥

$ export SITE="ap-northeast-1" #所选择的区域

(5) 由于USB2摄像头主要分为”支持“与”不支持“MJPG视频格式的种类,处理的参数有所不同。请使用以下指令确认摄像头对MJPG格式的支持与否

$ v4l2-ctl -d N --list-formats-ext # N为USB摄像头的ID编号,如0,1,2

本例中安装两个USB2摄像头,检查 /dev/video0 摄像头请执行

$ v4l2-ctl -d 0 --list-formats-ext

显示以下信息(部分),表示支持MJPG

检查 /dev/video1 摄像头请执行

$ v4l2-ctl -d 1 --list-formats-ext

显示以下信息(部分),表示不支持MJPG

(6) 两种摄像头所执行的 gstreamer 导管的内容就不一样

① 支持MJPG格式摄像头

$ gst-launch-1.0 -e v4l2src device=/dev/video0 ! \

image/jpeg,width=640,height=480,framerate=30/1 ! nvv4l2decoder mjpeg=1 ! \

'video/x-raw(memory:NVMM)' ! nvv4l2h264enc ! h264parse ! \

video/x-h264, stream-format=avc, alignment=au, profile=baseline ! \

kvssink stream-name=$KVSNODE storage-size=512 ! \

access-key=ACCESS_KEY secret-key=SECRET_KEY aws-region=

② 不支持MJPG格式摄像头,不能直接使用 H.264编码,必须进行转换

$ gst-launch-1.0 v4l2src device=/dev/video1 ! \

videoconvert ! x264enc bframes=0 key-int-max=45 bitrate=512 ! h264parse ! \

video/x-h264, stream-format=avc, alignment=au, \

width=640,height=480,framerate=30/1, profile=baseline ! \

kvssink stream-name=$KVSNODE storage-size=512 \

access-key=ACCESS_KEY secret-key=SECRET_KEY aws-region=

4. 在AWS上的Kinesis Video Streams服务通道播放接收的视频

(1) 回到Kinesis Video Streams 所开启的服务(这里时 lcfc-nx),点选下方“媒体播放”就会打开一个播放窗口

(2) 下面是使用不同格式USB摄像头的执行状况,右边是在联宝EA-B310设备上不断传送视频流的过程. 也就是先前创建的Kinesis Video Steams屏幕显示从Jetson Xavier NX传递的视频

① 支持MJPG格式摄像头(视频文件为 NX_AWS_MJPG_Camera.mp4)

② 不支持MJPG格式摄像头(视频文件为 NX_AWS_NoMJPG_Camera.mp4)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GPUS开发者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档