FFmpeg 命令将 MP3 转换为 AAC

FFmpeg 命令将 MP3 转换为 AAC

我可以发出这个命令:

ffmpeg -i input.mp3 -acodec alac -ab 128k -ar 48000 -ac 2 -y output.m4a 

创建 m4a 文件。

但是当我发出这个命令时

ffmpeg -i input.mp3 -acodec alac -ab 128k -ar 48000 -ac 2 -y output.aac

ffmpeg 抛出一个错误说

无法为输出文件 #0 写入标题(编解码器参数不正确?)。

此外,m4a 文件的大小实际上比原始文件大近 5.8 倍,这绝对不是我想要的,也是我想要转换为 AAC 的原因。

答案1

我怎样才能转换为 AAC?

这是最基本的 FFmpeg 命令,使用 FFmpeg 具有的最高质量 AAC 将输入转换为 AAC 音频。libfdk_aac是 Fraunhofer AAC 编码器,当您编译支持它的 FFmpeg 时它可用。

ffmpeg -i input.mp3 -c:a libfdk_aac output.m4a

要改变质量,您有两个选择:

  • 对于可变比特率 (VBR),请使用-vbr选项。例如,-vbr 4是一个不错的选择(立体声音频大约为 128 kBit/s)。值越高越好。值的范围从 1 到 5。

    ffmpeg -i input.mp3 -c:a libfdk_aac -vbr 4 output.m4a
    
  • 对于固定比特率 (CBR),请使用-b:a选项,例如-b:a 128k。128 kBit/s 在大多数情况下应该足够了。您通常也可以选择更低的比特率。

    ffmpeg -i input.mp3 -c:a libfdk_aac -b:a 128k output.m4a
    

您还可以使用 HE-AAC (v1/v2) 代替默认的 AAC-LC(低复杂度)配置文件,该配置文件最适合低比特率:

ffmpeg -i input.mp3 -c:a libfdk_aac -profile:a aac_he_v2 -b:a 32k output.m4a

如果我没有怎么办libfdk_aac

某些版本的 FFmpeg 没有libfdk_aac(出于许可原因)。如果是这种情况,您可以使用内置的 AAC 编码器:

ffmpeg -i input.mp3 -c:a aac -b:a 192k output.m4a

该编码器不能正确支持 VBR,因此如果您需要该编码器或 HE-AAC,请继续阅读。

你可以自己编译 ffmpeg 并添加libfdk_aac支持。有指南在 FFmpeg Wiki 上。在 Linux 上编译很容易,在 OS X 上编译相对容易,而在 Windows 上编译则比较困难。如果您之前按照编译指南操作并安装了适当的库,FFmpeg 现在会为您提供使用 的选项libfdk_aac


您原来的方法存在一些问题:

  • alac不是 AAC。ALAC 是Apple 无损音频编解码器而 AAC 是高级音频编码

  • 这就是为什么你的输出大于输入,因为与 MP3 相比,ALAC 仍然是压缩的,但它需要无损——这就是为什么它需要存储更多数据。

  • .aac不是 ALAC 音频的输出容器。如果您使用 AAC,那应该可以。不过我会使用 MP4 或 M4A。

答案2

轻松转换为适用于 Zeranoe Windows 版本的 AAC

ffmpeg -i input.mp3 -c:a aac -b:a 128k output.m4a

使用“aac”代替libfaac或libfdk_aac: https://trac.ffmpeg.org/wiki/Encode/AAC

“FFmpeg 可以支持三种 AAC-LC 编码器(aac、libfaac、libfdk_aac)和一种 HE-AAC(v1/2) 编码器(libfdk_aac)。libfaac 和 libfdk_aac 的许可证与 GPL 不兼容,因此当 GPL 许可代码也包含在内时,GPL 不允许分发包含根据这些许可证许可的代码的二进制文件。”

相关内容