打印
[ARM入门]

基于AM57x+Artix-7开发板)——GStreamer视频开发案例(1)

[复制链接]
3226|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
#申请原创# #每日话题# #有奖活动# #技术资源# #申请开发板# 前 言
本文主要介绍AM570x基于GStreamer的视频采集、编解码、算法处理、显示以及存储案例。

本次案例测试板卡为创龙科技TL5728F-EVM开发板,它是一款基于TI Sitara系列AM5728(双核ARM Cortex-A15 +浮点双核DSP C66x) + Xilinx Artix-7 FPGA处理器设计的高端异构多核评估板。

案例使用到的ARM端为Cortex-A15核心,DSP端为C66x核心。开发案例位于产品资料“4-软件资料\Demo\tl-video-demos\”目录下,分别为tl-gst-v4l2-vpe-iva-udp、tl-gst-mjpeg-dec-edge、tl-gst-rtsp-dec-edge。开发案例中的bin目录存放可执行程序,src目录存放源码。案例适用的模块如下表:

表 1
案例名称
适用模块
gst-v4l2-vpe-iva-udp
中惠ZH5640-MIC-001(USB CMOS摄像头)
tl-gst-mjpeg-dec-edge
中惠ZH5640-MIC-001(USB CMOS摄像头)
tl-gst-rtsp-dec-edge
海康威视DS-IPC-B12HV2-IA(网络摄像头)

TI AM57x GStreamer视频编解码框架与视频编解码能力如下图所示。


图 1


图 2

评估板默认已支持GStreamer库,可执行如下命令查看GStreamer库使用说明。
Target# gst-inspect-1.0 -h


图 3

由于案例需调用DSP核心进行图像编解码处理,并调用IPU2核心用于DCE图像处理框架,因此测试前需注意DSP1与IPU2固件的软链接是否有更改。如曾执行其他程序(例如IPC案例),可能会改变固件的软链接,导致本文的视频开发案例程序无法正常运行。可执行如下命令重新建立软链接:
Target# cd /lib/firmware/
Target# rm dra7-dsp1-fw.xe66
Target# ln -s /lib/firmware/dra7-dsp1-fw.xe66.opencl-monitor /lib/firmware/dra7-dsp1-fw.xe66
Target# rm dra7-ipu2-fw.xem4
Target# ln -s /lib/firmware/dra7-ipu2-fw.xem4.ipumm-fw dra7-ipu2-fw.xem4
Target# sync && reboot


图 4


图 5

本文档使用HDMI显示屏进行演示。系统默认使用LCD显示屏作为优先显示设备。可在U-Boot命令行执行如下命令更改HDMI显示屏为默认显示设备。
U-Boot# setenv optargs omapdrm.displays=1,0
U-Boot# saveenv
U-Boot# reset


图 6

如需恢复LCD显示屏为默认显示设备,请在U-Boot命令行执行如下命令。
U-Boot# setenv optargs omapdrm.displays=0,1
U-Boot# saveenv
U-Boot# reset


图 7

由于部分案例需使用Ubuntu作为接收端进行视频解码和显示,在这过程中使用到h264parse、avdec_h264组件,请执行如下命令进行安装。
Host# sudo apt-get install gstreamer1.0-plugins-bad //安装h264parse
Host# sudo apt-get install gstreamer1.0-libav //安装avdec_h264


图 8

如不安装h264parse、avdec_h264组件,可能在部分案例测试过程中将会提示如下类似错误信息


图 9

开发参考链接:
AM57x GStreamer开发参考资料:
https://developer.ridgerun.com/wiki/index.php?title=Gstreamer_pipelines_for_AM572x。
AM57x多媒体与图形开发参考资料:
https://training.ti.com/sites/default/files/docs/AM57x_Multimedia_Graphics_Slides.pdf。
GStreamer开发文档首页:
https://gstreamer.freedesktop.org/documentation/index.html?gi-language=c。
GStreamer Core Library:
https://gstreamer.freedesktop.org/documentation/gstreamer/gi-index.html?gi-language=c。
GStreamer Application Development Manual:
https://gstreamer.freedesktop.org/documentation/application-development/?gi-language=c。

tl-gst-v4l2-vpe-iva-udp案例

案例说明

本案例使用GStreamer API创建Pipeline,并使用v4l2src、vpe(视频处理引擎)、ducatih264enc(H.264编码器)、tee、udpsink、kmssink(基于KMS/DRM的视频接收器)、filesink等插件链接到Pipeline,实现ARM核从V4L2视频设备节点获取YUV视频流、视频显示、调用IVA-HD进行H.264视频硬件编码、视频保存、通过UDP网络传输视频等功能。
本案例支持display、save、dis-save和udp四种功能模式,具体说明如下。

表 2
功能模式
说明
display
视频采集、显示
save
视频采集后,进行H.264编码并保存
dis-save
视频采集、显示后,进行H.264编码并保存
udp
视频采集后,进行H.264编码并通过UDP网络传输到接收端进行解码与显示

案例测试

评估板断电,将OV5640 USB摄像头接到评估板USB1 HOST接口,并将LCD或HDMI显示屏接到评估板对应接口,硬件连接如下图所示。

图 10

进入评估板文件系统,执行如下命令查看摄像头设备节点,本次测试的设备节点为video1。
Target# ls -l /sys/class/video4linux/video*


图 11

请将该案例bin目录下的tl-v4l2-capture、tl-gst-v4l2-vpe-iva-udp文件拷贝到评估板文件系统中。在tl-v4l2-capture文件所在目录下执行如下命令查询摄像头的分辨率、帧率、图像格式等参数。
Target# ./tl-v4l2-capture -m list -d /dev/video1 -t usb


图 12

在tl-gst-v4l2-vpe-iva-udp文件所在目录下,执行如下命令查询tl-gst-v4l2-vpe-iva-udp程序参数说明,具体如下表。
Target# ./tl-gst-v4l2-vpe-iva-udp -h


图 13

表 3
参数
解析
-m display
display功能模式
-m save
save功能模式
-m dis-save
dis-save功能模式
-m udp
udp功能模式
-d
视频设备节点
-i
输入视频分辨率
-o
输出显示分辨率
-a
用于udp功能模式下的目标IP地址与端口设置
-f
用于save功能模式下的文件保存路径设置

display功能模式测试

执行如下命令采集视频流,并在显示屏中显示。可按“Ctrl + C”终止程序运行。
Target# /etc/init.d/matrix-gui-2.0 stop //关闭Matrix界面
Target# /etc/init.d/weston stop //关闭Weston窗口系统
Target# ./tl-gst-v4l2-vpe-iva-udp -m display -d /dev/video1 -i 1920*1080 -o 1920*1080


图 14


图 15

save功能模式测试

执行如下命令采集视频流,并将ducatih264enc插件编码生成的H.264视频流保存在当前目录下。
Target# ./tl-gst-v4l2-vpe-iva-udp -m save -d /dev/video1 -i 1920*1080 -o 1920*1080 -f test.264


图 16

由于ducatih264enc插件编码生成的H.264视频流只包含图像数据,但不包含时间戳,因此不能使用常用的视频播放器进行播放。可通过第三方工具FFmpeg将其转码为MP4格式,再使用常用视频播放器进行播放。具体方法请参考本文档H.264视频流MP4格式转码方法章节。

dis-save功能模式测试

执行如下命令采集视频流并在显示屏中显示,同时将ducatih264enc插件编码生成的H.264视频流保存在当前目录下。
Target# /etc/init.d/matrix-gui-2.0 stop //关闭Matrix界面
Target# /etc/init.d/weston stop //关闭Weston窗口系统
Target# ./tl-gst-v4l2-vpe-iva-udp -m dis-save -d /dev/video1 -i 1920*1080 -o 1920*1080 -f test.264



图 17


图 18

udp功能模式测试

使用udp功能模式时,测试方法有如下三种。

表 4
测试设备
发送端
接收端
硬件连接
一块评估板
评估板A
评估板A
使用网线将评估板网口RGMII0 ETH连接到路由器,进行本地网络回环测试
两块评估板
评估板A
评估板B
使用网线将两块评估板网口RGMII0 ETH连接到同一个路由器
评估板 + 上位机(Ubuntu)
评估板A
上位机(Ubuntu)
使用网线将评估板网口RGMII0 ETH、上位机网口连接到同一个路由器

发送端

请在发送端执行如下命令采集视频,同时进行H.264编码并通过UDP网络将视频流传输到接收端。192.168.0.99为接收端IP地址,8080为端口号,请根据实际情况修改。
Target# ./tl-gst-v4l2-vpe-iva-udp -m udp -d /dev/video1 -i 1920*1080 -o 1920*1080 -a 192.168.0.99:8080



图 19

  • 接收端
使用一块评估板或两块评估板方式时,请在接收端执行如下命令通过UDP网络接收视频流,同时进行解码与显示。显示分辨率可根据实际情况修改,注意端口号需与发送端保持一致。

使用一块评估板方式时,需先运行接收进程,再运行发送进程。可在命令后添加&符号使进程在后台运行,或通过OpenSSH等方式启用第二个命令行终端运行进程。
Target# /etc/init.d/matrix-gui-2.0 stop //关闭Matrix界面
Target# /etc/init.d/weston stop //关闭Weston窗口系统
Target# gst-launch-1.0 -v udpsrc port=8080 ! 'application/x-rtp,media=(string)video,payload=(int)96' ! rtph264depay ! h264parse ! ducatih264dec ! vpe ! 'video/x-raw,format=(string)NV12, width=1920,height=1080,framerate=30/1' ! kmssink sync=false


图 20


图 21

使用评估板 + 上位机(Ubuntu)方式时,请在接收端执行如下命令通过UDP网络接收视频流,同时进行解码与显示。注意端口号需与发送端保持一致。

Host# gst-launch-1.0 -v udpsrc port=8080 ! 'application/x-rtp,media=(string)video,payload=(int)96' ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! ximagesink sync=false


图 22


图 23

若上位机提示未安装h264parse、avdec_h264组件,可执行如下命令。
Host# sudo apt-get install gstreamer1.0-plugins-bad //安装h264parse
Host# sudo apt-get install gstreamer1.0-libav //安装avdec_h264


图 24


图 25

时延测试

时延测试方法:使用评估板的外接摄像头采集PC机显示屏的在线秒表图像,经过AM570x处理后再将图像进行显示。PC机显示画面与评估板显示画面的时间差,即为时延。进行多次测试,时延结果取其平均值。

表 5 display功能模式测试结果
序号
评估板显示画面
PC机显示画面
时延(ms)
0
03:12:00.629
03:12:00.844
215
1
03:12:02.823
03:12:03.038
215
2
03:12:05.404
03:12:05.706
302
3
03:12:07.984
03:12:08.113
129
4
03:12:10.177
03:12:10.392
215
5
03:12:12.628
03:12:12.759
131
平均值
/
/
201

表 6 dis-save功能模式测试结果
序号
评估板显示界面
PC机显示界面
时延(ms)
0
03:38:27.487
03:28:27.745
258
1
03:38:29.632
03:38:29.939
307
2
03:38:32.089
03:38:32.347
258
3
03:38:37.421
03:38:37.636
215
4
03:38:40:001
03:38:40.173
172
5
03:38:44:602
03:38:44:735
133
平均值
/
/
224

表 7 udp功能模式测试结果(接收端:评估板)
序号
评估板显示界面
PC机显示界面
时延(ms)
0
00:20:52.163
00:20:52.765
602
1
00:20:54.579
00:20:55.087
508
2
00:20:57.832
00:20:58.441
609
3
00:20:59.904
00:21:00.505
601
4
00:21:01:924
00:21:02.526
602
5
00:21:03:774
00:21:04:419
645
平均值
/
/
595

表 8 udp功能模式测试结果(接收端:上位机)
序号
评估板显示界面
PC机显示界面
时延(ms)
0
00:12:33.655
00:12:34.300
645
1
00:12:38.819
00:12:39.503
684
2
00:12:41.052
00:12:41.569
517
3
00:12:42.953
00:12:43.592
639
4
00:12:44:707
00:12:45.395
688
5
00:12:47:115
00:12:47:760
646
平均值
/
/
637

案例解析

GStreamer管道示意图


图 26 display功能模式


图 27 save功能模式


图 28 dis-save功能模式



图 29 udp功能模式




使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

312

主题

320

帖子

4

粉丝