video - 具有保持视频质量的 FFMPEG CBR(恒定比特率模式)

标签 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

但转换后的视频质量与源文件不同。我想保持与来源相同的质量。我怎样才能做到这一点?

我做错了什么吗?

谢谢你...

最佳答案

我是 blog post 的作者你联系了。

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

No filler data. Video data is naturally represented as variable bit rate in the file format and should be filled for transmission if needed. Filler Data NAL units and Filler Data SEI messages shall not be present in the file format stored stream.

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

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

关于video - 具有保持视频质量的 FFMPEG CBR(恒定比特率模式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48055899/

相关文章:

video - FFmpeg - 计算剩余转换时间

java - 在我的 Java GUI 中嵌入视频

css - 如何使视频具有响应性但仍可观看?

batch-file - 带有 FFMPEG 的批处理 FOR 循环

swing - Java CV 1.0 网络摄像头视频捕获 :Frame cannot be converted to IplImage

ffmpeg - 如何使用 ffmpeg 和 h264_videotoolbox 标志提高输出视频质量?

image - 将图像/视频存储到 Hadoop HDFS 中

video - 高级 ffmpeg 压缩控制

ruby-on-rails-3 - 使用 Rails 进行后台视频处理

filter - 如何避免 ffmpeg 内存不足错误