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.
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:
la source