ZCU106多路视频流的捕获与播放
说明:使用ZCU106进行多路视频流捕获,本文为维基百科TRD案例的实现过程。源链接
源概述:此设计可以支持7路hdmi视频流(通过在收端AXI4 Streame Broadcast IP )和8路视频的显示(通过在播放端使用mixer),视频格式均为NV12
视频源可以是:PL中的TPG,HDMI_RX,MIPI CSI-2 Rx,以及文件源(SD卡,U盘,硬盘),还有网络推流
播放端可以是PS向阿的DP_TX,和PL下的HDMI_Tx
表1给出了GUI(vcu_qt,通过DP线连接显示器时)页面和命令行支持的视频流分辨率参数
表1
表2
本设计支持的捕获模式可以罗列如表2所示,其中第一栏为捕获后直接播放,不做编解码处理;后四栏为对收到的信号仅作编码(record)或解码(stream-out)的处理,其他模式即编解码处理均包含。
下面文档主要针对视频源来自HDMI_RX和TPG的多路视频捕捉及播放案例
1 准备工具
软件(代码+调试软件)
(1)TRD文件(下载地址:https://www.xilinx.com/cgi-bin/docs/ctdoc?cid=bigfile;d=rdf0428-zcu106-vcu-trd-2020-2.zip)
(2)串口调试软件,terminus, 也可以是其他软件,有串口调试功能即可(下载地址:terminus for linux,直接下载.deb文件安装即可)
硬件(设备+接口线)
ZCU106
一台安装了terminus的主机(由于不涉及使用petalinux生成bin文件等过程,windows系统和linux系统均可),并且主机需有HDMI接口
两根HDMI线(接口需支持4Kp60的视频,如2.0版本,HDMI1.4的接口最多只到4Kp30)
一台支持4kp60的显示器
一张SD卡,用于板卡启动
2运行流程
2.1 板卡启动
(1)准备SD卡
首先需将SD卡设置为FAT32文件格式(若本就为FAT32格式则无需转换,否则将按照此教程将SD卡转换为目标格式)
再将/TRD-home/images/vcu_multuistream_nv12中的文件复制到SD卡中
(2)连接好电源线
串口(另一端USB口接主机)
HDMI_RX(另一端接主机的HDMI接口)
HDMI_TX(另一端接显示器的HDMI口)
(3)设置SW6为SD卡启动模式
(4)插入SD卡到J83
(5)拨动电源开关SW1,板卡启动,PS系统也启动,PS状态指示灯将由红变绿
(6)打开terminus,选择串口tty0,波特率选择115200
启动成功后可以在调试界面查看系统版本
2.2 vcu_gst_app调试
调试页面进入SD卡(/media/card/config),查看并修改配置文件,此文档将对两路4kp30以及4路1080p60的多路视频捕捉播放案例进行说明
以2-4kp30为例,首先需在HDMI_rx所连接主机上设置屏幕输出为3840*2160@30
(1)修改配置文件(选择Display播放模式),输出接口设置为HDMI,第一路输入设置为HDMI,第二路输入设置为TPG
vi /media/card/config/2-4kp30/Display/2_4kp30_HEVC_MEDIUM.cfg
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210714205456199.p
(2)运行配置文件
vcu_gst_app /media/card/config/2-4kp30/Display/2_4kp30_HEVC_MEDIUM.cfg
(3)运行结果:
4-1080p60
同理,首先将hdmi_rx所连接的输出设置为1920x1080@60,再对/media/config/4-1080p60/Display/4_1080p60_HEVC_15Mbps.cfg进行重新配置,(note:由于HDMI_Rx接收到的视频流可以复用,所以配置文件中的source type 可以为hdmi_2,hdmi_3…hdmi_7,如下图所示
运行结果: