基于AM57x+Artix-7开发板)——GStreamer视频开发案例(1)
#申请原创# #每日话题# #有奖活动# #技术资源# #申请开发板# 前 言本文主要介绍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.xe66Target# ln -s /lib/firmware/dra7-dsp1-fw.xe66.opencl-monitor /lib/firmware/dra7-dsp1-fw.xe66Target# rm dra7-ipu2-fw.xem4Target# ln -s /lib/firmware/dra7-ipu2-fw.xem4.ipumm-fw dra7-ipu2-fw.xem4Target# sync && reboot
图 4
图 5
本文档使用HDMI显示屏进行演示。系统默认使用LCD显示屏作为优先显示设备。可在U-Boot命令行执行如下命令更改HDMI显示屏为默认显示设备。U-Boot# setenv optargs omapdrm.displays=1,0U-Boot# saveenvU-Boot# reset
图 6
如需恢复LCD显示屏为默认显示设备,请在U-Boot命令行执行如下命令。U-Boot# setenv optargs omapdrm.displays=0,1U-Boot# saveenvU-Boot# reset
图 7
由于部分案例需使用Ubuntu作为接收端进行视频解码和显示,在这过程中使用到h264parse、avdec_h264组件,请执行如下命令进行安装。Host# sudo apt-get install gstreamer1.0-plugins-bad //安装h264parseHost# 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 //安装h264parseHost# 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功能模式
页:
[1]