ffmpeg-H264/H265常用编解码预设参数
一、概述
不管是实时互动、直播、点播、还是离线渲染等场景都需要对视频文件进行编解码。且不同的应用场景对编解码的速度以及质量也是不同的,那么如何平衡速度与质量的关系以及选取合适的
应用场景就成为了关键。本节就简单介绍一下AVCodecContext->pre_data的预设参数的用法,来更好的视线视频质量速度的平衡。
二、示例
- 控制编码速度与压缩效率的平衡
AVCodecContext *c;
av_opt_set(c->priv_data, "preset", "ultrafast", 0);key:preset 从ultrafast~veryslow 编码速度越来越慢,相应的视频压缩率也越来越高。
预设值 编码速度 压缩效率 文件大小 编码时间 推荐场景 ultrafast
最快 最差 最大 最短 实时直播、低延迟场景 superfast
很快 较差 较大 很短 实时处理、临时文件 veryfast
快 一般 适中 短 在线视频、快速转码 fast
较快 较好 较小 中 标准转码、平衡选择 medium
中等 良好 中等 中 默认预设(无特殊需求) slow
较慢 优秀 小 长 离线渲染、存储空间有限 slower
慢 更优 更小 很长 高质量归档、不考虑时间 - ultrafast
- superfast
- veryfast
- faster
- fast
- medium
- slow
- slower
- veryslow
- 应用场景
- 直播、视频会议、实时互动可以使用ultrafast、superfast、veryfast,这样编码速度更快,可以把视频尽快传递出去(ps:虽然加大了一定的码率)
- 本地视频存储/编辑/播放:使用slow、slower、veryslow可以有更好的压缩率,节省存储空间
- 应用场景
- 针对特定场景优化编码参数,从film~zerolatency,编码延迟从高到底。根据自己场景的需要进行选择,如直播选择zerolatency(最小化编码延迟)
- key:tune
- film
- animation
- grain
- stillimage
- psnr
- ssim(同上)
- fastdecode
fastdecode
- zerolatency
- key:tune
-
码率控制 (
crf
或bitrate
)