Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenloses um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereiche, welche für Gäste verwehrt bleiben

Hardware & Software Praxis: Videos mit Untertiteln umkodieren

Ich kodiere meine Videos regelmäßig
Du musst dich Anmelden oder Registrieren um diesen link zusehen!
um, weil mein Mediaplayer das Audioformat EAC3 nicht beherrscht. Dazu verwende ich ffmpeg mit folgenden Optionen:

ffmpeg -i <videofile> -c:v copy -c:s copy -c:a ac3 <outfile>

Allerdings kopiert das nur je einen Audio- und Untertitel-Stream. Ich möchte aber gerne alle Untertitel bewahren, um den Film im Zweifelsfall auch mit deutschen Untertiteln abspielen zu können. Wie mache ich das?


Dazu müssen Sie ffmpeg explizit ein Mapping übergeben. Das geht einfach, indem Sie -map 0 vor dem -c:v einfügen. Damit kopiert ffmpeg alle Streams.

Alternativ können Sie auch gezielt Untertitel auswählen. Allerdings schaltet das explizite Mapping die automatische Auswahl komplett ab, sodass Sie dann auch Audio- und Video-Streams spezifizieren müssen. Mit diesem Aufruf kopieren Sie beispielsweise den ersten Video-Stream, konvertieren die erste Audiospur und kopieren die englischen und die deutschen Untertitel:

ffmpeg -i <video> -map 0:v -map 0:a -map 0:s:0 -map 0:s:15 -c:v copy -c:s copy -c:a ac3 <outfile>

Das ergibt dann folgendes Mapping:

Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (eac3 (native) -> ac3 (native))
Stream #0:2 -> #0:2 (copy)
Stream #0:17 -> #0:3 (copy)

Zu beachten ist dabei, dass ffmpeg die Streams nach Typen getrennt zählt und dabei jeweils bei 0 beginnt. Aufgrund der vorangestellten Video- (0) und Audio-Streams (1) muss man den Stream Nummer 17 mit den deutschen Texten deshalb als 15. Untertitel-Stream (s:15) spezifizieren. Ein Aufruf von ffmpeg -i <videofile> zeigt Ihnen übrigens, was sich in welchen Streams befindet.
Quelle: c‘t
 
Zurück
Oben