Videocodierung mit ffmpeg
Ich habe jetzt ein paar meiner DVD’s gesichert, und nun die VOB Dateien auf der Platte liegen. Das ist blöd zum anschauen und speichern. Deshalb habe ich mich mal schlau gemacht, wie man ffmpeg nutzt um aus den VOBs XVid Codierte Dateien in AVI Containern zu erstellen. Wichtig war mir auch mehrere Audiospuren mitnehmen zu können.
Update: Durch vertauschte Ton/Bildspuren in den VOB Dateien etc. hatte ich einige Probleme und nun habe ich meine Lösung noch einmal überarbeitet!
Erstmal sucht man sich die VOBs im VIDEO_TS Ordner der CD, welche den Film enthalten. Anschließend kann man mit
$ ffmpeg -i VTS_01_1.VOB
Input #0, mpeg, from 'VTS_01_1.VOB':
Duration: 00:24:06.59, start: 0.280000, bitrate: 5937 kb/s
Stream #0.0[0x1e0]: Video: mpeg2video, yuv420p, 720x576 [PAR 64:45 DAR 16:9], 9800 kb/s, 25 tbr, 90k tbn, 50 tbc
Stream #0.1[0x80]: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
Stream #0.2[0x81]: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
Stream #0.3[0x82]: Audio: ac3, 48000 Hz, stereo, s16, 192 kb/s
Stream #0.4[0x83]: Audio: ac3, 48000 Hz, stereo, s16, 192 kb/s
schauen wie die Video und Audiostreams in der VOB Datei angeordnet sind. Die Informationen sind später wichtig wenn die Streams mit -map neu angeordnet werden sollen. Man sollte vorher in der kompletten VOB Datei mal reinhören, damit man weiß welche Sprache zu welcher Audiospur gehört.
1. Videospur strippen:
Im ersten Schritt habe ich aus jeder VOB das Video herauskopiert (-vcodec copy) ohne Audio mitzuschleppen (-an), dann alle Teile zusammengefügt und letztendlich von MPEG 2 auf MPEG 4 (XVid) mit niedrigerer Qualität komprimiert:
$ ffmpeg -i VTS_01_1.VOB -vcodec copy -an Video_Part_1.mpg
$ cat Video_Part1.mpg ... Video_Part_N.mpg > Video_Komplett.mpg
$ ffmpeg -i Video_Komplett.mpg -f avi -vcodec mpeg4 -vtag xvid -b 1024k -g 300 -bf 2 -threads 2 video_xvid.avi
2. Audiospuren strippen:
Als nächstes müssen wir die gewünschten Audiospuren aus den VOBs sichern. Diese kann man gleich als mp3 komprimieren lassen. Diesmal lassen wir das Video weg (-vn) und müssen auch evtl. auf weitere Tonspuren zugreifen, falls die gewünschte Sprache nicht die erste Tonspur ist (-map 0:2 falls ich wie in obigem Beispiel auf die 3. Spur, also die Audiospur Nummer 2 zugreifen möchte [0x81]). Anschließend werden die mp3′s zusammengefügt. Dabei gehen allerdings die Zeit-Informationen in der Zieldatei kaputt, weswegen man die fertige mp3 noch einmal durch ffmpeg jagen muss damit die Fehler korrigiert werden:
$ ffmpeg -i VTS_01_1.VOB -vn -acodec libmp3lame -ab 128k Deutsch_1.mp3 -map 0:2
$ cat Deutsch_1.mp3 ... Deutsch_N.mp3 > Deutsch_tmp.mp3
$ ffmpeg -i Deutsch_tmp.mp3 -acodec copy Deutsch.mp3
3. Untertitel hinzufügen
Untertitel kann man auch aus den VOBs sichern und der neuen Datei hinzufügen, das brauchte ich nicht und werde es ergänzen sobald ich mich damit beschäftigen musste. Falls jemand eine Lösung hat dann her damit!
4. Zusammenfügen der einzelnen Streams:
Zum Schluss haben wir eine XVid Videospur und mindestens eine Audiospur für den Ton. Mein folgendes Beispiel nimmt 2 Audiospuren, eine für deutsch und eine für englisch. Eine Video- und Audiospur benutzt ffmpeg, möchte man die zusätzlichen Spuren mit haben muss man für jede Spur ein -newaudio mit ans Ende anhängen.
$ ffmpeg -i video_xvid.avi -vcodec copy -i deutsch.mp3 -acodec copy -f avi -aspect 16:9 -threads 2 Video_Remastered.avi -i englisch.mp3 -acodec copy -newaudio
So, das wars auch schon. Wir haben eine schöne kleine Video-Datei mit den gewünschten Sprachen aus unserer DVD gebaut!
Tags: Apple, Linux, Videos, Windows
Dieser Eintrag wurde am 28.06.2010 um 21:27 gepostet und ist in der Kategorie Allgemein gespeichert. Sie können Antworten durch den RSS 2.0 Feed folgen. Sie können eine Antwort hinterlassen, oder einen Trackback von Ihrer eigenen Seite.


