我一直在寻找一种以编程方式或通过命令行将 mp3 转换为 aac 的方法,但没有成功。理想情况下,我有一段代码可以从我的 rails 应用程序中调用,将 mp3 转换为 aac。我安装了 ffmpeg 和 libfaac 并能够使用以下命令创建一个 aac 文件:
ffmpeg -i test.mp3 -acodec libfaac -ab 163840 dest.aac
当我将输出文件的名称更改为 dest.m4a 时,它不会在 iTunes 中播放。
谢谢!
FFmpeg提供 AAC 编码工具,如果你已经编译了它们。如果你使用的是 Windows,你可以从这里获取完整的二进制文件
ffmpeg -i source.mp3 -acodec libfaac -ab 128k dest.aac
我不确定你会如何从 ruby 中调用它。
此外,请务必正确设置比特率。
据我所知,只有三个免费的 AAC 编码器可以通过命令行界面获得:
FAAC (LPGL),老实说非常糟糕(在相同的比特率下,质量会比 LAME 差很多)。如果您愿意追求更高的比特率 (>>128kbps) 并且需要 AAC 以实现兼容性,而不是质量原因,那也可以。使用 FAAC 的最常见方式是通过 ffmpeg,如 libfaac。
Nero AAC,命令行编码器可在 Windows 和 Linux 下免费使用,但仅用于非商业用途(并且相应地是封闭源代码)。
ffmpeg 的 AAC 编码器,仍在开发中,虽然我相信它在技术上确实有效,但它一点也不稳定,也不是很好,甚至不是很快,因为它仍处于初始阶段。据我所知,它在后备箱中也不可用。
(编辑:似乎 iTunes 也可能有一个,我怀疑它的使用条款与 Nero 的相似。AFAIK 它的质量是可比的。)
我意识到我参加这个聚会迟到了,但我质疑这个问题的前提。为什么您甚至想将 MP3 转换为“iTunes 可播放”格式?iTunes 已经原生处理 MP3。
似乎您正在进行不必要的转换,并且由于您正在从一种有损格式转换为另一种格式,因此您在此过程中失去了一些质量。
在 ffmpeg 0.5 或更高版本中使用 ffmpeg -i source.mp3 target.m4a
为了获得更好的结果以传输元数据并覆盖默认比特率 ffmpeg 应用
ffmpeg -i "input.mp3" -ab 256k -map_meta_data input.mp3:output.m4a output.m4a
最好不要转换,因为 ipod 播放 mp3 很好(我知道有这样的答案,但我的地位低不允许投票)
在运行 Rails 应用程序的 linux/window 机器上安装转换应用程序后,使用 Ruby 中的“system()”命令调用系统上的转换应用程序。系统(“command_here”);
我在使用 mplayer (我相信它使用 ffmpeg ...)和跛脚时很幸运。我已经将它包装在一个脚本中:
#!/bin/sh
TARGET=$1
BASE=`basename "${TARGET}"`
echo TARGET: "${TARGET}"
echo BASE: "${BASE}" .m4a
# Warning! Race condition vulnerability here! Should use a mktemp
# variant or something...
mkfifo encode
mplayer -quiet -ao pcm -aofile encode "${TARGET}" &
lame --silent encode "${BASE}".mp3
rm encode
抱歉,安全问题,我有一天在火车上撞了这个......
我的mplayer和la脚来自fink
实际上,语法是 ffmpeg -i input.mp3 -c:a aac -strict -2 -b:a 256k output.m4a; 如果模拟“正确”比特率,则更正确。cf.:编译方案的链接。(rpmfusion 包也可以正常工作:
配置: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr /share/man --arch=x86_64 --optflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord -gcc-switches -m64 -mtune=generic'--enable-bzlib --disable-crystalhd --enable-frei0r --enable-gnutls --enable-libass --enable-libcdio --enable-libcelt --enable-libdc1394 --disable-indev=jack --enable -libfreetype --enable-libgsm --enable-libmp3lame --enable-openal --enable-libopencv --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libsoxr --enable -libspeex --enable-libtheora --enable-libvorbis --enable-libv4l2 --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab --enable-avfilter --enable-avresample --enable -postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-runtime-cpudetect