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

Video FFMPEG CBR(恒定比特率模式),可保持视频质量,video,ffmpeg,Video,Ffmpeg,我想用FFMPEG转换mp4中的视频,同时保持源视频的比特率CBR模式和质量 我尝试了以下命令: 通过以上链接,我使用-minrate,-maxrate和其他一些参数实现了恒定比特率 ffmpeg-i-b-minrate-maxrate 2>log.txt output.mp4 ffmpeg-i-c:v libx264-x264参数nal hrd=cbr-b:v-minrate-maxrate 2>log.txt output.mp4 ffmpeg-i-c:a libmp3lame-vcodec

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

我尝试了以下命令:

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

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

ffmpeg-i-c:v libx264-x264参数nal hrd=cbr-b:v-minrate-maxrate 2>log.txt output.mp4

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

但转换后的视频质量和源视频不一样。我想保持和货源一样的质量。我怎样才能做到这一点

我做错什么了吗

谢谢…

提高比特率

在源文件中,即使平均比特率相同,分配给复杂场景的比特数也会更多,分配给简单场景的比特数会更少。通过强制使用与源的平均比特率相同的恒定比特率,编码器将浪费比特用于简单场景,但更重要的是,对复杂场景应用更大的压缩以保持CBR上限

大致上,您的CBR值应该接近源视频的峰值比特率,以保持源质量,而不考虑由于有损重新压缩而不可避免的降级

此外,-preset veryfast使x264在实现给定比特率的最佳质量方面不是最佳的,因此,请进一步提高比特率,或者取消预设

最后,命令语法是

ffmpeg -i in -c:v libx264 -x264-params "nal-hrd=cbr" -b:v <sourceBitrate> -bufsize <1.5*sourceBitrate> out.mp4
x264将假定maxrate与b:v相同。

我是您链接的文章的作者

您不应该在mp4中使用nal hrd cbr,因为mp4中使用的avcc格式不支持填充数据

没有填充数据。视频数据自然地以文件格式表示为可变比特率,并且应该 如果需要,为传输填充。填料数据NAL单位和填料数据SEI信息不得为 以存储流的文件格式显示

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


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

您应该将视频格式更改为mpegts,并将-muxrate参数设置为所需的比特率。例如 ffmpeg-i in.mp4-f mpegts-muxrate 4000K-y out.mp4 也可以使用MediaInfo进行检查

或从VLC使用


谢谢@Mulvya的回答,我尝试使用您的命令,但视频质量仍然受到影响,请在此处查看视频,https://drive.google.com/open?id=1fQ5arAqTVMserMsH_vDs9cq47kjbukR7Ohh,抱歉,请参考此项,您尝试了什么比特率值?@Mulvya您不能将nal hrd与mp4一起使用,因为它启用了avcc中不支持的填充。您应该将答案更改为.ts,否则就没有意义了。@aergistal-不在规范中-但填充NAL似乎没有被MP4 muxer过滤掉。鉴于ffmpeg的行为,我建议不能->不应该。