FFMPEG:将 m4a 转换为 mp3 而不会造成重大损失

use*_*501 74 audio mp3 ffmpeg m4a audio-conversion

我有一大堆音频文件(大约 1000 个),我想将它们从 m4a 转换为 mp3,这样我就可以在带有 USB 端口的 CD 播放器上播放它们。

我尝试做一些简单的事情,例如:ffmpeg -i FILE.m4a FILE.mp3但这似乎将比特率降低到非常低的值,这不是我想要的。

同样,我不想使用恒定比特率(例如 320k)进行转换,因为我正在转换的某些文件是 320k m4a,而有些文件的质量与 96k m4a 一样低。

强制 320k 似乎没有意义,因为某些文件会变得比它们需要的大很多倍。同样,通过将我所有的 320k 文件转换为远低于 96k 的文件来销毁它们也是没有意义的。(目前,文件正在转换为大约 50k。)

有谁知道我怎么能做到这一点?我真正想做的是告诉 ffmpeg 将目录中的所有 m4a 文件转换为 mp3,同时尽可能保留当前的音频质量。(当然,从有损文件格式转换为有损文件格式可能会产生一些额外的损失。)

谢谢你的帮助。如果这是不可能的,是否有某种脚本可以在单独转换文件时检测到所需的质量?

PS:我正在使用英特尔 Mac,但也有一个 Ubuntu 盒子。

llo*_*gan 92

使用可变比特率 (VBR)

您可以使用中的-q:a选项ffmpeg来创建可变比特率 (VBR) MP3 输出:

ffmpeg -i input.m4a -c:v copy -c:a libmp3lame -q:a 4 output.mp3
Run Code Online (Sandbox Code Playgroud)

-q:a使用什么值

来自FFmpeg Wiki: MP3

使用-q:a(或别名-qscale:a)控制质量。值是特定于编码器的,因此对于 libmp3lame,范围是 0-9,其中较低的值表示较高的质量。

  • 0-3 通常会产生透明的结果
  • 4(默认)应该接近感知透明度
  • 6 通常产生“可接受”的质量。

该选项-q:a映射到-V独立lame命令行界面工具中的选项。

您必须进行试验,看看您可以接受什么值。另请参阅Hydrogen Audio:推荐的 LAME 编码器设置

编码多个文件

在 Linux 和 macOS 中,您可以使用 Bash“for 循环”对目录中的所有文件进行编码:

$ mkdir newfiles
$ for f in *.m4a; do ffmpeg -i "$f" -codec:v copy -codec:a libmp3lame -q:a 2 newfiles/"${f%.m4a}.mp3"; done
Run Code Online (Sandbox Code Playgroud)

  • 好的,谢谢,命令有效,但我认为它没有做我想要的。我已经设置了 -q:a 0,这符合我对更高质量 m4a(生成具有更高 vbr 速率的大文件)的预期,但我认为较低质量的文件仍在转换为大文件,vbr 约为 250-260千字节/秒。我本来希望 m4a 格式的大约 96k 的文件在 vbr 模式下使用跛脚编码器转换为类似的比特率。我假设我还没有完全理解 vbr 编码模式是如何工作的? (2认同)
  • 多个文件的另一种变体,不带 for 循环,但使用 ls、管道和 grep:`ls | egrep \.m4a$ | sed -r "s/^(.+)\.m4a/ffmpeg -i '\1.m4a' -codec:v copy -codec:a libmp3lame -q:a 0 '\1.mp3'/"` 输出是 ffmpeg 命令,当您觉得合适时,添加`| sh` 最后执行它们。 (2认同)

T.T*_*dua 39

使用FFmpeg命令行版本。

MP3正式停产(从 2017 年开始)和过时的编解码器(我现在称它为死)。World 已经切换到AAC(更高效和高质量的编解码器),每个人都应该使用它,而不是 mp3:

ffmpeg -i filenameee.m4a -acodec copy output.aac
Run Code Online (Sandbox Code Playgroud)

更新:尽管我不建议这样做,但不幸的是,一些低质量和过时的硬件开发人员仍在生产使用的设备,mp3并且有些人仍然要求使用这种格式......好吧,它是:

ffmpeg -i filenameee.m4a -acodec libmp3lame -ab 256k output.mp3
Run Code Online (Sandbox Code Playgroud)

  • (cntd) “使用许可结束。唯一决定 mp3“死亡”的是用户,他们可能会在某个时候切换到更现代的音频格式,例如 AAC,如今几乎每部智能手机都包含这种格式。” <-- 链接引用结束。 (4认同)
  • 您写道“MP3 已正式停产(自 2017 年起),已过时且已失效的编解码器”,但您提供的链接说“几周前,我们更新了我们的网站,提供有关 Technicolor 和 Fraunhofer 的 mp3 许可计划结束的信息。所以,这意味着 mp3 现在真的死了,正如我们在过去几天经常阅读的那样?当然不是!mp3 是一种现象,它永远改变了我们消费音乐的方式,并且在 2017 年非常活跃。授权计划来了结束是由于该计划中包含的最后一项专利已过期。这绝不意味着 (2认同)
  • @T.Todua 文件格式不是可以停止使用的物理产品...该格式的创建者在其网站上发布了一些法律术语并不意味着我创建新的 MP3 文件突然违反了物理定律。当然值得注意的是,在您的回答中,有许多比 MP3 更好的格式,因为_that_是正确且有帮助的。 (2认同)

小智 5

This worked for me:

ffmpeg -i testing.m4v -b:a 192K -vn testing.mp3
Run Code Online (Sandbox Code Playgroud)