繁体   English   中英

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

[英]FFMPEG CBR (Constant Bit Rate mode) with maintain video quality

我想将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

但是转换后的视频质量与来源不同。 我想保持质量与来源相同。 我该如何实现?

难道我做错了什么?

谢谢...

增加比特率。

在源文件中,即使平均比特率相同,也会有更多的比特分配给复杂的场景,而更少的比特分配给简单的场景。 通过将恒定比特率强制为与源的平均比特率相同的值,编码器将浪费比特使用更简单的场景,但是更重要的是,对复杂的场景应用更大的压缩率以保持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将假定maxrateb:v相同。

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

不应将 nal-hrd cbrmp4 avcc使用,因为MP4中使用的avcc格式不支持填充数据。

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

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

如您在我的示例中所见,输出是使用附件B的MPEG nal-hrd需要设置vbv-bufsize

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

媒体信息

或从VLC使用

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM