使用 FFMPEG 将 FLV 转换为 MP4 并保持质量

30 mp4 ffmpeg flv

我尝试使用 ffmpeg 将我的 flv 文件转换为 mp4 以在 iOS 设备上播放它们,但转换后的视频质量比原始视频差得多。

这是我使用的命令:

ffmpeg -i input.flv -ar 22050 output.mp4
Run Code Online (Sandbox Code Playgroud)

如果有人能为我提供 flv 到 mp4 转换的最佳设置,我将不胜感激。

Dan*_*tts 47

根据 FLV 中使用的编解码器,您可能只需将其重新包装在 mp4 容器中即可。您将需要H.264MPEG4 simple profile视频和AAC音频。您可以通过以下方式找到有关源文件的一些信息ffmpeg -i input.flv

我不确定仅仅拥有 H.264/MPEG4 Simple + AAC 是否足够好,或者是否有支持的编解码器的特定选项。测试很容易:

尝试使用

ffmpeg -i input.flv -c copy -copyts output.mp4
Run Code Online (Sandbox Code Playgroud)

-copyts是否copy timestamps有助于音频同步。

如果这不起作用,请尝试强制使用音频和视频编解码器。这将重新编码文件:

ffmpeg -i input.flv -c:v libx264 -crf 23 -c:a aac -b:a 160k output.mp4
Run Code Online (Sandbox Code Playgroud)

如果您只想更改音频或视频编解码器,您可以使用-c:a copy-c:v copy复制您想要保留的编解码器。

要提高视频质量,您可以使用较低的 CRF 值,例如任何降低到 18 的值。要获得较小的文件,请使用较高的 CRF,但请注意,这会降低质量。

要提高音频质量,请选择更高的比特率(在上例中为 160k)。

对于音频和视频质量,您的结果将根据源的质量而有所不同。

有关 FFMPEG aac 编码的更多信息(我一直在指 ffmpeg 站点上描述的“本机”编码器)。


关于问题中建议的 ffmpeg 命令...

-ar指音频采样率。我建议根本不要弄乱这个参数。如果您想玩音频编码,请调整比特率(-b:a 160k如上)并让编码器根据此选择要执行的操作。

作为参考,这就是它的意思。

CD质量为44100Hz采样;典型的视频使用 48000Hz。

您可能会注意到,原始问题示例中的 22050 是 cd 质量采样率的 1/2。如果您要下变频 CD 素材,这是一个不错的选择。如果您从 48KHz 源开始,我会改用 24Khz。

您应该从ffmpeg -i我在顶部建议的命令中获取有关采样率的信息。