
Ich verwende derzeit den folgenden Befehl, um eine Reihe von .ogg
Dateien durchzuleitenffmpeg
for x in *.ogg; do ffmpeg -i "$x" -ab 320k -write_id3v2 1 "`basename "$x" .ogg`.mp3"; done
Es funktioniert und druckt die folgenden Informationen aus
Output #0, mp3, to '10 Ft. Ganja Plant_Bass Chalice_10_Bass Chalice.mp3':
Metadata:
TSSE : Lavf57.83.100
Stream #0:0: Audio: mp3 (libmp3lame), 44100 Hz, stereo, fltp, 320 kb/s
Metadata:
TITLE : Bass Chalice
ARTIST : 10 Ft. Ganja Plant
GENRE : Reggae
DATE : 2005
ALBUM : Bass Chalice
track : 10
encoder : Lavc57.107.100 libmp3lame
Aber wenn ich die Dateien in iTunes lade, sind die ID3-Tags nicht vorhanden.
Ich habe versucht, es mit und ohne die -write_id3v2 1
Option zu verwenden, aber es funktioniert immer noch nicht.
Was mache ich falsch?
Antwort1
In Ihrer Eingabe werden Metadaten nicht auf Datei-/Containerebene gespeichert (Ogg-Metadatenscheint ein bisschen chaotisch), aber auf Stream-Ebene, innerhalb des 1. Streams (alsVorbis-Kommentar).
In Ihrem Ausgabeformat werden MP3-Metadaten (ID3-Tags)niemalspro Stream, sondern nur pro Datei. Obwohl ffmpeg alle Metadaten anzeigt, die es für den Audiostream kopiert hat, kann es nichts davon in einer MP3-Datei speichern. (Beachten Sie, wie der eine Frametutspeichern, TSSE
, wird auf Dateiebene angezeigt.)
Verwenden Sie die -map_metadata 0:s:0
, um das Ogg/Vorbis-Layout korrekt in MP3 zu übersetzen. Wie in derHandbuchseite:
-map_metadata[:metadata_spec_out] infile[:metadata_spec_in]
(output,per-metadata)
[...]
For example to copy metadata from the first stream of the input file to
global metadata of the output file:
ffmpeg -i in.ogg -map_metadata 0:s:0 out.mp3
To do the reverse, i.e. copy global metadata to all audio streams:
ffmpeg -i in.mkv -map_metadata:s:a 0:g out.mkv
(Beachten Sie, dass von ffmpeg nicht erkannte Felder ID3-Frames zugeordnet werden TXXX
, die iTunes vermutlich gar nicht anzeigt, foobar2000 jedoch schon.)