目录
1. 概述
Video Codec Unit (VCU) 提供了多标准视频编码和解码功能,包括:
- ISO MPEG-4 第10部分:高级视频编码(AVC)/ITU H.264
- ISO MPEG-H 第2部分:高效视频编码(HEVC)/ITU H.265
1.1 VCU IP Core 参数
注: VCU子系统受运行时软件控制。通过此IP向导设置的配置选项用于准确估计功耗和计算可选编码器缓冲区的深度。
2. 典型的VCU参数配置
使用场景 | 输出质量 | 延迟需求 | 编码器配置参数 | 解码器配置参数 |
Recording, Transcoding | High | Normal |
•
control-rate=variable
•
qp
-mode=auto
•
min-
qp
=10
•
max-
qp
=51
•
initial-delay=500
•
cpb
-size=1000
•
prefetch
-buffer=TRUE
•
periodicity-
idr
=240
•
gop
-length=2*[fps]
| internal-entropy-buffers=5 (9-10 if target-bitrate>=100 Mb/s) low-latency=0 |
Streaming, Video Conferencing | Low | Reduced Latency, Low Latency, Xilinx Low Latency |
•
control-rate=low-latency
•
target-bitrate=<25000
•
qp
-mode=auto
•
min-
qp
=10
•
max-
qp
=51
•
gop
-mode=low-delay-p
•
gdr
-mode=horizontal/vertical
•
initial-delay=500
•
cpb
-size=1000
•
filler-data=0
•
num
-slices=8
•
prefetch
-buffer=TRUE
•
max-picture-sizes='<2*[
avg
frame size],[
avg
frame size],0>' where [
avg
frame size] = target-bitrate/fps
•
periodicity-
idr
=240
•
b-frames=0
•
loop-filter-mode=0
•
loop-filter-beta-offset=-6
•
loop-filter-alpha-c0-offset=-6
| low-latency=1 |
2.1 参数解释
- control-rate=low-latency:码率控制模式设置为低延迟。编码器会尽量减少编码过程中的延迟。
- target-bitrate=<25000:目标比特率。编码器尝试达到的平均比特率,单位是kbps。
- qp-mode=auto:量化参数(QP)模式设置为自动。量化参数决定了视频编码的质量,自动模式下,编码器将自动调整QP值以达到最佳效果。
- min-qp=10和max-qp=51:设定量化参数的最小值和最大值。QP值越小,视频质量越高但文件大小也越大;反之,QP值越大,视频质量越低但文件大小较小。
- gop-mode=low-delay-p:GOP(Group of Pictures)模式设置为低延迟P帧模式。编码器将优先使用P帧来减少编码的延迟。
- gdr-mode=horizontal/vertical:渐进式解码刷新(GDR)模式,可以是水平或垂直。GDR用于改善视频流的错误恢复和网络适应性。
- initial-delay=500:初始延迟,单位是毫秒。编码器开始输出数据前的等待时间。
- cpb-size=1000:编码器缓冲区(CPB)的大小,单位是Kb。CPB用于平滑输出比特率。
- filler-data=0:是否插入填充数据。设置为0表示不插入填充数据,这可以减少无用数据的传输。
- num-slices=8:指定将图像分割成多少片。片的数量影响编码效率和图像质量。
- prefetch-buffer=TRUE:是否启用Encoder buffer。
- max-picture-sizes='<2*[avg frame size],[avg frame size],0>':最大图片尺寸,其中[avg frame size]为目标比特率除以帧率得到的平均帧大小。
- periodicity-idr=240:IDR(Instantaneous Decoder Refresh)帧的周期性。数值表示每隔多少帧插入一个IDR帧,用于视频的随机访问和错误恢复。
- b-frames=0:B帧的数量。设置为0表示不使用B帧,这可以进一步减少编码延迟。
- loop-filter-mode=0:环路滤波器模式。环路滤波用于改善压缩后视频的视觉质量。
- loop-filter-beta-offset=-6和loop-filter-alpha-c0-offset=-6:环路滤波器的β偏移和αC0偏移,用于细调环路滤波的强度。
3. VCU控制等级
软件层面上的控制和管理层次,共分为三个等级:
- GStreamer
- OpenMAX Integration Layer
- VCU Control Software
GStreamer 提供了集成多个多媒体组件和创建管道的基础设施;
GStreamer 框架在 OpenMAX 集成层 API 上实现,Link。
OpenMAX 集成层 API 定义了免版税的标准化媒体组件接口,Link。
VCU 控制软件是 VCU 应用程序开发人员可见的最低级软件,Link。
4. 编码器缓冲区(Encoder buffer)
编码器缓冲区可用于减少内存带宽,此选项会稍微降低视频质量。
编码器缓冲器存储来自参考帧的像素数据。
它从系统内存中的参考帧中预取数据块并将其存储在编码器缓冲区中。
要启用编码器缓冲区,请将预取缓冲区参数传递到使用硬件的 GStreamer 管道中:
gst-launch-1.0 videotestsrc ! omxh265enc prefetch-buffer=true ! fakesink