Comment utiliser ffmpeg pour ajouter des métadonnées à un fichier AAC sans réencodage?

13

J'utilise ffmpeg pour extraire uniquement le flux audio d'un fichier vidéo:

ffmpeg -i video.mp4 -vn -acodec copy audio.aac

Cela produit un fichier audio propre mais sans aucune métadonnée.

Pour ajouter des métadonnées, ffmpeg a une option de ligne de commande:

ffmpeg -i video.mp4 -vn -acodec copy -metadata title="My Title" audio.aac

Cela s'exécute sans erreur, mais lorsque le fichier de sortie est vérifié avec ffprobe, il n'a pas de balises de métadonnées du tout.

Si le conteneur de sortie est changé en mp4, les métadonnées peuvent être définies et apparaissent dans le fichier de sortie:

ffmpeg -i video.mp4 -vn -acodec copy -metadata title="My Title" audio.mp4

Voici le morceau intéressant; si j'utilise Banshee pour modifier les métadonnées d'un fichier .aac existant, puis utiliser ffmpeg pour traiter le fichier de la même manière, les métadonnées d'origine sont copiées avec succès dans le nouveau fichier .aac.

ffmpeg -i metadata.aac -vn -acodec copy audio.aac

mais les tentatives de modification des métadonnées n'ont aucun effet:

ffmpeg -i metadata.aac -vn -acodec copy -metadata title="My Title" audio.aac

Il semble donc que le conteneur .aac puisse contenir des métadonnées et ffmpeg puisse les copier d'entrée en sortie, mais ne peut pas les modifier lorsque le codec de copie est utilisé.

Quelqu'un connaît-il un moyen pour que ffmpeg modifie les métadonnées dans un conteneur aac sans réencodage?

Sinon, existe-t-il un autre outil générique que je pourrais utiliser pour définir les métadonnées après le traitement du fichier?

Merci beaucoup. Chris.

Chris C.
la source

Réponses:

12

L'objectif était de produire un fichier audio uniquement à partir d'un fichier vidéo sans réencodage et d'introduire des métadonnées reconnaissables par les lecteurs multimédias. L'environnement est Debian GNU / Linux.

Je voudrais remercier @bootload de m'avoir mis sur la bonne voie pour trouver une réponse.

ffmpeg ne semble pas prendre en charge l'ajout de balises de métadonnées aux fichiers de sortie .AAC, cependant, voici deux solutions possibles.

  1. Les utilitaires de ligne de commande id3 et id3v2 (disponibles dans les référentiels standard) peuvent appliquer des balises id3 à un fichier audio .aac. Nautilus a reconnu les styles de balises v1 et v2, donc l'un ou l'autre devrait fonctionner. Les mêmes balises ont été reconnues par le lecteur multimédia Banshee.
id3v2 -t "My Title" audio.aac
  1. ffmpeg peut ajouter des métadonnées à un conteneur MP4, mais une extension .mp4 dans Nautilus apparaîtra sous forme de fichier vidéo. Apple Inc. utilise des extensions non standard du conteneur MP4 pour distinguer les fichiers vidéo (.m4v) des fichiers audio (.m4a). Ces extensions sont reconnues sous Debian par Nautilus et par ffmpeg. Donc,
ffmpeg -i video.mp4 -vn -acodec copy -metadata title="My Title" audio.m4a

produira un fichier audio uniquement reconnu par Nautilus, et ffmpeg peut ajouter en toute sécurité des métadonnées au conteneur.

Chris C.
la source
3

Quel est le matériel prévu? Est-ce pour un appareil Apple iP *? Si c'est le cas, essayez http://atomicparsley.sourceforge.net/ Sinon, essayez http://ffmpeg.org/ffmpeg.html#Examples en utilisant la méthode mex / demux "UTF-8- encoded INI" . (Extraire les métadonnées sous forme de fichier utf8 et modifier et réinsérer).

bootload
la source
L'environnement est Debian GNU / Linux.
Chris C.
La documentation ffmpeg n'est pas claire sur la façon d'utiliser le multiplexeur / démultiplexeur de métadonnées, bien que le lien du document indique le format de fichier résultant. Pouvez-vous fournir un exemple en ligne de commande de la façon dont cela serait fait? Merci.
Chris C.
@ChrisC n'a pas l'air bien. Sans parcourir les spécifications aac et ffmpeg pour vérifier cela, il semble que les métadonnées honorées par ffmpeg soient répertoriées ici ~ wiki.multimedia.cx/index.php?title=FFmpeg_Metadata#Basic_Usage et acc n'est pas pris en charge. En utilisant le cli pour d'autres formats, vous suivez le modèle 'ffmpeg -i track05.wav -metadata title = "Track # 5" -metadata author = "Unknown Artist" -acodec alac -y track05.m4a par exemple. Le modèle généralisé est ffmpeg -i <SOURCE> -metadata key = "value" <SOURCE>. C'est exactement le processus que vous avez suivi :(
bootload
Permet de devenir très précis. Quel est le format des métadonnées que vous souhaitez encoder? Parlons-nous ID3? Avec quel format allez-vous enfin travailler?
bootload
J'ai jeté un coup d'œil pour voir ce que l'AAC supporte. Il n'y a peut-être pas de format officiel, mais dans Debian ID3V1 et ID3V2, les deux semblent fonctionner. Banshee semble mettre des balises ID3V2 lors de l'utilisation de son éditeur.
Chris
1

MP4Box (qui fait partie du package "gpac") enveloppe les fichiers AAC avec des conteneurs MP4 sans altérer les données d'origine. Les métadonnées peuvent ensuite être ajoutées à l'aide de n'importe quel logiciel de balisage:

MP4Box -add old.aac new.mp4
Gid
la source