计算机 · 2021年12月26日 0

x264编码参数调整

ffmpeg实现(硬件)转码的介绍

https://www.cxyzjd.com/article/qq_22633333/107701301#3IDRI_26

编码参数

x264编码参数调整:
https://www.jianshu.com/p/b46a33dd958d
https://www.codenong.com/cs106748283/

1. QP(QStep,量化步长)

https://blog.csdn.net/qq_18998145/article/details/106419963

  • min qp 控制编码器可以使用的最小量化步长, 太高会影响输出画面的细节
  • max qp 控制编码器可以使用的最大量化步长

SPS中的参数

https://blog.csdn.net/xiaojun111111/article/details/52090185

  • profile 有baseline,main,extended三种,定义了可用的压缩特性,每个profile具体可以使用哪些特性可以看上面这个链接。
  • level 根据解码端的负载和存储空间情况对关键参数(最大采样率、最大图像尺寸、分辨率、最小压缩比、最大比特率、解码缓冲区DPB大小等)加以限制。具体也可以看上面的链接。

编码流控制策略

  • CQ 表示完全不控制码率,尽最大可能保证图像质量,对于质量要求高、不在乎带宽(例如本地存文件)、解码器支持码率剧烈波动的情况,显然 CQ 是不二之选。
  • CBR(Constants BitRate即静态码率 尽量保障码率率)时P帧大小基本恒定;
  • VBR(Variable Bitrate动态码率 尽量保障清晰度波动小)时变化会比较剧烈;

zerolatency

https://blog.csdn.net/DeliaPu/article/details/77004392

  • rc_lookahead
  • sync_lookahead
  • bframes
  • slice_threads
  • vfr_input
  • mb_tree

nvidia硬转的参数调整

https://docs.nvidia.com/video-technologies/video-codec-sdk/nvenc-video-encoder-api-prog-guide/

1. AQ(Adaptive Quntization)

根据画面的时间和空间特性,调整在码率控制算法估算出来的QP值,提供两种模式: a. Spatial AQ 让画面内复杂的区域占用更多的bit
b. Temporal AQ 让画面内容更复杂的帧占用更多的bit https://www.reddit.com/r/ffmpeg/comments/gg5szi/what_is_spatial_aq_and_temporal_aq_with_nvenc/

实际应用

方块效应

呼吸效应

https://blog.csdn.net/szfhy/article/details/79882903