我可以发出这个命令:
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 不允许分发包含根据这些许可证许可的代码的二进制文件。”