ffmpeg transcodant l’audio au format MPEG-4 HE AAC au lieu de AAC

2

J'ai un script Automator qui utilise ffmpeg pour réencapsuler un fichier vidéo dans un mp4 conteneur avec son audio transcodé à aac en laissant la vidéo telle quelle.

for f in "$@"
do
    /Applications/Scriptlets/ffmpeg -i "$f" -c:v copy -c:a aac -b:a 384k -strict -2 "${f%.*}.m4v"
done

Cela fonctionne correctement et la vidéo résultante est bien lue sur mon système, à la fois dans iTunes et Quick Time Pro. essayé avec les fichiers sources avi et mov. Cependant, je viens de remarquer que les fichiers résultants ont leur audio encodé pour MPEG-4 HE AAC au lieu de plaine AAC comme prévu. Par conséquent, même si le fichier est bien lu sur mon Mac, je ne parviens pas à le lire sur mon téléviseur, qui reconnaît AAC mais non HE-AAC . Une solution de contournement en utilisant ffmpeg? S'il vous plaît noter que je suis ne pas intéressé par l'installation d'une autre application d'encodage / transcodage pour ce travail. Je veux seulement utiliser ffmpeg alors s'il vous plait ne pas suggère d'installer autre chose.

TheLearner
la source

Réponses:

2

Le problème est votre ffmpeg. Si dire à ffmpeg d'utiliser aac provoque son encodage dans he aac, si cela est vrai, il y a un problème avec ffmpeg, car spécifier aac ne devrait jamais avoir pour résultat il aac. Demander à ffmpeg de coder à l'aide de libaacplus ou de libfdk_aac devrait entraîner le codage aac.


Voici une idée ... construisez votre propre ffmpeg à partir de la source, parce que votre binaire a été mal construit (si ce que vous dites est vrai).

Vous pouvez télécharger la source ffmpeg et la construire manuellement:

  git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg

Mais il est beaucoup plus facile de l'installer en utilisant la gestion des paquets, comme macports:

MacPorts nécessite une version appropriée de xcode. xcode_5.1.1.dmg est la version la plus récente pour Mavericks (après enregistrement pour un compte développeur gratuit, et se connecter vers developer.apple.com, ce lien commencera votre téléchargement xcode). Une fois le téléchargement terminé, ouvrez votre Terminal.app et terminez l'installation:

 hdiutil attach -quiet -noverify -nobrowse -noautoopen ~/Downloads/xcode_5.1.1.dmg
 cp -npR /Volumes/Xcode/Xcode.app /Applications/
 hdiutil detach -quiet /Volumes/Xcode

Téléchargez et construisez macports:

Guide MacPorts

 curl -Ok https://distfiles.macports.org/MacPorts/MacPorts-2.2.1.tar.bz2
 tar xf MacPorts-2.2.1.tar.bz2
 cd MacPorts-2.2.1
 ./configure
 make
 sudo make install     # *not war!*
 cd ..
 rm -rf Macports-*
 sudo /opt/local/bin/port -v selfupdate
 diskutil quiet repairPermissions /

ajoutez des macports à votre $ PATH:

 export PATH=/opt/local/bin:/opt/local/sbin:$PATH
 export MANPATH=/opt/local/share/man:$MANPATH

construisez votre ffmpeg

 sudo port -vsc install ffmpeg

vous pouvez tout garder à jour simplement avec:

 sudo port -vsc selfupdate
 sudo port -vsc upgrade installed

Si vous n'êtes pas satisfait et / ou devez supprimer MacPorts:

 sudo port -dfp uninstall --follow-dependencies installed
 sudo port -dfp uninstall all
 sudo rm -rf /opt/local  
 sudo rm -rf /Library/Tcl/macports*
chillin
la source
Un profane complet ici donc j'ai quelques questions malgré votre explication approfondie: D'abord, qu'est-ce que c'est? Est-ce quelque chose que je viens de courir sur mon terminal et le reste est pris en charge par ma coque? Ou est-ce quelque chose que je dois installer séparément? J'ai essayé d'ouvrir le lien que vous avez donné (git: //source.ffmpeg.org/ffmpeg.git) et il ne s'est évidemment pas ouvert dans Safari. Xcode est déjà installé sur mon système, mais l'ensemble du processus Macports semble trop compliqué. Peut-être parce que je suis loin d'être féru de technologie. :(
TheLearner
De plus, bien que Xcode soit déjà installé sur mon ordinateur, je suis curieux de connaître votre méthode d’installation du terminal (hdiutil joindre -quiet -noverify -nobrowse -noautoopen ~ / Téléchargements / xcode_5.1.1.dmg cp -npR / Volumes / Xcode / Xcode .app / Applications / hdiutil detach -quiet / Volumes / Xcode). Je l'ai installé depuis mon App Store. Existe-t-il un avantage particulier à utiliser la route des terminaux pour installer Xcode?
TheLearner
1
Oui, l'avantage est que vous n'avez pas à traiter avec App Store. git est un moyen de "vérifier" un logiciel comme celui de vérifier un livre de bibliothèque. Il est vraiment beaucoup plus simple de créer ffmpeg en utilisant macports, car macports s’occupe de toutes les dépendances pour vous, les télécharge et les construit pour vous. Si vous avez essayé d'utiliser cette commande git, vous obtenez simplement la source ffmpeg et la construction échouera car toutes les autres sources des dépendances sont manquantes. Commencez simplement par "Téléchargez et construisez MacPorts". Cela n'interférera avec rien, et si vous ne l'aimez pas, vous pouvez tout supprimer tout simplement.
chillin
1
Mais vous allez adorer, je vous assure. Il semble que beaucoup de commandes permettent de construire un seul port, ffmpeg. Mais vous avez alors accès à tous les macports avec une simple commande, port. Par exemple, pour construire mediainfo, qui est un excellent petit outil d’analyse de média, vous l’installez de la même manière: sudo port -vsc install mediainfo ou pour construire HandBrake sa sudo port -vsc install handbrake ; Rechercher des trucs avec port search something et il renvoie les noms des ports correspondants. Alors vous port info something pour obtenir des informations à ce sujet. puis sudo port -vsc install something construire à partir de la source
chillin
1

le Guide d'encodage AAC ffmpeg page wiki pour devrait aider.

Cette question de superutilisateur peut également aider, Comment utiliser ffmpeg pour mixer 5.1 DTS HD MA ou Dolby TrueHD en AAC stéréo avec Dolby Pro Logic II?

Le guide mentionne la prise en charge de plusieurs formats de codage AAC, mais une compilation personnalisée peut être nécessaire:

FFmpeg peut prendre en charge quatre encodeurs AAC-LC (aac, libfaac, libfdk_aac, libvo_aacenc) et deux encodeurs AAC-HE (libaacplus et libfdk_aac). Les licences de libaacplus, libfaac et libfdk_aac ne sont pas compatibles avec la licence GPL. Par conséquent, celle-ci n'autorise pas la distribution de fichiers binaires contenant du code concédé sous cette licence lorsque ce dernier est également inclus. Par conséquent, ces encodeurs ont été désignés comme "non libres" et vous ne pouvez pas télécharger un ffmpeg pré-construit qui les prend en charge. Cela peut être résolu en compilant vous-même ffmpeg.

Il existe quelques guides pour construire ou obtenir des versions plus performantes de ffmpeg sur votre Mac, par exemple Installer FFMPEG sur un Mac . Comme mentionné dans l'article, je trouve brasser le moyen le plus simple d'installer de tels outils.

Graham Miln
la source
J'ai lu cet extrait sur la page wiki de ffmpeg mais cela ne m'a pas beaucoup aidé. Je comprends que libfaac et libfdkaac ne sont pas disponibles pour des raisons de licence, mais aac l’est, non? Ffmpeg ne devrait-il pas être en train de convertir en aac par défaut (lorsqu'il est utilisé avec l'argument aac)? Je suis un profane absolu sur cette question et ma question pourrait donc être un peu stupide pour laquelle je m'excuse par avance.
TheLearner