Comment convertir par programme le format mp3 en fichier aac / m4a pouvant être lu par iTunes?

StackOverflow https://stackoverflow.com/questions/70096

  •  09-06-2019
  •  | 
  •  

Question

Je cherchais un moyen de convertir un mp3 en aac par programme ou via la ligne de commande, sans succès. Idéalement, j'aurais un extrait de code que je pourrais appeler à partir de mon application rails qui convertit un mp3 en un aac. J'ai installé ffmpeg et libfaac et j'ai pu créer un fichier aac avec la commande suivante:

ffmpeg -i test.mp3 -acodec libfaac -ab 163840 dest.aac

Lorsque je change le nom du fichier de sortie en dest.m4a, il ne joue pas dans iTunes.

Merci!

Était-ce utile?

La solution

FFmpeg fournit des fonctions de codage AAC si vous les avez compilées. Si vous utilisez Windows vous pouvez récupérer des fichiers binaires complets à partir de ici

.
ffmpeg -i source.mp3 -acodec libfaac -ab 128k dest.aac

Je ne sais pas comment vous appelleriez cela de ruby.

Veillez également à définir le débit binaire de manière appropriée.

Autres conseils

À ma connaissance, il n'y a que trois encodeurs AAC gratuits disponibles via une interface en ligne de commande:

  1. FAAC (LPGL), qui est franchement assez mauvais (la qualité sera bien pire que LAME au même débit). Cela ne vous pose pas de problème si vous êtes prêt à opter pour des débits plus élevés (> > 128 kbps) et si vous avez besoin d'AAC pour des raisons de compatibilité, pas de qualité. Le moyen le plus courant d’utiliser FAAC est de passer par ffmpeg, comme libfaac.

  2. Nero AAC, l'encodeur en ligne de commande disponible gratuitement sous Windows et Linux, mais uniquement à des fins non commerciales (et est donc à code source fermé).

  3. Le codeur AAC de ffmpeg, qui est encore en développement et, bien que je pense que cela fonctionne techniquement, n’est pas du tout stable, bon ou même rapide, car il n’en est encore qu’à ses débuts. Ce n'est pas non plus disponible dans le coffre, à ma connaissance.

(Edit: il semblerait qu'iTunes pourrait en avoir un aussi, je suppose que ses conditions d'utilisation sont similaires à celles de Nero. AFAIK, sa qualité est comparable.)

Je réalise que je suis en retard pour cette soirée, mais je remets en question la prémisse de cette question. Pourquoi voulez-vous même convertir un MP3 en un fichier "iTunes jouable"? format? iTunes gère déjà les MP3 de manière native.

Il semble que vous procédiez à une conversion inutile et que, du fait que vous convertissiez un format avec perte en un autre format, vous perdiez un peu de qualité.

Après avoir installé l'application de conversion sur la machine Linux / Windows sur laquelle vous exécutez votre application Rails, utilisez l'option "system ()". commande en Ruby pour appeler l'application de conversion sur le système. system ("command_here");

dans ffmpeg 0.5 ou version ultérieure, utilisez ffmpeg -i source.mp3 cible.m4a

pour obtenir de meilleurs résultats lors du transfert de métadonnées et pour remplacer le débit par défaut appliqué par ffmpeg

ffmpeg -i " input.mp3 " -ab 256k -map_meta_data input.mp3: sortie.m4a sortie.m4a

mieux ne convertit pas car ipod joue au format mp3 très bien (je sais qu'il existe une telle réponse mais mon faible statut ne me permet pas de voter)

J'ai eu de la chance avec mplayer (qui, je crois, utilise ffmpeg ...) et boiteux. Au point que je l'ai emballé dans un script:

#!/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

Désolé pour les problèmes de sécurité, j’ai raconté ça au train un jour ...

Mon joueur et mon boiteux viennent de fink

En fait, la syntaxe est la suivante: ffmpeg -i input.mp3 -c: aac -strict -2 -b: a 256k output.m4a; plus correct si on émule " correct " bitrate. cf: lien pour un schéma de compilation. (Le paquetage rpmfusion fonctionne bien aussi:

configuration: --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-libal --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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top