FFMPEG CBR(恒定比特率模式),可保持视频质量

har*_*rma 2 video ffmpeg

我想用 FFMPEG 将视频转换为 mp4,同时保持源视频的比特率(CBR 模式)和质量,

我尝试了一些在这里找到的命令:

https://trac.ffmpeg.org/wiki/Encode/H.264#CBRConstantBitRate

https://superuser.com/questions/314354/ffmpeg-constant-bitrate

https://brokenpipe.wordpress.com/2016/10/07/ffmpeg-h-264-constant-bitrate-cbr-encoding-for-iptv/

通过上面的链接-minrate,我使用-maxrate和其他一些参数实现了恒定比特率,

ffmpeg -i <source> -b <sourceBitrate> -minrate <sourceBitrate> -maxrate <sourceBitrate> 2> log.txt output.mp4

ffmpeg -i <source> -c:v libx264 -x264-params "nal-hrd=cbr" -b:v <sourceBitrate> -minrate <sourceBitrate> -maxrate <sourceBitrate> 2> log.txt output.mp4

ffmpeg -i <source> -c:a libmp3lame -vcodec h264 -preset veryfast -f mp4 -crf 18 "nal-hrd=cbr" -b:v <sourceBitrate> -minrate <sourceBitrate> -maxrate <sourceBitrate> 2> log.txt output.mp4

但转换后的视频质量与源视频不同。我想保持与来源相同的质量。我怎样才能实现这个目标?

难道我做错了什么?

谢谢...

aer*_*tal 5

我是您链接的博客文章的作者。

不应使用 nal-hrd cbrwith mp4,因为avccMP4 中使用的格式不支持填充数据。

无填充数据视频数据在文件格式中自然表示为可变比特率,如果需要则应填充以进行传输。填充数据 NAL 单元和填充数据 SEI 消息不得出现在文件格式存储的流中。

ISO/IEC 14496-15 - 以 ISO 基础媒体文件格式传输网络抽象层 (NAL) 单元结构化视频

正如您在我的示例中看到的,输出是 MPEG-TS,它使用附件 B。nal-hrd需要设置vbv-bufsize