ffmpeg - 为什么在 x265 中使用 CQP 模式的初始 QP 的 block 级实际 QP 值是负 3?

标签 ffmpeg compression encoder hevc libx265

我正在使用 x265 编码器对具有不同初始 QP 值的视频进行编码。当我检查比特流以查看跨帧的每个 block 的实际 QP 值与给定的初始 QP 值不完全相同时,我感到很惊讶。具体来说,实际QP从初始值减小到负3,如下图(我的初始QP设置为27)。但我不明白为什么。然后,我从 HM-16.20 运行编码器,实际 QP 值与初始 QP 相同。有人可以帮我理解这样做的动机吗?在我看来,x265 编码器希望通过降低实际 QP 值来保持比 HM 软件中的更高的视觉质量。我使用以下命令行运行 x265 编码器:

x265.exe --input BQSquare_416x240_60.yuv --fps 60 --input-res 416x240 --interlace 0 -f 20  --input-depth 8 --input-csp i420 --ctu 64 --no-open-gop --keyint 1 --ref 1 --aq-mode 0 --qp 27 -r BQSquare_416x240_8bit_27.yuv --output-depth 8 --output BQSquare_416x240_8bit_27.bin
enter image description here

最佳答案

这是由于分层 GOP 结构将不同的 QP 值分配给不同时间级别的帧。为了结合这个想法,x265 采用输入 QP(在您的情况下为 27)并应用不同的偏移量。在您的示例中,偏移量显然是-3。

关于ffmpeg - 为什么在 x265 中使用 CQP 模式的初始 QP 的 block 级实际 QP 值是负 3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70241220/

相关文章:

macos - Xcode 12 : how to link against object files built for free standing

xml - 是否有用于Delphi的“快速信息集” XML压缩库?

c# - GZipStream - block 长度与其补码不匹配

go - 如何在 golang 中将数组编码为二进制文件并将二进制文件编码为数组?

python - Pydub 导出错误 - 手动选择编码器

ffmpeg - 从 FFMPEG 中获取每个提取帧的日志行

shell - 覆盖匹配的行

encoding - Android 上的 FFMPEG x264 编码 - 前瞻错误

linux - 关于 lz4mt 压缩和 linux 缓冲问题

python - 跟踪字符串中字符迭代的列表