音视频学习 - 编解码器 (Codec)

2022-11-16 09:55:59 浏览数 (1)

视频编解码器 (Video Codec)

常用的编解码器

  • libx264: H.264(AVC) 的实现
  • libx265: H.265(HEVC) 的实现,Chromium 不支持硬解
  • libvpx-vp9: Google 家的
  • libaom-av1: AOMedia 出的开源免费 AV1 编码器,主要 Google 维护
  • libdav1d: VideoLAN、VLC、FFmpeg 联合开发,AOMedia 资助

使用

以 libx264 在 FFmpeg 命令行使用为例

代码语言:javascript复制
ffmpeg -i input.mp4 -c:v libx264 -x264-params threads=1:br:1000:maxrate=1000:minrate=1000:bufsize=1000 out.mp4
  • -x264-params 编码器私有参数要通过类似这样的字段传入,每个编码器的不同

libx264

  • x264-params

libx265

  • x265-params

libaom-av1

  • aom-params

杂谈

相同参数转码结果不一定相同

编码器在编码时,开启多线程会导致编码效果不稳定,常常出现相同参数两次编码结果,PSNR 可能会相差 1dB。 请教过编码器专家,给出的原因是:

  1. 多线程编码时,可能会产生编码顺序的竞争关系,导致区块面积不同
  2. 多帧多线程编码时,vbv 码控的每帧编码速度不同,导致码控点看到编码状态有差异,做出不同的编码策略

所以在做测评的时候,要保证单线程转码

References

  • [1] FFmpeg Codecs Documentation https://ffmpeg.org/ffmpeg-codecs.html
  • [2] libaom AV1 Encoding Guide https://trac.ffmpeg.org/wiki/Encode/AV1

0 人点赞