手把手教你学会 Xilinx zynqMP配置VCU实现视频编解码+DP显示+网络上传至服务器/zynqMP实现VCU视频编解码/zynqMP实现gstream硬件视频压缩

因最近想通过在FPGA上实现视频的编解码,刚好手上有一个zynqMP开发板,借此机会和大家一起学习一下xilinx官方的VCU IP

制作不易,记得三连哦,给我动力,持续更新!!!

完整工程文件下载:zu7ev实现vcu视频编解码工程   ,包括FPGA、petalinux完整工程


        在这篇博文中,我们将深入探索如何在 Xilinx ZynqMP 平台上配置视频编解码单元(VCU),实现高效的视频编解码、DP 显示输出以及通过网络将视频上传至服务器。文章将带领你从零开始,逐步掌握 ZynqMP 上 VCU 的配置与使用,结合 GStreamer 实现硬件级视频压缩。无论你是初学者还是有经验的开发者,这篇手把手教程都将帮助你快速上手,并为你的项目提供强有力的支持。

硬件平台介绍:

vivado:vivado2021.2

petalinux:petalinux2021.2

开发板:zu7ev

视频编码格式:H264/H265

实现预期效果

        通过相机采集视频数据,传送到FPGA,然后把视频通过vcu编码,输出到网络服务器并通过DP输出到显示器实时显示。全部操作在linux操作系统进行,可以实现开机自启。

设计框图

本项目大体框图如下

工程设计

工程设计框图

VCU配置

主要配置参数介绍

Coding Standard:选择 AVC 或 HEVC,AVC:H264  HEVC:H265

Coding Type:选择要用于编码的 GOP 结构

- Intra Frame Only - 仅限 I 帧
- Intra & Inter Frame - I 帧、 B 帧和 P 帧

只有在选择 Intra 和 Inter Frame 时才能启用编码器的缓存。

Resolution:选择以下分辨率之一

- 1280×720
- 1920×1080
- 3840×2160
- 4096×2160
- 7680×4320

Frames Per Second:帧率选择,选择 15、 30、 45 或 60 fps。在 7680×4320 分辨率下,只有 15fps 可用。

Color Format:选择以下颜色格式之一
        - 4:0:0 - 单色
        - 4:2:0
        - 4:2:2

Color Depth:选择每通道 8 位或 10 位。

Use Encoder Buffer:选择是否要使用编码器缓存。只有在选择了 Intra 和 Inter Frame 之后才能启用编码器的缓存。编码器缓存通过缓存可编程逻辑中的数据来减少外部存储器的带宽,但它可能会略微降低视频的质量。

Memory Resource Type:选择下列存储器类型选项:
        - URAM ONLY
        - BRAM ONLY
        - COMBINATION - URAM & BRAM

Max Number of Encoder Streams:选择 1 到 8 个流。确定存储器要求

仅当“Basic Configuration”标签设置如下时,系统才会启用编码器缓存的高级配置选项:
        • “Coding Type”是“Intra & Inter Frame”
        • “Use Encoder Buffer”被选中

“Advanced Configuration”标签上的参数设置如下:
        • Manual Override:选择此选项可覆盖由 IP 集成器计算的编码器缓存存储器的大小。
        • Memory Depth (Kbytes):如果选中“Manual Override”复选框,则可以输入 0 到 7,000 Kbyte 的存储器大小。

        • B Frame:选择以下选项之一:

                ° NONE - 最低时延
                ° STANDARD - GOP 配置 IPPP (内部周期为 30 ms)

        • Motion Vector Range:决定编码器缓存的大小:

                ° LOW
                ° MEDIUM
                ° HIGH

        • CORE Clk (MHz):选择 1 - 667 MHz 的时钟频率

其余部分vivado设计如下所示

接下来编译vivado工程,然后生成xsa硬件文件,导入到petalinux

在petalinux配置好设备树文件,内核,根文件系统

根文件系统配置

增加 packagegroup-petalinux-gstreamer。 gstreamer 是用于驱动 VCU 的软件组件。

增加packagegroup-petalinux-opencv 。用于处理视频数据

增加packagegroup-petalinux-python-modules  。用于处理视频数据

还需要增加一些基础库的group,如xl1、xen。utils等

然后编译petalinux,生成BOOT.bin、内核Image、设备树system.deb等

把BOOT放入FLASH,其余两个放入emmc进行启动。

验证设计

开机登录petalinux,并自启动程序

并且通过DP启动显示器界面

运行程序,启动相机视频采集,并显示到显示器

由于我手头只有单色的senser板卡,如果换为彩色的是一样的,都是通用的

并且在网络服务器也是可以看到视频输出

至此,我们的项目就彻底验证完成了!!

制作不易,记得三连哦,给我动力,持续更新!!!

完整工程文件下载:zu7ev实现vcu视频编解码工程   ,包括FPGA、petalinux完整工程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值