赞
踩
Xilinx官方提供了TPG、MIPI、SDI、HDMI和FILE等接口作为图像的输入源,在工程中例化为V4L2架构设备,供上层软件调用。TPG全称为Test Pattern Generator,为FPGA逻辑产生的一个模拟图像源,可提供一系列不同模式的模拟图像,对于初学者而言是学习V4L2架构、Gstreamer命令以及调试流程最合适的开端。VCU编码并通过rtp网络传输是很多工程应用的基本需求,本文将演示如何将TPG图像编码并通过网络传输。
平台、配件及软件
ZCU104
Vivado2020.1
Petalinux2020.1
micro usb数据线
网线
Vivado工程
整个工程的block desigh如下:
VCU的配置和之前一样,使能Encoder和Decoder,并按照下图进行配置。
TPG和Frame Write配置如下:
VCU的HP口选择和之前一致,也是接到HP2和HP3,TPG的Frame Write单独接到HP1口。
Petalinux工程
按照官方ug1144的命令新建工程、配置工程、编译工程、生成BOOT.BIN。
petalinux-create --type project --template --name <PROJECT_NAME>
petalinux-config --get-hw-description /–get-hw-description=<PATH-TO_XSA Directory>
xliinx工具已经为VCU、TPG生成好了完美的devicetree,不用自己去修改。
在rootfs下打开gstreamer插件和v4l2插件。
petalinux-build
petalinux-package --boot --format BIN --fsbl --u-boot -o PATH-TO-OUTPUT-WITH-FILE-NAME
工程演示
将生成的BOOT.BIN和image.ub复制到SD卡,插入SD卡,上电启动,TPG会例化为V4l2的设备挂载到/dev/video0,执行如下命令:
设置ZCU104板子的IP为192.168.1.101
root@blog:/mnt# ifconfig eth0 192.168.1.101
将video0的视频编码通过rtp协议发送到网络
root@blog:/mnt# gst-launch-1.0 v4l2src device=/dev/video0 ! “video/x-raw, width=1920, height=1080” ! omxh264enc target-bitrate=20000 ! h264parse config-interval=-1 ! mpegtsmux ! rtpmp2tpay ! udpsink host=192.168.1.99 port=9001 sync=true
板子上打印信息如下:
root@blog:/mnt# ifconfig eth0 192.168.1.101
root@blog:/mnt# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0A:35:00:22:01
inet addr:192.168.1.101 Bcast:0.0.0.0 Mask:255.255.255.0
inet6 addr: fe80::20a:35ff:fe00:2201/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1933 errors:0 dropped:2 overruns:0 frame:0
TX packets:119657 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1088389 (1.0 MiB) TX bytes:163819758 (156.2 MiB)
Interrupt:30
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
root@blog:/mnt# gst-launch-1.0 v4l2src device=/dev/video0 ! “video/x-raw, width=1920, height=1080” ! omxh264enc target-bitrate=20000 ! h264parse config-interval=-1 ! mpegtsmux ! rtpmp2tpay ! udpsink host=192.168.1.99 port=9001 sync=true
Setting pipeline to PAUSED …
Pipeline is live and does not need PREROLL …
Setting pipeline to PLAYING …
New clock: GstSystemClock
Redistribute latency…
[ 1105.839444] xilinx-vtc a0010000.v_tc: Failed to set clk rate: 74250000, actual rate: 75000000
!! Warning : Adapting profile to support bitdepth and chroma mode
!! The specified Level is too low and will be adjusted !!
设置PC的IP地址为192.168.1.99,然后打开vlc软件,媒体->打开网络串流->网络->rtp://@:9001->播放。最终显示效果如下:
代码及源文件
交流和合作请发邮件至humph-hobbit@foxmail.com
————————————————
版权声明:本文为CSDN博主「Humph-Hobbit」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhangyanhui2008/article/details/109960311
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。