当前位置:   article > 正文

Hobbit玩转Zynq MPSoC系列之2:TPG输入+VCU编码+rtp网络传输_mpsoc gstreamer

mpsoc gstreamer

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

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/644223
推荐阅读
相关标签
  

闽ICP备14008679号