如何以编程方式将mp3转换为itunes-playable aac / m4a文件?

我一直在寻找一种方法,以编程方式或通过命令行将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编码器可通过命令行界面获得:

  1. FAAC(LPGL),老实说非常糟糕(质量会比同样比特率的LAME差很多)。 如果您愿意购买更高比特率(>> 128kbps)并且需要AAC以实现兼容性,而不是质量原因,那就很好。 使用FAAC的最常见方式是通过ffmpeg,如libfaac。

  2. Nero AAC,其命令行编码器可在Windows和Linux下免费使用,但仅用于非商业用途(并且相应地是封闭源代码)。

  3. ffmpeg的AAC编码器仍处于开发阶段,虽然我认为它在技术上有效,但由于它仍处于初始阶段,因此它完全没有稳定或良好甚至快速。 据我所知,它也不适用于行李箱。

(编辑:似乎iTunes也可能有一个,我怀疑它的使用条款与Nero相似.AFAIK的质量可比。)

我意识到我迟到了这个派对,但我在质疑这个问题的前提。 为什么你甚至想把MP3转换为“itunes playable”格式? iTunes已经在本地处理MP3。

您似乎正在进行不必要的转换,并且由于您正在从一种有损格式转换为另一种格式,因此您在此过程中会失去一些质量。

在Linux / window机器上安装转换应用程序后,您正在运行Rails应用程序,使用Ruby中的“system()”命令来调用系统上的转换应用程序。 系统( “command_here”);

在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罚款(我知道有这样的答案,但我的低位不允许投票)

我使用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和跛脚来自fink

实际上,语法是ffmpeg -i input.mp3 -c:aac -strict -2 -b: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-ru n时间,cpudetect

Interesting Posts