ffmpeg:如何在 mp3 中设置“联合立体声”模式?

ffmpeg:如何在 mp3 中设置“联合立体声”模式?

在从 flac 转换为 mp3 格式时,如何在 ffmpeg 中设置联合立体声模式?

我通常使用此命令,但它会产生“立体声”模式。我需要“联合立体声”。

ffmpeg -i input.flac -vn -ac 2 -ar 44100 -ab 320k -f mp3 output.mp3

我正在使用适用于 Windows x64 的最新 ffmpeg。

答案1

根据我看过的所有参考资料,我很确定它应该已经默认为联合立体声模式。但我成功测试了使用该joint_stereo标志打开和关闭联合立体声模式。应该将1其设置为启用或0禁用它。

例子:

ffmpeg -i 输入.flac -vn -ac 2 -ar 44100 -ab 320k -f mp3 -joint_stereo 1 输出.mp3

这是根据我找到的文档这里

答案2

更新:此处更正了我的原始帖子(为清晰起见,保留原始文本,并在下方添加评论)。在 ffmpeg 中选择此编码选项时,文件编码为联合立体声。但是,标头信息不正确,显示的是立体声而不是联合立体声。因此,虽然 ffmpeg 中确实存在错误,但幸运的是,它仅限于标头中的元数据。ffmpeg 确实正确处理了重要部分,灵敏的 MP3 播放器应该仍能正常工作(联合立体声是最广泛支持的 MP3 格式)。


恐怕 James P 搞错了,至少在最近的 ffmpeg 3.4.2 中是这样,但这是一个常见的误解。不幸的是,这是 ffmpeg 使用 libmp3lame 方式的一个长期错误。它将标题设置为联合立体声,但实际上并没有以联合立体声进行编码。需要联合立体声的 MP3 播放器将无法播放这些文件。-joint_stereo 1 选项在 ffmpeg 中不作为参数工作。请参阅未解决的错误报告:https://trac.ffmpeg.org/ticket/4954

在使用 ffmpeg 进行其他更改后,我使用 lame 或 sox 将 MP3 文件设置为立体声。我希望这不是必要的,尤其是在处理有损 MP3 文件时,对文件的每个操作都会使文件质量下降一点,但这还不算太糟。

例如,在 Windows 中(这在 CMD 中有效,而不是在 PS 中),这是我经常使用的命令,用于通过 ffmpeg 将 WAV 文件批量转换和标准化为 MP3,然后使用 SoX 设置为联合立体声(其默认输出)。在 Windows 中,检查联合立体声或立体声最简单的方法之一是 Mp3tag,并确保显示“模式”列,其中只会显示单声道、立体声或联合立体声。这也是确认 ffmpeg 无法正确输出联合立体声的最简单方法。

对于 ("*.wav") 中的 %x 执行 (ffmpeg -i "%x" -ab 320k -f mp3 -af dynaudnorm -id3v2_version 3 "int_%x.mp3" & sox --norm=-2.75 "int_%x.mp3" -c 2 -C 192 "ready-%x.mp3")

我对中间文件使用的比特率高于最终输出(在本例中为 320 对 192),以最大限度地减少音频质量下降。

请注意,这会使中间文件(int*)与原始文件和最终文件(ready*)保留在同一目录中。

相关内容