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

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

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

这是我使用的命令:

ffmpeg -i input.flv -ar 22050 output.mp4

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

答案1

根据 FLV 中使用的编解码器,您可能只需将其重新包装在 mp4 容器中即可。您需要H.264视频MPEG4 simple profileAAC音频。您可以使用ffmpeg -i input.flv

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

尝试使用

ffmpeg -i input.flv -c copy -copyts output.mp4

-copytscopy timestamps。这将有助于音频同步。

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

ffmpeg -i input.flv -c:v libx264 -crf 23 -c:a aac -b:a 160k output.mp4

如果您只想更改音频或视频编解码器,则可以使用-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您应该从我在上面建议的命令中获取有关原始材料采样率的信息。

相关内容