8 votes

Comment identifier le codec (AAC ou ALAC) utilisé dans un fichier m4a ?

Étant donné que le format m4a n'est qu'un conteneur et qu'il peut contenir de la musique codée avec un codec avec perte (AAC) ou sans perte (ALAC), existe-t-il un moyen simple de déterminer quel codec a été utilisé pour un fichier donné ?

10voto

Mapad Points 3033

Lorsque j'utilise le file sur un fichier .m4a, je reçois une réponse générique "ISO Media, Apple iTunes ALAC/AAC-LC (.M4A) Audio" pour les fichiers AAC et ALAC. Il me vient à l'esprit deux autres approches qui ne nécessitent ni la main lourde d'iTunes ni l'installation d'un nouveau logiciel :

  1. Ouvrez le fichier audio en question avec QuickTime Player. Sélectionnez "Show Movie Inspector" dans le menu "Window" (ou appuyez sur -i) pour voir la taille du fichier, le débit de données et le codec utilisé pour sa création.

  2. Utilisez le afinfo (audio file info) dans Terminal.app pour obtenir plus d'informations que celles fournies par QuickTime Player. Voici quelques exemples de résultats :

    $ afinfo /Users/admin/Desktop/01\ The\ Guns\ of\ August\ 1.m4a
    
    Num Tracks: 1 Data format: 2 ch,  44100 Hz, 'alac' (0x00000001) from
    16-bit source
    
    4096 frames/packet
    
    Channel layout: Stereo (L R)
    
    estimated duration: 18702.930431 sec audio bytes: 1006059541
    
    audio packets: 201367 bit rate: 430332 bits per second
    
    packet size upper bound: 12334 maximum packet size: 12334
    
    audio data file offset: 48
    
    optimized audio
    
    824799232 valid frames + 0 priming + 0 remainder = 824799232

Pour les lecteurs qui ne sont pas familiers avec l'utilisation du terminal, c'est assez simple, et vous ne casserez rien. Ouvrez le Terminal, et tapez - ou coupez et collez depuis le bas - le mot afinfo suivi d'un simple espace :

afinfo 

Ensuite, faites glisser un fichier audio vers la fenêtre du terminal et déposez-le. Vous verrez que le chemin du fichier sera ajouté à la commande afinfo. Si, en faisant glisser l'icône, le Finder est devenu le processus actif, vous devrez cliquer sur la fenêtre du Terminal pour le réveiller avant l'étape finale consistant à appuyer sur la touche Entrée pour exécuter la commande. Si vous le souhaitez, vous pouvez obtenir des informations sur plusieurs fichiers à la fois en faisant glisser et en déposant plusieurs icônes au lieu d'une seule. Lorsque vous avez terminé, quittez Terminal.app comme vous le feriez pour n'importe quel autre programme.

0voto

Matt McClellan Points 751

Je voulais faire cela afin d'identifier quels fichiers m4a dans un dossier étaient ALAC et quels étaient AAC. Il est facile de faire cela sur un dossier entier comme celui-ci :

afinfo ./*.m4a |grep -B 4 alac

ce qui donne un résultat comme :

File:           Track 09.m4a
File type ID:   m4af
Num Tracks:     1
----
Data format:     2 ch,  44100 Hz, 'alac' (0x00000001) from 16-bit source, 4096 frames/packet

Pour obtenir les noms de fichiers, j'ai utilisé ceci :

afinfo ./*.m4a |grep -B 4 alac |grep File: |sed 's/.*\///'

résultant en :

Track 09.m4a

0voto

swesdo Points 1

J'ai fini par chercher ce type de question car j'avais besoin de regarder le niveau supérieur de mon disque dur de musique pour identifier lesquelles étaient alac afin que je puisse les convertir en m4a(aac) compressé pour une meilleure compatibilité avec les plateformes.

J'ai écrit une fonction qui regarde récursivement le dossier courant ( c'est-à-dire si vous avez besoin d'aller plus loin que le répertoire de travail sur lequel vous l'avez exécutée )

si vous devez modifier la profondeur, le -maxdepth peut être ajoutée à l'option find dans $m4a_files ainsi que de spécifier des chemins à ne pas regarder, comme je l'ai fait avec ! -path "*.app*" .

J'ai utilisé echo pour imprimer la commande dans une variable et l'exécuter via eval parce que j'ai eu des problèmes ici et dans le passé avec d'autres outils en ligne de commande ( comme qpdf ) itérant la sortie de find dans un autre outil via une boucle for.

allu () {

    # alac lookup

    echo
    echo "looking up m4a files"
    echo

    # bypasses paths with .app in their name so if you run it on some place like ~/Downloads
    # and you have an app downloaded there it won't look in it

    m4a_files=$( echo $( find . -name "*.m4a" ! -path "*.app*" | sed "s|.*|\"&\"|" ) );

    # syntax afinfo $m4a_files |grep -B 4 m4a |grep File: |sed 's/.*\///'

    echo 'checking for alac'
    echo

    # looks alac files up 
    file_lookup_merger=$( echo "afinfo" $m4a_files "|grep -B 4 alac |grep File: |sed 's/.m4a*\///'" ) ;

    # uses eval to return the list of files it found *with srnd. quotes*
    eval $file_lookup_merger |sed 's/File:           //'| sed "s|.*|\"&\"|";

}

Edit : Un jour plus tard, après avoir écrit ce qui précède, j'ai voulu écrire une version plus simple et plus compatible qui fonctionne à la fois sur Mac et Linux. J'ai donc écrit une version utilisant Exiftool de Phillip Harvey. https://exiftool.org/ ( installation homebrew ) https://formulae.brew.sh/formula/exiftool#default

# finds alac files

( find . -name *.m4a -exec exiftool -T -audioformat -filepath {} \; )|grep alac

# prints list of alac files for use as a string separated by spaces

echo $( ( find . -name *.m4a -exec exiftool -T -audioformat -filepath {} \; )|grep alac |sed 's.alac..g'|sed "s|.*|\"&\"|")|sed 's." /."/.g'

-1voto

Paul Points 5080

Si vous allez à iTunes > View > View Options > Show Columns > Kind il comprendra une colonne qui vous dira si le fichier est Apple Lossless ou AAC

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X