Wie verwende ich ffmpeg, um einer AAC-Datei Metadaten hinzuzufügen, ohne sie neu zu codieren?

13

Ich verwende ffmpeg, um nur den Audiostream aus einer Videodatei zu extrahieren:

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

Dies erzeugt eine saubere Audiodatei, jedoch ohne Metadaten.

Zum Hinzufügen von Metadaten verfügt ffmpeg über eine Befehlszeilenoption:

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

Dies wird ohne Fehler ausgeführt, aber wenn die Ausgabedatei mit ffprobe überprüft wird, enthält sie überhaupt keine Metadaten-Tags.

Wenn der Ausgabecontainer in mp4 geändert wird, können die Metadaten festgelegt und in der Ausgabedatei angezeigt werden:

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

Hier ist das interessante Stück; Wenn ich Banshee verwende, um die Metadaten einer vorhandenen .aac-Datei zu bearbeiten, und ffmpeg verwende, um die Datei auf die gleiche Weise zu verarbeiten, werden die ursprünglichen Metadaten erfolgreich in die neue .aac-Datei kopiert.

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

Versuche, die Metadaten zu ändern, haben jedoch keine Auswirkung:

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

Der .aac-Container kann also anscheinend Metadaten enthalten, und ffmpeg kann sie von der Eingabe zur Ausgabe kopieren, kann sie jedoch nicht ändern, wenn der Kopiercodec verwendet wird.

Kennt jemand eine Möglichkeit, mit ffmpeg die Metadaten in einem AAC-Container zu ändern, ohne sie neu zu codieren?

Gibt es alternativ ein anderes allgemeines Tool, mit dem ich die Metadaten festlegen könnte, nachdem die Datei verarbeitet wurde?

Vielen Dank. Chris.

Chris C.
quelle

Antworten:

12

Ziel war es, aus einer Videodatei eine reine Audiodatei ohne Neucodierung zu erstellen und Metadaten einzuführen, die von Media-Playern erkannt werden können. Die Umgebung ist Debian GNU / Linux.

Ich möchte mich bei @bootload dafür bedanken, dass ich auf dem richtigen Weg bin, um eine Antwort zu finden.

ffmpeg scheint das Hinzufügen von Metadaten-Tags zu .AAC-Ausgabedateien nicht zu unterstützen. Hier sind jedoch zwei mögliche Problemumgehungen.

  1. Die Befehlszeilendienstprogramme id3 und id3v2 (in den Standardrepositorys verfügbar) können ID3-Tags auf eine .aac-Audiodatei anwenden. Nautilus hat die Tag-Stile v1 und v2 erkannt, sodass beide funktionieren sollten. Dieselben Tags wurden vom Banshee Media Player erkannt.
id3v2 -t "My Title" audio.aac
  1. ffmpeg kann einem MP4-Container Metadaten hinzufügen, eine .mp4-Erweiterung in Nautilus wird jedoch als Videodatei angezeigt. Apple Inc. verwendet nicht standardmäßige Erweiterungen für den MP4-Container, um Videodateien (.m4v) von Audiodateien (.m4a) zu unterscheiden. Diese Erweiterungen werden unter Debian von Nautilus und von ffmpeg erkannt. So,
ffmpeg -i video.mp4 -vn -acodec copy -metadata title="My Title" audio.m4a

erzeugt eine von Nautilus erkannte Nur-Audio-Datei, und ffmpeg kann dem Container sicher Metadaten hinzufügen.

Chris C.
quelle
3

Was ist die beabsichtigte Hardware? Ist es für ein Apple iP * -Gerät? Wenn ja, versuchen Sie http://atomicparsley.sourceforge.net/. Andernfalls versuchen Sie http://ffmpeg.org/ffmpeg.html#Examples mit der mex / demux-Methode "UTF-8-encoded INI" . (Extrahieren Sie die Metadaten als utf8-Datei und ändern Sie sie und fügen Sie sie erneut ein.)

Bootload
quelle
Die Umgebung ist Debian GNU / Linux.
Chris C.
In der ffmpeg-Dokumentation ist nicht klar, wie der Metadaten-Muxer / Demuxer verwendet wird, obwohl der Dokumentlink das resultierende Dateiformat anzeigt. Können Sie ein Befehlszeilenbeispiel dafür bereitstellen? Vielen Dank.
Chris C.
@ ChrisC sieht nicht gut aus. Ohne waten durch die aac & ffmpeg specs dies zu überprüfen sieht es aus wie die Metadaten geehrt von ffmpeg ist hier aufgelistet ~ wiki.multimedia.cx/index.php?title=FFmpeg_Metadata#Basic_Usage und acc nicht unterstützt wird. Wenn Sie das CLI für andere Formate verwenden, folgen Sie beispielsweise dem Muster 'ffmpeg -i track05.wav -metadata title = "Track # 5" -metadata author = "Unbekannter Künstler" -acodec alac -y track05.m4a . Das verallgemeinerte Muster lautet ffmpeg -i < SOURCE > -Metadatenschlüssel = "Wert" <SOURCE>. Dies ist genau der Prozess, dem Sie gefolgt sind: (
Bootload
Lasst uns sehr spezifisch werden. Was ist das Format der Metadaten, in die Sie codieren möchten? Sprechen wir über ID3? Mit welchem ​​Format wirst du endlich arbeiten?
Bootload
Ich habe mich umgesehen, um zu sehen, was AAC unterstützt. Es kann sein, dass es kein offizielles Format gibt, aber innerhalb von Debian ID3V1 und ID3V2 scheinen beide zu funktionieren. Banshee setzt anscheinend ID3V2-Tags ein, wenn er seinen Editor verwendet.
Chris C.
1

MP4Box (Teil des "gpac" -Pakets) umhüllt AAC-Dateien mit MP4-Containern, ohne die Originaldaten zu ändern. Metadaten können dann mit nahezu jeder Tagging-Software hinzugefügt werden:

MP4Box -add old.aac new.mp4
Gid
quelle