Xilinx Zynq UltraScale+ MPSoC VCU ROI Demo跑
一、前言
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跑相关推荐
- XILINX Zynq UltraScale+ MPSoC 在 4K 视频图像处理和会议系统的应用
赛灵思 Zynq UltraScale+™ MPSoC EV 器件的 4K 视频处理功能.EV 器件具有继承的多标准视频编解码器,能够以 60帧/秒 的速度同步编码和解码. Arm 四核 Cortex ...
- Xilinx Zynq UltraScale+ MPSoC 介绍
文章目录 简介 软件架构 petalinux工具 开发环境搭建 简介 MYC-CZU3EG 是深圳市米尔科技有限公司推出的一款以 Xilinx XCZU3EG 作为核心的嵌入式核心板. 采用了 Xil ...
- 基于xilinx Zynq UltraScale MPSoC平台的核心板及开发板介绍-米尔科技
近日,米尔科技推出国内首款基于xilinx Zynq UltraScale+MPSoC 平台的核心板及开发板.其优势主要有:采用16纳米制程,相比Znyq7000系列每瓦性能提升5倍,且单芯片融合4核 ...
- Xilinx ZCU106开发详解(Xilinx Zynq UltraScale+ MPSoC)
ZCU106开发详解之 Petalinux 2018.1安装创建Petalinux工程全记录 ZCU106开发详解之VIVADO开发环境的安装 ZCU106开发之PL侧闪灯 ZCU106开发之PS侧M ...
- Zynq UltraScale+ MPSoC EV系列VCU应用通路搭建
ZCU106开发板VCU应用通路搭建 前言 编译换了台主机,果然快了很多,下面说一下VCU通路的搭建.其中最主要的是给VCU部分提供时钟,下面说一下 准备 1.petalinux 2.vivado 3 ...
- 嵌入式开发之zynqMp ---Zynq UltraScale+ MPSoC 图像编码板zcu102
嵌入式开发之zynqMp -Zynq UltraScale+ MPSoC 图像编码板zcu102 1.1 xilinx zynqMp 架构 1.1.1 16nm 级别工艺 Zynq UltraScal ...
- zynq+linux固化程序,如何在 Zynq UltraScale+ MPSoC 上实现 Linux UIO 设计
原标题:如何在 Zynq UltraScale+ MPSoC 上实现 Linux UIO 设计 简介 作者: Alex He (何晔), 赛灵思高级嵌入式应用工程师 这里的 UIO 即 Userspa ...
- ZYNQ UltraScale+ MPSoC OpenAMP 2018.3
ZYNQ OpenAMP 2018.3 本文只是对 UG1186 "入门指南"的补充和阐明(适用于 Zynq UltraScale+ MPSoC.) 目录 ZYNQ OpenA ...
- Zynq UltraScale + MPSoC示例设计 - 在64位Linux上执行32位应用程序
目录 官方说明连接:https://china.xilinx.com/support/answers/66636.html 描述 解决方案 官方说明连接:https://china.xilinx.co ...
最新文章
- 大叔也说并行和串行`性能提升N倍(N由操作系统位数和cpu核数决定)
- 直播|深大周池:跨数据中心的高效大图处理问题研究
- 使用reactjs做一个CRUD功能
- POJ 1260 Pearls
- request用法_Go 语言 Web 应用开发 第 04 课:高级模板用法
- boost::log::to_log_manip用法的测试程序
- 【Leetcode | 6】136. 只出现一次的数字
- 高度不定垂直居中_你真的能写好CSS垂直水平居中吗?
- 记腾讯一面 | 掘金技术征文
- [Java]HashMap的两种排序方式
- 信号与系统(一) 信号与系统的基本概念
- vim全文替换字符串
- 邮件服务器pop110什么意思,pop pop3区别_25和110端口_imap和pop怎么设置
- 柱面投影、拼接视差、球面投影
- 微信小程序制作背景图片
- 调侃:《金枝欲孽》里的职场人生
- Android 安装的app
- 项目管理心得:一个项目经理的个人体会、经验总结
- 分段函数的期望和方差_题组25随机变量的分布列、期望与方差、正态分布
- Oracle 压缩表占用空间、 UNDOTBS01.dbf 占用空间过大解决
热门文章
- 遗传算法混流装配线平衡毕业论文【matlab/Flexsim仿真】
- Windows 7蓝屏代码含义
- C++面向对象高级开发(侯捷)——堆、栈与内存管理
- 企业不可忽视的舆情监测管理办法,TOOM舆情监控工作总结?
- 【PMP考试秘笈】第二式:PMP 考试工具技术常见翻译问题
- Android计步器悦步——百度地图
- Notepad用html怎么选颜色,Notepad++如何更改选中文字的颜色或背景色
- August, 18(R)
- 如何设计企业微信+直播+裂变矩阵?
- 【微信小程序控制硬件15 】 开源一个微信小程序,支持蓝牙快速配网+WiFi双控制ESP32-C3应用示范;(附带Demo)