# 1 Untertitel extrahieren
ffmpeg -i input.mkv -c copy -map 0:s:0 subs.ass
# 2 Mux-bearbeitete Subs
ffmpeg -i input.mkv -i subs.ass \ -map 0:v -map 0:a -map 1 -map 0:t -c copy -disposition:s:0 default output.mkv
Wenn ich mir das Originalvideo anschaue:
ffprobe -v error -show_entries stream=index,codec_name,codec_type example.mkv
Ich sehe so etwas:
[STREAM] index=0 codec_name=h264 codec_type=video [/STREAM] [STREAM] index=1 codec_name=aac codec_type=audio [/STREAM] [STREAM] index=2 codec_name=ass codec_type=subtitle [/STREAM] [STREAM] index=3 codec_name=ttf codec_type=attachment [/STREAM]
Mein Prozess beinhaltet das Extrahieren der Arschdatei über:
ffmpeg -i input.mkv -map 0:s:0 subs.ass
Ich bearbeite die Untertiteldatei in vim
. Dann versuche ich, die Untertiteldatei mit etwas in der mkv-Datei wieder hinzuzufügen:
ffmpeg -i input.mkv -f ass -i subs.ass \ -map 0:0 -map 0:1 -map 1:0 -c:v copy -c:a copy \ -c:s copy output.mkv
Aber wenn ich die output.mkv prüfe, sehe ich nur
[STREAM] index=0 codec_name=h264 codec_type=video [/STREAM] [STREAM] index=1 codec_name=aac codec_type=audio [/STREAM] [STREAM] index=2 codec_name=ass codec_type=subtitle [/STREAM]
Wie Sie sehen, verliere ich den Anhangsstrom und die Untertitel werden standardmäßig nicht mehr abgespielt. So bin ich auf andere Befehle gestoßen:
Untertitel als Standard festlegen:
ffmpeg -i output.mkv -f ass -i subs.ass -c copy -disposition:s:0 default out.mkv
Dump-Font vom Original:
ffmpeg -dump_attachment:t "" -i original.mkv
Füge dem bearbeiteten Video eine Schriftart hinzu:
ffmpeg -i out.mkv -attach OpenSans-Semibold.ttf -metadata:s:3 mimetype=application/x-truetype-font final.mkv
Aber irgendwie ändert sich während dieser Prozesse das Audio von aac
zu vorbis
und das Video von h264 (native)
bis h264 (libx264)
. Wie kann ich die Streams beibehalten, während ich einfache Fehleränderungen an den Untertiteln vornehme?
# 1 Untertitel extrahieren
ffmpeg -i input.mkv -c copy -map 0:s:0 subs.ass
# 2 Mux-bearbeitete Subs
ffmpeg -i input.mkv -i subs.ass \ -map 0:v -map 0:a -map 1 -map 0:t -c copy -disposition:s:0 default output.mkv