一、前言

ZU7EV系列MPSoC集成了硬件视频编解码IP VCU,可进行H264/H265视频编解码。Xilinx提供了VCU参考TRD,此外,还提供了一个VCU+DPU的参考设计:Zynq UltraScale MPSoC VCU TRD。该wiki提供了2个下载地址,其中带v1.0是较新的(https://www.xilinx.com/member/forms/download/eula-xef.html?filename=vcu_roi_2019.2_v1.0.zip)。

整体框图如下:PL接收来自HDMI_RX的原始输入(NV12),经resize和转BGR送给DPU,进行人脸检测?,得到人脸的ROI信息,送给VCU,VCU对原始输入结合ROI信息进行Enc,然后对编码数据进行Dec送显示或直接通过GEM送出。

二、Run

0)启动

解压下载的文件,把/vcu_roi_2019.2_v1.0/images/vcu_roi中的文件拷贝至SD卡,可以再拷个测试.mp4文件;ZCU106连接HDMI显示器(1080p@60)和HDMI输入(如笔记本的输出),连接网线、串口线到笔记本,SD卡启动ZCU106,串口显示系统启动。sd卡已经被mount到了/media/card/,运行DPU demo前需source /media/card/export.sh;

1)点亮屏幕

终端输入

modetest -D a0060000.v_mix -s 35:1920x1080-60@BG24 &

其中,1920x1080,60等参数需根据连接的显示器而定,屏幕由黑屏变成蓝色;

2)查看HDMI输入

xmedia-ctl -p -d /dev/media0

查看显示的“v_hdmi_rx_ss” ,大约在倒数2行处:
如果Conneced:[dv.detect:BT.656/1120
如果Unconnect:dv.query:no-link] -----> HDMI Rx Link Status

3)HDMI显示testsrc

gst-launch-1.0 videotestsrc ! kmssink bus-id="a0060000.v_mix"

将会显示一个gst-streamer生成的测试显示图案,可以加pattern=xx改变样式;

4)HDMI解码显示mp4文件

gst-launch-1.0 filesrc location="/media/card/drill.mp4" ! qtdemux ! h264parse ! omxh264dec ! kmssink bus-id="a0060000.v_mix"

gst-launch-1.0 uridecodebin uri="file:///media/card/drill.mp4" ! queue max-size-bytes=0 ! kmssink bus-id="a0060000.v_mix"

不知道是不是采用默认参数导致的编解码不匹配,显示帧顺序不太正常;

5)HDMI输入到输出(Passthrough)

gst-launch-1.0 v4l2src device=/dev/video0 io-mode=4 ! video/x-raw, width=1920, height=1080, format=NV12, framerate=30/1 ! queue ! kmssink bus-id="a0060000.v_mix"

gst-launch-1.0 v4l2src device=/dev/video0 io-mode=4 ! video/x-raw, width=1920, height=1080, format=NV12, framerate=30/1 ! xlnxroivideo1detect  capture-io-mode=4 output-io-mode=5 ! kmssink bus-id="a0060000.v_mix"

笔记本设置屏幕扩展,HDMI-TX显示HDMI-RX的数据,显示延时较小,20ms;
(后者使能了DPU,给出了ROI信息,但是没进编解码?)

6)HDMI输入到输出(关闭ROI)(RX->ENC->DEC->TX)

vcu_gst_app /media/card/config/1080p30/Display/Single_1080p30_AVC_5Mbps.cfg

使用默认的cfg文件,但是把ROI改成FALSE,延时500ms左右,或

 gst-launch-1.0 v4l2src device=/dev/video0 io-mode=4 ! video/x-raw, width=1920, height=1080, format=NV12, framerate=30/1 ! queue ! omxh264enc ! video/x-h264, profile=main, alignment=au ! omxh264dec ! kmssink bus-id="a0060000.v_mix"

其中3处264改为265可运行  ;

7)HDMI输入到输出(打开ROI)(RX->ROI->ENC->DEC->TX)

指令同上,把cfg文件的ROI改回TRUE,需export DPU_COMPILATIONMODE=1,或

gst-launch-1.0 v4l2src device=/dev/video0 io-mode=4 ! video/x-raw, width=1920, height=1080, format=NV12, framerate=30/1 ! xlnxroivideo1detect  capture-io-mode=4 output-io-mode=5 ! omxh265enc qp-mode=roi num-slices=8 prefetch-buffer=true gop-length=60 periodicity-idr=270 control-rate=low-latency target-bitrate=5000 gop-mode=low-delay-p cpb-size=200 initial-delay=100 filler-data=false min-qp=15 max-qp=40 b-frames=0 low-bandwidth=false ! video/x-h265, profile=main, alignment=au ! queue ! omxh265dec internal-entropy-buffers=5 low-latency=0 ! queue max-size-bytes=0 ! fpsdisplaysink text-overlay=false video-sink="kmssink bus-id="a0060000.v_mix""

延时接近500ms;265改264可运行;

8)HDMI输入到文件(RX->ROI->ENC->File.ts)

gst-launch-1.0 v4l2src device=/dev/video0 io-mode=4 ! video/x-raw, format=NV12,width=1920,height=1080,framerate=30/1 ! xlnxroivideo1detect  capture-io-mode=4 output-io-mode=5 ! omxh265enc qp-mode=roi num-slices=8 prefetch-buffer=true gop-length=60 periodicity-idr=270 control-rate=low-latency target-bitrate=5000 gop-mode=low-delay-p cpb-size=200 initial-delay=100 filler-data=false min-qp=15 max-qp=40 b-frames=0 low-bandwidth=false ! video/x-h265, profile=main, alignment=au ! queue ! video/x-h265, profile=main, alignment=au ! mpegtsmux alignment=7 name=mux ! filesink location="/media/card/test.ts"

通过PC查看ts属性:编解码器: MPEG-H Part2/HEVC (H.265) (hevc);
可通过

gst-launch-1.0 uridecodebin uri="file:///media/card/test.ts" ! queue max-size-bytes=0 ! kmssink bus-id="a0060000.v_mix"

播放;

9)Stream Out(RX->ROI->ENC->RTP->Host:VLC_Player解码显示)

Host端:
  1.打开VLC Player; 
  2.媒体-打开网络串流;
  3.输入:rtp://192.168.0.100:5004 (或rtp://@:5004)此处为Host的IP和侦听端口号;
  4.点播放;
ZCU106端:(ifconfig eth0 192.168.0.106)

vcu_gst_app /media/card/config/1080p30/Stream-out/Single_1080p30_AVC_5Mbps.cfg

需修改cfg文件的HOST IP和Port,修改为Host的(192.168.0.100和5004);或

gst-launch-1.0 v4l2src device=/dev/video0 io-mode=4 ! video/x-raw, format=NV12, width=1920, height=1080, framerate=30/1 ! xlnxroivideo1detect  capture-io-mode=4 output-io-mode=5 ! omxh265enc qp-mode=roi num-slices=8 prefetch-buffer=true gop-length=60 periodicity-idr=270 control-rate=low-latency target-bitrate=5000 gop-mode=low-delay-p cpb-size=200 initial-delay=100 filler-data=false min-qp=15 max-qp=40 b-frames=0 low-bandwidth=false ! video/x-h265, profile=main, alignment=au ! queue ! mpegtsmux alignment=7 name=mux ! rtpmp2tpay ! udpsink host=192.168.0.100 port=5004

(不卡)或

gst-launch-1.0 v4l2src device=/dev/video0 io-mode=4 ! video/x-raw, format=NV12, width=1920, height=1080, framerate=30/1 ! omxh265enc ! video/x-h265, profile=main, alignment=au ! queue ! mpegtsmux alignment=7 name=mux ! rtpmp2tpay ! udpsink host=192.168.0.100 port=5004

(卡)

10)Stream In(Host:VLC_Player->ENC->RTP->ZCU106:DEC->TX)

Host端:
  1.VLC-Player
  2.媒体-流-选择本地文件,
   --串流-UDP-添加:192.168.0.106,5008;激活转码(选不选都行);流。
ZCU106端:修改cfg文件
  Input Type        : stream
  Uri                     : udp://192.168.0.106:5008)(填的是zcu106的)
运行

vcu_gst_app /media/card/config/1080p30/Stream-in/input.cfg

可播放来自网络的RTP编码流;

Xilinx Zynq UltraScale+ MPSoC VCU ROI Demo跑相关推荐

  1. XILINX Zynq UltraScale+ MPSoC 在 4K 视频图像处理和会议系统的应用

    赛灵思 Zynq UltraScale+™ MPSoC EV 器件的 4K 视频处理功能.EV 器件具有继承的多标准视频编解码器,能够以 60帧/秒 的速度同步编码和解码. Arm 四核 Cortex ...

  2. Xilinx Zynq UltraScale+ MPSoC 介绍

    文章目录 简介 软件架构 petalinux工具 开发环境搭建 简介 MYC-CZU3EG 是深圳市米尔科技有限公司推出的一款以 Xilinx XCZU3EG 作为核心的嵌入式核心板. 采用了 Xil ...

  3. 基于xilinx Zynq UltraScale MPSoC平台的核心板及开发板介绍-米尔科技

    近日,米尔科技推出国内首款基于xilinx Zynq UltraScale+MPSoC 平台的核心板及开发板.其优势主要有:采用16纳米制程,相比Znyq7000系列每瓦性能提升5倍,且单芯片融合4核 ...

  4. Xilinx ZCU106开发详解(Xilinx Zynq UltraScale+ MPSoC)

    ZCU106开发详解之 Petalinux 2018.1安装创建Petalinux工程全记录 ZCU106开发详解之VIVADO开发环境的安装 ZCU106开发之PL侧闪灯 ZCU106开发之PS侧M ...

  5. Zynq UltraScale+ MPSoC EV系列VCU应用通路搭建

    ZCU106开发板VCU应用通路搭建 前言 编译换了台主机,果然快了很多,下面说一下VCU通路的搭建.其中最主要的是给VCU部分提供时钟,下面说一下 准备 1.petalinux 2.vivado 3 ...

  6. 嵌入式开发之zynqMp ---Zynq UltraScale+ MPSoC 图像编码板zcu102

    嵌入式开发之zynqMp -Zynq UltraScale+ MPSoC 图像编码板zcu102 1.1 xilinx zynqMp 架构 1.1.1 16nm 级别工艺 Zynq UltraScal ...

  7. zynq+linux固化程序,如何在 Zynq UltraScale+ MPSoC 上实现 Linux UIO 设计

    原标题:如何在 Zynq UltraScale+ MPSoC 上实现 Linux UIO 设计 简介 作者: Alex He (何晔), 赛灵思高级嵌入式应用工程师 这里的 UIO 即 Userspa ...

  8. ZYNQ UltraScale+ MPSoC OpenAMP 2018.3

    ZYNQ OpenAMP 2018.3 ​ 本文只是对 UG1186 "入门指南"的补充和阐明(适用于 Zynq UltraScale+ MPSoC.) 目录 ZYNQ OpenA ...

  9. Zynq UltraScale + MPSoC示例设计 - 在64位Linux上执行32位应用程序

    目录 官方说明连接:https://china.xilinx.com/support/answers/66636.html 描述 解决方案 官方说明连接:https://china.xilinx.co ...

最新文章

  1. 大叔也说并行和串行`性能提升N倍(N由操作系统位数和cpu核数决定)
  2. 直播|深大周池:跨数据中心的高效大图处理问题研究
  3. 使用reactjs做一个CRUD功能
  4. POJ 1260 Pearls
  5. request用法_Go 语言 Web 应用开发 第 04 课:高级模板用法
  6. boost::log::to_log_manip用法的测试程序
  7. 【Leetcode | 6】136. 只出现一次的数字
  8. 高度不定垂直居中_你真的能写好CSS垂直水平居中吗?
  9. 记腾讯一面 | 掘金技术征文
  10. [Java]HashMap的两种排序方式
  11. 信号与系统(一) 信号与系统的基本概念
  12. vim全文替换字符串
  13. 邮件服务器pop110什么意思,pop pop3区别_25和110端口_imap和pop怎么设置
  14. 柱面投影、拼接视差、球面投影
  15. 微信小程序制作背景图片
  16. 调侃:《金枝欲孽》里的职场人生
  17. Android 安装的app
  18. 项目管理心得:一个项目经理的个人体会、经验总结
  19. 分段函数的期望和方差_题组25随机变量的分布列、期望与方差、正态分布
  20. Oracle 压缩表占用空间、 UNDOTBS01.dbf 占用空间过大解决

热门文章

  1. 遗传算法混流装配线平衡毕业论文【matlab/Flexsim仿真】
  2. Windows 7蓝屏代码含义
  3. C++面向对象高级开发(侯捷)——堆、栈与内存管理
  4. 企业不可忽视的舆情监测管理办法,TOOM舆情监控工作总结?
  5. 【PMP考试秘笈】第二式:PMP 考试工具技术常见翻译问题
  6. Android计步器悦步——百度地图
  7. Notepad用html怎么选颜色,Notepad++如何更改选中文字的颜色或背景色
  8. August, 18(R)
  9. 如何设计企业微信+直播+裂变矩阵?
  10. 【微信小程序控制硬件15 】 开源一个微信小程序,支持蓝牙快速配网+WiFi双控制ESP32-C3应用示范;(附带Demo)