使用 ffmpeg 更改编解码器,同时保持比特率

使用 ffmpeg 更改编解码器,同时保持比特率

所以,我有一堆 .mp4 文件,我需要更改视频和音频编解码器才能在我的设备上播放它们。

视频编解码器目前是 h264,我需要 mpeg4。音频编解码器是 aac,我需要 mp3。

我正在尝试通过这个 ffmpeg 命令转换它们:

ffmpeg -y -i input -s:v 800x480 -c:v mpeg4 -c:a mp3 output

一切运行正常,但质量不佳,因为 ffmpeg 使用了非常低的比特率。

我现在的问题是,我是否需要指定质量/比特率,或者是否可以告诉 ffmpeg 以某种方式使用原始比特率。

-vcodec copy不是一个选项,因为视频编解码器保持不变。

答案1

一切运行正常,但质量不佳,因为 ffmpeg 使用了非常低的比特率。

的默认值mpeg4选择得不太好,因此目标比特率相当低。指定您自己的目标-b:v 2M(取决于您的分辨率)或更好的是,使用恒定质量-q:v 5(如 Mulvya 在评论中所建议的那样)。在后一种情况下,值越低意味着质量越好。

我现在的问题是,我是否需要指定质量/比特率,或者是否可以告诉 ffmpeg 以某种方式使用原始比特率。

不,这样做根本没有意义。如果你要从一个编解码器切换到另一个编解码器,它们的效率可能会更高或更低。每个编解码器在不同的比特率下提供不同的质量,例如,H.264 比 MPEG-4 Part II 效率高得多。H.265 比 H.264 效率高 30-50%,等等。对于实现编解码器的实际编码器也是如此:x264 比参考 H.264 编码器更高效,等等。

因此,使用原始比特率可能效果不佳。即使保持相同的编解码器,如果重新压缩,您可能希望使用更高的比特率来避免发电损失

相关内容