ffmpeg编码x264

协助查看编码的工具有:Elecard、Bitrate Viewer、ffprobe

1060431-c7c6b1cd8565819e.png
x264参数.png
1060431-179eff2b4878f0da.png
x264参数1.png

prest的参数有:ultrafast 、superfast、veryfast、faster、fast、medium、slow 代表不同的速度,越慢质量越好

转码参数为ultrafast,转码速度为4.26倍速
./ffmpeg -i test2.mp4 -vcodec libx264 -preset ultrafast -b:v 2000k output264.mp4

tune调优编码:
直播编码推流时tune的参数zerolatency将会提升效率

profile(档次)与level:
BaseLine、Extented、Main、High、Hight10等

1060431-8806bec6b1a0d928.png
x264编码profile参数.png

Leve的影响,以下为部分截图:

1060431-9c5c97cb999e368a.png
level参数的影响.png

每50帧设置一个GOP间隔生成60秒的mp4视频,也就是控制多少帧有一个关键帧。有利于切片
./ffmpeg -i test2.mp4 -c:v libx264 -g 50 -t 60 output.mp4

利用sc_threshold解决场景切换会强制插入GOP问题
./ffmpeg -i test2.mp4 -c:v libx264 -g 50 -sc_threshold 0 -t 60 -y output.mp4

不希望出现B帧:
./ffmpeg -i test2.mp4 -c:v libx264 -x264opts “bframes=0” -g 50 -sc_threshold 0 output.mp4

控制I帧、P帧、B帧的频率与规律,可通过控制GOP中B帧的帧数来实现,p帧的频率可以通过x264的参数b-adapt进行设置

在GOP中每2个P帧之间存放3个B帧:
./ffmpeg -i test2.mp4 -c:v libx264 -x264opts “bframes=3:b-adapt=0” -g 50 -sc_threshold 0 output.mp4

总结:B帧越多,同码率清晰度将会越高,但编码复杂度越高,合理用B帧对于清晰度与码率的平衡尤其重要。

CBR恒定码率,VBR可变码率。

控制码率波动:
-b:v、maxrate、minrate 最大码率与最小码率

./ffmpeg -i test2.mp4 -c:v libx264 -x264opts “bframes=10:b-adapt=0” -b:v 1000k -maxrate 1000k -minrate 1000k -bufsize 50k -nal-hrd cbr -g 50 -sc_threshold 0 output.ts

分析命令:
设置B帧的个数,每2个P帧直接包含10个B帧
设置视频码率为1000kbit/s
设置最小和最大码率为1000kbit/s
设置编码buffer大小为50KB(过大过小会影响码率)
设置H.264的编码HRD信号形式为CBR
设置每50帧一个GOP
设置场景切换不强行插入关键帧(sc_threshold)

猜你喜欢

转载自blog.csdn.net/weixin_34234721/article/details/90830436