完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 Tronlong创龙科技 于 2022-5-30 15:03 编辑
前 言本文主要介绍AM570x基于GStreamer的***采集、编解码、算法处理、显示以及存储案例。 本次案例测试板卡为创龙科技TL5728F-EVM开发板,它是一款基于ti Sitara系列AM5728(双核ARM Cortex-A15 +浮点双核DSP C66x) + Xilinx Artix-7 FPGA处理器设计的高端异构多核评估板。 表 1
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
案例测试 评估板断电,将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
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 执行如下命令采集***流,并将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格式转码方法章节。 执行如下命令采集***流并在显示屏中显示,同时将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功能模式时,测试方法有如下三种。
发送端 请在发送端执行如下命令采集***,同时进行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
使用一块评估板方式时,需先运行接收进程,再运行发送进程。可在命令后添加&符号使进程在后台运行,或通过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功能模式测试结果
表 6 dis-save功能模式测试结果
表 7 udp功能模式测试结果(接收端:评估板)
表 8 udp功能模式测试结果(接收端:上位机)
案例解析 GStreamer管道示意图 图 26 display功能模式 图 27 save功能模式 图 28 dis-save功能模式 图 29 udp功能模式 |
|||
相关推荐
|
|||
飞凌嵌入式-ELFBOARD 硬件知识分享-ELF 2电源电路讲解
361 浏览 0 评论
1378 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-mfgtools烧录流程介绍之烧写所需镜像
1312 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-mfgtools烧录流程之烧写方法
743 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-内核编译之初次编译
1139 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 03:10 , Processed in 0.740120 second(s), Total 69, Slave 50 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号