Benutzer-Werkzeuge

Webseiten-Werkzeuge


lin_videovoodoo

DVD - BluRay - TS - MKV

Autor: Niko, erstellt am 06.12.2019 - Debian Buster 10.2

Immer wieder gesucht und immer wieder interessant.
Ein kurzer Ausflug zur Arbeit und Weiterverarbeitung verschiedener (Video)-Containerformate, Kopieren von DVDs oder BluRays, fast ausschließlich auf der Kommandozeile.
WARNUNG: Wie allgemein bekannt (auch möchte aus Sicherheitsgründen auch nochmal darauf hinweisen!) ist das Umgehen eines Kopierschutzes in Deutschland mal wieder nicht erlaubt. Lasst also die Finger von illegalen Filmkopien. Falls euch eine eurer eigenen Scheiben aber so ans Herz gewachsen ist, und für den ruhigeren Schlaf eine Kopie braucht, könnt Ihr vom Recht der Privatkopie (§53 Abs.1 UrhG) Gebrauch machen - es gilt aber trotzdem der einleitende Satz mit dem Kopierschutz.
Die Themensammlung hier wird mit der Zeit sicher noch wachsen. Hier kommen erst einmal die Themen mit denen ich mich schon beschäftigen musste.

Tools

  • ffmpeg
  • mkvtoolnix
  • dvdbackup
  • dvdauthor
sudo apt-get install ffmpeg mkvtoolnix dvdbackup dvdauthor -y

TS -> MKV

TS steht für Transport Stream. Der Stream kann „normales“ MPEG2 Material oder auch, je nach Sender, HD Material, in Audio und Video, enthalten.
Wer einen Satellitenreceiver mit USB-Aufnahmefunktion hat kennt das Drama. Ein großes TS-File, keine Kapitel und oft nur am PC oder am Aufnahmegerät abspielbar.

Hinweis: Meistens kann am Aufnahmegerät (Receiver) eingestellt werden wie groß die einzelnen TS-Blöcke werden sollen. Das geht je nach Modell bei 2GB los und endet in unbegrenzt. Wählt nach Möglichkeit eine Einstellung das nur ein TS Block pro Film erstellt wird. Ansonsten muss jeder TS Block einzeln bearbeitet und anschließend in MKV zusammengeführt werden. Das Resultat ist zwar ansehnlich, aber es wird an der Nahtstelle immer einen „Knick“ in Bild und/oder Ton haben.

Am Beispiel einer Folge der Serie „Braunschlag“ (3sat HD von 2012) zeige ich euch die einzelnen Schritte um eine gängigere MKV Datei mit Kapiteln zu erezeugen:

USB Geräte anschließen und mounten

Zuerst müssen alle externen Speichermedien noch gemountet werden.

TS zu MKV

Je nach Systemperformance und Dateigröße kann dieser Schritt etwas Zeit in Anspurch nehmen.
1. Mit ffmpeg den TS-Container in einen MKV-Container verlustfrei umwandeln
1.1. Video- und Tonspuren ermitteln
Hinweis: Leerzeichen müssen mit einem Backslash (\) in der Shell maskiert werden. Um die Tipperei abzukürzen schreibe nur bis „01“ und drücke einmal die Tabulator Taste, der Pfad sollte sich nun von selbst verfollständigen.

lana@Buster:~/usbhd/Braunschlag/Season1$ ffmpeg -i 01\ -\ Ein\ heiliges\ Wunder.ts
Input #0, mpegts, from '01 - Ein heiliges Wunder.ts':
  Duration: 00:41:36.56, start: 21975.399489, bitrate: 12532 kb/s
  Program 132 
    Stream #0:0[0x196e]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(tv, bt709, progressive), 1280x720 [SAR 1:1 DAR 16:9], 50 fps, 50 tbr, 90k tbn, 100 tbc
    Stream #0:1[0x1978](deu): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, fltp, 256 kb/s
    Stream #0:2[0x1979](mis): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, fltp, 192 kb/s
    Stream #0:3[0x197b](mul): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, fltp, 192 kb/s
    Stream #0:4[0x197a](deu): Audio: ac3 ([6][0][0][0] / 0x0006), 48000 Hz, stereo, fltp, 448 kb/s
    Stream #0:5[0x1983](deu): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006) (hearing impaired)

Da war natürlich noch mehr Output zu sehen, aber wir brauchen nur den Teil ab Input. Die Zeilen mit „Stream“ am Anfang sind wichtig! Wir wollen das Video (Stream 0:0) und den deutschen (deu) Zweikanal (Stream 0:1) und AC3 Ton (Stream 0:4).
fmpeg -i <PFAD ZUR TS DATEI> -acodec copy -map 0:1 -map 0:4 -vcodec copy -map 0:0 -f matroska <PFAD ZUR AUSGABE>
-i <INPUT>
-acodec copy <AUDIO unverändert übernehmen = COPY> -vcodec copy <VIDEO unverändert übernehmen = COPY> -f <FORCE FORMAT = MATROSKA> -map x:y <legt die zu kopierenden Streams fest>

lana@Buster:~/usbhd/Braunschlag/Season1$ ffmpeg -i 01\ -\ Ein\ heiliges\ Wunder.ts -acodec copy -map 0:1 -map 0:4 -vcodec copy -map 0:0 -f matroska /home/lana/Videos/MeinNeuerContainer.mkv
Output #0, matroska, to '/home/lana/Videos/MeinNeuerContainer.mkv':
  Metadata:
    encoder         : Lavf58.20.100
    Stream #0:0(deu): Audio: mp2 (P[0][0][0] / 0x0050), 48000 Hz, stereo, fltp, 256 kb/s
    Stream #0:1(deu): Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, stereo, fltp, 448 kb/s
    Stream #0:2: Video: h264 (High) (H264 / 0x34363248), yuv420p(tv, bt709, progressive), 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 50 fps, 50 tbr, 1k tbn, 90k tbc
Stream mapping:
  Stream #0:1 -> #0:0 (copy)
  Stream #0:4 -> #0:1 (copy)
  Stream #0:0 -> #0:2 (copy)
Press [q] to stop, [?] for help
[matroska @ 0x55fdf9bb4cc0] failed to avoid negative pts -20 in stream 2.
Try -avoid_negative_ts 1 as a possible workaround.
frame=124831 fps=876 q=-1.0 Lsize= 3590185kB time=00:41:36.50 bitrate=11780.8kbits/s speed=17.5x    
video:3373333kB audio:214520kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.064981%
lana@Buster:~/usbhd/Braunschlag/Season1$ 

Jetzt sollte im Zielverzeichnis eine fertige abspielbare MKV Datei liegen. Wem das reicht, der kann hier das Lesen aufhören.

MKV Info bearbeiten

Die MKV-Titelinformation ist unabhängig vom Dateinamen und wird beim Abspielen im Player, z.B. VLC, angezeigt. Die Folge der Serie lautet „Ein heiliges Wunder“ dann sieht das auf der Kommandozeile so aus:
mkvpropedit –edit info –set „title=<DEIN TEXT>“ <QUELLE>
mkvpropedit kommt mit dem Paket mkvtoolnix

lana@Buster:~/usbhd/Braunschlag/Season1$ mkvpropedit --edit info --set "title=Braunschlag_01-Ein heiliges Wunder" /home/lana/Videos/MeinNeuerContainer.mkv 
Die Datei wird analysiert.
Die Veränderungen werden in die Datei zurückgeschrieben.
Fertig

MKV Kapitel erzeugen

Das Tool mkvmerge erzeugt die Kapitel, kennt aber nur zwei Modi:

  • when-appending: erzeugt ein Kapitel am Anfang des Tracks und ein Kapitel wenn ein zweiter Track angehangen wird
  • interval: erzeugt Kapitel in festen Zeitabständen im Format HH:MM:SS.nnnnnnnnn oder einer Zahl mit der Einheit „s“, „ms“ or „us“.

mkvmerge kommt ebenfalls mit dem Paket mkvtoolnix
Wenn wir feste Kapitelsprünge alle 5 Minuten (=300s) wollen geht das so:
mkvmerge -o <AUSGABE DATEI> –generate-chapters interval:300s <QUELLE DATEI>
Hinweis: Ausgabedatei kann nicht gleich Quelldatei sein. Dieser Vorgang erzeugt einen neue MKV Datei, die unter einem anderen Namen erzeugt wird und somit wiederum neben der Quelldatei auf der Festplatte liegen kann.

lana@Buster:~/usbhd/Braunschlag/Season1$ cd /home/lana/Videos/
lana@Buster:~/Videos$ mkvmerge -o Ein_heiliges_Wunder.mkv --generate-chapters interval:300s MeinNeuerContainer.mkv 
mkvmerge v31.0.0 ('Dolores In A Shoestand') 64-bit
»MeinNeuerContainer.mkv«: Der Demultiplexer für das folgende Format wird benutzt: »Matroska«.
»MeinNeuerContainer.mkv« Spur 0: Das Ausgabemodul für das folgende Format wird benutzt: »MP3«.
»MeinNeuerContainer.mkv« Spur 1: Das Ausgabemodul für das folgende Format wird benutzt: »AC-3«.
»MeinNeuerContainer.mkv« Spur 2: Das Ausgabemodul für das folgende Format wird benutzt: »AVC/h.264«.
Die Spur mit der ID 2 aus der Datei »MeinNeuerContainer.mkv« wird als Referenz für die Kapitelerzeugung benutzt.
Die Datei »Ein_heiliges_Wunder.mkv« wurde zum Schreiben geöffnet.
Fortschritt: 100%
Die Cue-Einträge (der Index) werden geschrieben …
Das Multiplexen dauerte 4 Sekunden.
lana@Buster:~/Videos$ ls -lah
insgesamt 19G
drwxr-xr-x  5 lana lana 4,0K Dez  6 10:41  .
drwxr-xr-x 30 lana lana 4,0K Dez  6 09:28  ..
-rw-r--r--  1 lana lana 3,5G Dez  6 10:41  Ein_heiliges_Wunder.mkv
-rw-r--r--  1 lana lana 3,5G Dez  6 10:29  MeinNeuerContainer.mkv
lana@Buster:~/Videos$ 

DVD Kopieren

Einen Zahn muss ich Euch gleich ziehen. Das sog. „Shrinken“ der Daten, das man den Film dann auf deinen normalen DVD5 Rohling mit 4,5GB brennen kann geht so on the fly nicht! Mit dieser Methode erstellt ihr eine 1:1 Kopie der gesamten DVD oder nur des Hautpfeatures.

Vorbereitung

DVD Struktur analysieren

Welche Titelzusammenstellungen auf der DVD sind kann mit dvdbackup untersucht werden:
-i <EINGABEGERÄT = unser gemountetes DVD-ROM unter dvdrom> -I <INFO = zeigt Informationen zur eingelegten DVD an>

dvdbackup -i dvdrom/ -I
... eine Menge Output ...
Dateistruktur der DVD
VIDEO_TS/
	VIDEO_TS.IFO	     22528	  22,00 KiB
	VIDEO_TS.VOB	    178176	 174,00 KiB
	VTS_00_0.IFO	     22528	  22,00 KiB
	VTS_00_0.VOB	    178176	 174,00 KiB
	VTS_01_0.IFO	     57344	  56,00 KiB
	VTS_01_0.VOB	   4005888	   3,82 MiB
	VTS_01_1.VOB	   7448576	   7,10 MiB
	VTS_02_0.IFO	     73728	  72,00 KiB
	VTS_02_0.VOB	    178176	 174,00 KiB
	VTS_02_1.VOB	1073565696	1023,83 MiB
	VTS_02_2.VOB	1073565696	1023,83 MiB
	VTS_02_3.VOB	1073565696	1023,83 MiB
	VTS_02_4.VOB	1073565696	1023,83 MiB
	VTS_02_5.VOB	1073565696	1023,83 MiB
	VTS_02_6.VOB	1073565696	1023,83 MiB
	VTS_02_7.VOB	 242642944	 231,40 MiB
	VTS_03_0.IFO	     18432	  18,00 KiB
	VTS_03_0.VOB	    178176	 174,00 KiB
	VTS_03_1.VOB	 132671488	 126,53 MiB
	VTS_04_0.IFO	     18432	  18,00 KiB
	VTS_04_0.VOB	    178176	 174,00 KiB
	VTS_04_1.VOB	   7448576	   7,10 MiB
 
Hauptfilm:
	Titelzusammenstellung, die den Hauptfilm enthält, ist 2
	Das Seitenverhältnis des Hauptfilms ist 16:9
	Der Hauptfilm hat 1 Blickwinkel
	Der Hauptfilm hat 5 Tonspuren
	Der Hauptfilm hat 10 Unterbildkanäle
	Der Hauptfilm hat maximal 16 Kapitel pro Titel
	Der Hauptfilm hat maximal 6 Audiokanäle pro Titel
... noch viel mehr Output...

Hier hat dvdbackup den Hauptfilm Titel 2 (VTS_02…) korrekt erkannt. Der Hauptfilm ist normalerweise der Teil bzw. die Zusammsenstellung die am meisten Platz auf der DVD einnimmt.

Videomaterial extrahieren

Zuerst muss wieder ein Verzeichnis erstellt werden in das das DVD Material kopiert wird, danach wird der Hauptfilm in das neue Verzeichnis extrahiert.

lana@Buster:~$ mkdir Videos/MeineDvdKopie
lana@Buster:~$ dvdbackup -i dvdrom/ -o Videos/MeineDvdKopie/ -F -n 2 -p
...viel Output...
Kopiere Titel, Teil 1/7: 100% abgeschlossen (1024/1024 MiB)
Kopiere Titel, Teil 2/7: 100% abgeschlossen (1024/1024 MiB)
Kopiere Titel, Teil 3/7: 100% abgeschlossen (1024/1024 MiB)
Kopiere Titel, Teil 4/7: 100% abgeschlossen (1024/1024 MiB)
Kopiere Titel, Teil 5/7: 100% abgeschlossen (1024/1024 MiB)
Kopiere Titel, Teil 6/7: 100% abgeschlossen (1024/1024 MiB)
Kopiere Titel, Teil 7/7: 100% abgeschlossen (231/231 MiB)

Bei mir hat es nur mit -F nicht geklappt, daher wurde noch „-n 2“ benutzt. Wer die gesamte DVD koperieren möchte nimmt statt -F eben -M und dann ohne -n. -i <INPUT>
-o <OUTPUT>
-F <MainFeature>
-M <MIRROR>
-n <TITEL>
-p <FORTSCHRITTSANZEIGE>

Im Zielverzeichnis befinden sich wieder automatisch angelegte Unterordner.

lana@Buster:~$ cd Videos/MeineDvdKopie/2/VIDEO_TS/
lana@Buster:~/Videos/MeineDvdKopie/2/VIDEO_TS$ ls -lah
insgesamt 6,3G
drwxr-xr-x 2 lana lana 4,0K Dez  6 09:06 .
drwxr-xr-x 3 lana lana 4,0K Dez  6 08:49 ..
-rw-r--r-- 1 lana lana  72K Dez  6 08:51 VTS_02_0.BUP
-rw-r--r-- 1 lana lana  72K Dez  6 08:51 VTS_02_0.IFO
-rw-r--r-- 1 lana lana 174K Dez  6 08:51 VTS_02_0.VOB
-rw-r--r-- 1 lana lana 1,0G Dez  6 08:53 VTS_02_1.VOB
-rw-r--r-- 1 lana lana 1,0G Dez  6 08:56 VTS_02_2.VOB
-rw-r--r-- 1 lana lana 1,0G Dez  6 08:59 VTS_02_3.VOB
-rw-r--r-- 1 lana lana 1,0G Dez  6 09:01 VTS_02_4.VOB
-rw-r--r-- 1 lana lana 1,0G Dez  6 09:03 VTS_02_5.VOB
-rw-r--r-- 1 lana lana 1,0G Dez  6 09:06 VTS_02_6.VOB
-rw-r--r-- 1 lana lana 232M Dez  6 09:07 VTS_02_7.VOB
lana@Buster:~/Videos/MeineDvdKopie/2/VIDEO_TS$ 

Titelset mit dvdauthor erstellen

Die benötigten Daten sind nun kopiert aber auf keinem Player abspielbar. Die fehlenden Dateien sind quasi das Telefonbuch in dem steht was wohin gehört. Diese Dateien können mit dvdauthor erstellt werden.
Quell- und Zielverzeichnis können nicht identisch sein, aber auf der selben Platte liegen.

lana@Buster:~/Videos/MeineDvdKopie/2/VIDEO_TS$ cd ~/Videos
lana@Buster:~/Videos$ mkdir MeinFilm

dvdauthor -t -o <AUSGABEVERZEICHNIS> <EINGABEVERZEICHNIS>

lana@Buster:~/Videos$ dvdauthor -t -o MeinFilm/ MeineDvdKopie/2/VIDEO_TS/*.VOB

Jetzt passiert eine ganze Menge mit echt viel Output. Irgendwann ist der Vorgang abgeschlossen. Danach in das Ausgabeverzeichinis wechseln. Der Vorgang erstellt nund auch gleich die DVD-typische Verzeichnisstruktur.

lana@Buster:~/Videos$ cd MeinFilm/VIDEO_TS/
lana@Buster:~/Videos/MeinFilm/VIDEO_TS$ ls -lah
insgesamt 6,3G
drwxr-xr-x 2 lana lana 4,0K Dez  6 11:24 .
drwxr-xr-x 4 lana lana 4,0K Dez  6 11:22 ..
-rw-r--r-- 1 lana lana  66K Dez  6 11:24 VTS_01_0.BUP
-rw-r--r-- 1 lana lana  66K Dez  6 11:24 VTS_01_0.IFO
-rw-r--r-- 1 lana lana 1,0G Dez  6 11:24 VTS_01_1.VOB
-rw-r--r-- 1 lana lana 1,0G Dez  6 11:24 VTS_01_2.VOB
-rw-r--r-- 1 lana lana 1,0G Dez  6 11:24 VTS_01_3.VOB
-rw-r--r-- 1 lana lana 1,0G Dez  6 11:24 VTS_01_4.VOB
-rw-r--r-- 1 lana lana 1,0G Dez  6 11:25 VTS_01_5.VOB
-rw-r--r-- 1 lana lana 1,0G Dez  6 11:25 VTS_01_6.VOB
-rw-r--r-- 1 lana lana 230M Dez  6 11:25 VTS_01_7.VOB
lana@Buster:~/Videos/MeinFilm/VIDEO_TS$ 

Der letzte Schritt erstellt das „Telefonbuch“:

lana@Buster:~/Videos/MeinFilm/VIDEO_TS$ dvdauthor -o ~/Videos/MeinFilm -T
DVDAuthor::dvdauthor, version 0.7.2.
Build options: gnugetopt iconv freetype fribidi fontconfig
Send bug reports to <dvdauthor-users@lists.sourceforge.net>
 
INFO: default video format is PAL
INFO: dvdauthor creating table of contents
INFO: Scanning /home/lana/Videos/MeinFilm/VIDEO_TS/VTS_01_0.IFO
 
lana@Buster:~/Videos/MeinFilm/VIDEO_TS$ ll
insgesamt 6,3G
drwxr-xr-x 2 lana lana 4,0K Dez  6 11:32 .
drwxr-xr-x 4 lana lana 4,0K Dez  6 11:22 ..
-rw-r--r-- 1 lana lana 6,0K Dez  6 11:32 VIDEO_TS.BUP
-rw-r--r-- 1 lana lana 6,0K Dez  6 11:32 VIDEO_TS.IFO
-rw-r--r-- 1 lana lana  66K Dez  6 11:24 VTS_01_0.BUP
-rw-r--r-- 1 lana lana  66K Dez  6 11:24 VTS_01_0.IFO
-rw-r--r-- 1 lana lana 1,0G Dez  6 11:24 VTS_01_1.VOB
-rw-r--r-- 1 lana lana 1,0G Dez  6 11:24 VTS_01_2.VOB
-rw-r--r-- 1 lana lana 1,0G Dez  6 11:24 VTS_01_3.VOB
-rw-r--r-- 1 lana lana 1,0G Dez  6 11:24 VTS_01_4.VOB
-rw-r--r-- 1 lana lana 1,0G Dez  6 11:25 VTS_01_5.VOB
-rw-r--r-- 1 lana lana 1,0G Dez  6 11:25 VTS_01_6.VOB
-rw-r--r-- 1 lana lana 230M Dez  6 11:25 VTS_01_7.VOB
lana@Buster:~/Videos/MeinFilm/VIDEO_TS$ du -sh
6,3G	.
lana@Buster:~/Videos/MeinFilm/VIDEO_TS$

-o <AUSGABEVERZEICHNIS>
-T Erstellt die Inhaltsangabe, das Telefonbuch
-t Erstellt das sog. Titleset
Wie die Ausgabe von du erkennen lässt, passt der Inhalt so nicht auf einen DVD5 Rohling. Es gibt noch DVD9 Rohlinge mit 8.5GB, die sind aber teuer, das Brennen nicht immer erfolgreich, die Kompatibilität mit Playern oft dürftig.
dvdauthor kann noch viel viel mehr und ist die Grundlage eines jeden anderen (grafischen) Programms, welches sich mit DVD-Authoring beschäftigt.

DVD to MKV

Zuerst muss die Video DVD wie hier unter dvd-kopieren beschrieben auf die Festplatte kopiert werden.
MKV kann keine DVD Menüs abbilden, es ist ratsam nur den Hauptfilm zu kopieren.

Es gibt zwei Möglichkeiten weiter zu machen:

  1. Alle kopierten DVD Datein (Audio + Video) → MKV
  2. Nur Video + Tonspur (deu) + Subs → MKV

Alle DVD Daten -> MKV

Das ist recht einfach:

lana@Buster:~/Videos/MeinFilm/VIDEO_TS$ mkvmerge --title "Misery" -o DVD2MKV.mkv '(' *.VOB ')'
mkvmerge v31.0.0 ('Dolores In A Shoestand') 64-bit
»VTS_01_1.VOB«: Der Demultiplexer für das folgende Format wird benutzt: »MPEG-Programmdatenstrom«.
»VTS_01_1.VOB«: Auch die folgenden Dateien werden verarbeitet: "VTS_01_2.VOB", "VTS_01_3.VOB", "VTS_01_4.VOB", "VTS_01_5.VOB", "VTS_01_6.VOB", "VTS_01_7.VOB"
»VTS_01_1.VOB« Spur 0: Das Ausgabemodul für das folgende Format wird benutzt: »MPEG-1/2«.
»VTS_01_1.VOB« Spur 1: Das Ausgabemodul für das folgende Format wird benutzt: »AC-3«.
»VTS_01_1.VOB« Spur 2: Das Ausgabemodul für das folgende Format wird benutzt: »AC-3«.
»VTS_01_1.VOB« Spur 3: Das Ausgabemodul für das folgende Format wird benutzt: »AC-3«.
»VTS_01_1.VOB« Spur 4: Das Ausgabemodul für das folgende Format wird benutzt: »AC-3«.
»VTS_01_1.VOB« Spur 5: Das Ausgabemodul für das folgende Format wird benutzt: »AC-3«.
Die Datei »DVD2MKV.mkv« wurde zum Schreiben geöffnet.
Warnung: »VTS_01_1.VOB« Spur 1: Diese Audiospur enthält 576 Bytes ungültiger Daten vor Zeitstempel 00:16:32.896000000, die ausgelassen wurden. Die Audio-/Videosynchronisation könnte dadurch beeinträchtigt worden sein.
Warnung: »VTS_01_1.VOB« Spur 2: Diese Audiospur enthält 576 Bytes ungültiger Daten vor Zeitstempel 00:16:32.896000000, die ausgelassen wurden. Die Audio-/Videosynchronisation könnte dadurch beeinträchtigt worden sein.
...
Warnung: »VTS_01_1.VOB« Spur 5: Diese Audiospur enthält 384 Bytes ungültiger Daten vor Zeitstempel 01:39:26.880000000, die ausgelassen wurden. Die Audio-/Videosynchronisation könnte dadurch beeinträchtigt worden sein.
Warnung: »VTS_01_1.VOB« Spur 1: Diese Audiospur enthält 384 Bytes ungültiger Daten vor Zeitstempel 01:39:26.944000000, die ausgelassen wurden. Die Audio-/Videosynchronisation könnte dadurch beeinträchtigt worden sein.
Fortschritt: 100%
Die Cue-Einträge (der Index) werden geschrieben …
Das Multiplexen dauerte 45 Sekunden.

Fügt alle .VOB Dateien nahtlos in einem MKV-Container zusammen. Trotz der Meldungen ist das Ergebnis, nach Sichtung, synchron.

Video + Ton + Subs

VOB Dateien sind Kompatibilitätsgründen normalerweise nur 1GB groß und auch nur Container. Der erste Schritt ist alle VOB Dateien in eine große VOB Datei zusammen zu fassen

lana@Buster:~/Videos/MeinFilm/VIDEO_TS$ cat *.VOB > content.vob; ls -lah
insgesamt 13G
drwxr-xr-x 2 lana lana 4,0K Dez  6 12:07 .
drwxr-xr-x 4 lana lana 4,0K Dez  6 11:22 ..
-rw-r--r-- 1 lana lana 6,3G Dez  6 12:08 content.vob
-rw-r--r-- 1 lana lana 6,0K Dez  6 11:32 VIDEO_TS.BUP
-rw-r--r-- 1 lana lana 6,0K Dez  6 11:32 VIDEO_TS.IFO
-rw-r--r-- 1 lana lana  66K Dez  6 11:24 VTS_01_0.BUP
-rw-r--r-- 1 lana lana  66K Dez  6 11:24 VTS_01_0.IFO
-rw-r--r-- 1 lana lana 1,0G Dez  6 11:24 VTS_01_1.VOB
-rw-r--r-- 1 lana lana 1,0G Dez  6 11:24 VTS_01_2.VOB
-rw-r--r-- 1 lana lana 1,0G Dez  6 11:24 VTS_01_3.VOB
-rw-r--r-- 1 lana lana 1,0G Dez  6 11:24 VTS_01_4.VOB
-rw-r--r-- 1 lana lana 1,0G Dez  6 11:25 VTS_01_5.VOB
-rw-r--r-- 1 lana lana 1,0G Dez  6 11:25 VTS_01_6.VOB
-rw-r--r-- 1 lana lana 230M Dez  6 11:25 VTS_01_7.VOB
<code>
 
===VOB analysieren===
Normalerweise liegen die Spurinformationen ganz oben in der Datei. Aber manche sind auch etwas tiefer vergraben um diese zu finden brauchen wir noch die Flags -analyzeduration (in microseconds) und -probesize (in bytes).
<code bash>
lana@Buster:~/Videos/MeinFilm/VIDEO_TS$ ffmpeg -analyzeduration 100M -probesize 100M -i content.vob
ffmpeg version 4.1.4-1~deb10u1 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 8 (Debian 8.3.0-6)
Input #0, mpeg, from 'content.vob':
  Duration: 00:03:44.08, start: 0.280000, bitrate: 238592 kb/s
    Stream #0:0[0x1bf]: Data: dvd_nav_packet
    Stream #0:1[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, bt470bg, progressive), 720x576 [SAR 16:15 DAR 4:3], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:2[0x20]: Subtitle: dvd_subtitle
    Stream #0:3[0x80]: Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
    Stream #0:4[0x81]: Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
    Stream #0:5[0x82]: Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
    Stream #0:6[0x83]: Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
    Stream #0:7[0x84]: Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
    Stream #0:8[0x21]: Subtitle: dvd_subtitle
    Stream #0:9[0x22]: Subtitle: dvd_subtitle
    Stream #0:10[0x23]: Subtitle: dvd_subtitle
    Stream #0:11[0x24]: Subtitle: dvd_subtitle
    Stream #0:12[0x25]: Subtitle: dvd_subtitle
    Stream #0:13[0x26]: Subtitle: dvd_subtitle
    Stream #0:14[0x27]: Subtitle: dvd_subtitle
    Stream #0:15[0x28]: Subtitle: dvd_subtitle
    Stream #0:16[0x29]: Subtitle: dvd_subtitle
At least one output file must be specified
lana@Buster:~/Videos/MeinFilm/VIDEO_TS$ 

Wir sehen nun alle enthaltenen Streams, dummerweise ist es nicht klar welches die gewollte deutsche Tonspur ist.

  1. DVD anspielen (VLC Player)
    • Menü: Audio → Audiospur - Wenn es hier mehrere Titel gibt (Titel 1, Titel 2 … Titel 5) dann entspricht Titel 1 dem Stream [0x80], Titel 2 [0x81] usw.
    • Wenn man die deutsche Spur gefunden hat, in diesem Fall ist es Titel 2, dann ist der Fall klar.
  2. Genauso verhält es sich auch bei den Subtitles, raus suchen durch Anspielen der Kombinationen Tonspur/Subtitles was gebraucht wird und merken.
    • * Menü: Untertitel → Untertitelspur - Wenn es hier mehrere Titel gibt (Subtitel 1, Subtitel 2 …) dann entspricht Subtitel 1 dem Stream [0x21], Subtitel 2 [0x22].

MKV erstellen

Jetzt werden die benötigten Streams in einem MKV Container zusammengeführt und die nichtssagenden Audio/Subtitel-Namen aufgehübscht.
Der Backslash am Ende der Zeilen ermöglicht es den langen Befehl umzubrechen, kann aber so als Block in die Shell kopiert werden.

ffmpeg -analyzeduration 100M -probesize 100M -i content.vob \
  -map 0:1 -map 0:4 -map 0:8 -map 0:9 \
  -metadata:s:a:0 language=deu -metadata:s:a:0 title="Deutsch" \
  -metadata:s:s:0 language=eng -metadata:s:s:0 title="English" \
  -metadata:s:s:1 language=deu -metadata:s:s:1 title="Deutsch" \
  -vcodec copy \
  -acodec copy \
  -scodec copy \
  AUSGABE.mkv

-analyzeduration 100M -probesize 100M - tiefere Suche nach Streams
-i content.vob - Das Inputfile
-map 0:1 -map 0:4 -map 0:8 -map 0:9 - die ausgesuchten Stream Video 0:1, Audio 0:4 und Subtitel 0:8 und 0:9 werden verarbeitet
-metadata[…] - macht die nichtssagenden Namen wie „Titel“ etwas hübscher. Audiotracks (s:a:0, wobei a für Audio steht) und Untertitel (s:s:0 und s:s:1 wobei s für Subtitle steht)
-vcodec copy - übernimmt den Videocodec 1:1
-acodec copy - übernimmt den Audiocodec 1:1
-scodec copy - übernimmt die Subtitel wie sie sind.
AUSGABE.mkv - Die fertige Ausgabedatei

Solltest Du jetzt eine Fehlermeldung Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly erhalten dann füge direkt nach ffmpeg noch -fflags +genpts ein: ffmpeg -fflags +genpts …. Die Generierung der Ausgabedatei dürfte nun deutlich länger dauern.

BluRay to MKV

Hier habe ich noch keinen funktionierenden Weg gefunden um das auf der Kommandozeile mit Boardmitteln in einfachen Schritten zu lösen. An dieser Stelle möchte ich auf den Punkt dvd-bd-mkv-kommerzielle-software verweisen.

MKV to DVD

Manchmal braucht es auch den Weg rückwärts…
Das Universalwerkzeug heißt hier ffmpeg, solange ffmpeg das Format unterstützt.

ffmpeg: mkv ⇒ mpg

Zum Ausprobieren habe ich mal die Folge einer Fernsehseherie genommen, die in HD ausgestrahlt wurde.
ffmpeg -i <INPUTFILE> -target pal-dvd <ZIEL.mpg>. Das Verzeichnis test habe ich angelegt um das mpg-File abzulegen.

lana@Buster:~/Videos$ ffmpeg -i 0101-Jeder_traegt_seine_Buerde.mkv -target pal-dvd test/dvd.mpg
...
Input #0, matroska,webm, from '0101-Jeder_traegt_seine_Buerde.mkv':
  Metadata:
    title           : Aquarius 0101 - Jeder traegt seine Buerde
    ENCODER         : Lavf58.20.100
  Duration: 00:44:12.42, start: 0.000000, bitrate: 6064 kb/s
    Stream #0:0(deu): Audio: ac3, 48000 Hz, 5.1(side), fltp, 384 kb/s (default)
    Metadata:
      DURATION        : 00:44:12.416000000
    Stream #0:1: Video: h264 (High), yuv420p(tv, bt709, top first), 1920x1080 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 1k tbn, 50 tbc (default)
    Metadata:
      DURATION        : 00:44:12.360000000
Stream mapping:
  Stream #0:1 -> #0:0 (h264 (native) -> mpeg2video (native))
  Stream #0:0 -> #0:1 (ac3 (native) -> ac3 (native))
...
Output #0, dvd, to 'test/dvd.mpg':
  Metadata:
    title           : Aquarius 0101 - Jeder traegt seine Buerde
    encoder         : Lavf58.20.100
    Stream #0:0: Video: mpeg2video (Main), yuv420p, 720x576 [SAR 64:45 DAR 16:9], q=2-31, 6000 kb/s, 25 fps, 90k tbn, 25 tbc (default)
    Metadata:
      DURATION        : 00:44:12.360000000
      encoder         : Lavc58.35.100 mpeg2video
    Side data:
      cpb: bitrate max/min/avg: 9000000/0/6000000 buffer size: 1835008 vbv_delay: -1
    Stream #0:1(deu): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s (default)
    Metadata:
      DURATION        : 00:44:12.416000000
      encoder         : Lavc58.35.100 ac3
frame=66309 fps=205 q=2.0 Lsize=  813432kB time=00:44:12.41 bitrate=2512.3kbits/s speed=8.22x    
video:644535kB audio:145049kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 3.020387%

Und Schwups wurden aus knapp 2GB nur noch 795MB und die vorhandenen Kapitelmarken sind auch weg :-(

DVD Authoring mit dvdauthor

Ein mpg-File macht noch keine DVD aus. Jetzt muss dvdauthor ran. Zuerst habe ich mir noch ein Verzeichnis für den Output angelegt:

lana@Buster:~/Videos$ mkdir testdvd
lana@Buster:~/Videos$ dvdauthor -o testdvd/ -t -c '00:08:00,00:16:00,00:24:00,00:32:00,00:40:00' test/dvd.mpg 
DVDAuthor::dvdauthor, version 0.7.2.
Build options: gnugetopt iconv freetype fribidi fontconfig
Send bug reports to <dvdauthor-users@lists.sourceforge.net>
 
INFO: default video format is PAL
INFO: dvdauthor creating VTS
WARN: First cell is not marked as a chapter in PGC 0, setting chapter flag
STAT: Picking VTS 01
 
STAT: Processing test/dvd.mpg...
STAT: VOBU 4352 at 788MB, 1 PGCs
INFO: Video pts = 0.540 .. 2652.900
INFO: Audio[0] pts = 0.630 .. 2652.950
STAT: VOBU 4365 at 794MB, 1 PGCs
CHAPTERS: VTS[1/1] 0.000
CHAPTERS: VTS[1/1] 479.760
CHAPTERS: VTS[1/1] 960.080
CHAPTERS: VTS[1/1] 1440.200
CHAPTERS: VTS[1/1] 1919.760
CHAPTERS: VTS[1/1] 2400.080
INFO: Generating VTS with the following video attributes:
INFO: MPEG version: mpeg2
INFO: TV standard: pal
INFO: Aspect ratio: 16:9
INFO: Resolution: 720x576
INFO: Audio ch 0 format: ac3/6ch,  48khz drc
 
STAT: fixed 4365 VOBUs                     

-c im Format \'hh:mm:ss\', auch als kommaseparierte Liste erzeugt die Kapitelmarken. Wer keine Kapitel will kann -c \'…\' einfach weg lassen. Ein Blick in testdvd zeigt uns, daß dvdauthor eine DVD-Verzeichnisstruktur angelegt hat:

lana@Buster:~/Videos$ ls -lah testdvd/
insgesamt 16K
drwxr-xr-x 4 lana lana 4,0K Dez  9 13:08 .
drwxr-xr-x 6 lana lana 4,0K Dez  9 13:08 ..
drwxr-xr-x 2 lana lana 4,0K Dez  9 13:08 AUDIO_TS
drwxr-xr-x 2 lana lana 4,0K Dez  9 13:08 VIDEO_TS
lana@Buster:~/Videos$ ls -lah testdvd/VIDEO_TS/
insgesamt 795M
drwxr-xr-x 2 lana lana 4,0K Dez  9 13:08 .
drwxr-xr-x 4 lana lana 4,0K Dez  9 13:08 ..
-rw-r--r-- 1 lana lana  32K Dez  9 13:08 VTS_01_0.BUP
-rw-r--r-- 1 lana lana  32K Dez  9 13:08 VTS_01_0.IFO
-rw-r--r-- 1 lana lana 795M Dez  9 13:08 VTS_01_1.VOB
 
lana@Buster:~/Videos$ export VIDEO_FORMAT=PAL 
lana@Buster:~/Videos$ dvdauthor -o testdvd/ -T
DVDAuthor::dvdauthor, version 0.7.2.
Build options: gnugetopt iconv freetype fribidi fontconfig
Send bug reports to <dvdauthor-users@lists.sourceforge.net>
 
INFO: default video format is PAL
INFO: dvdauthor creating table of contents
INFO: Scanning testdvd/VIDEO_TS/VTS_01_0.IFO
 
lana@Buster:~/Videos$ ll testdvd/VIDEO_TS/
insgesamt 795M
drwxr-xr-x 2 lana lana 4,0K Dez  9 13:14 .
drwxr-xr-x 4 lana lana 4,0K Dez  9 13:08 ..
-rw-r--r-- 1 lana lana 6,0K Dez  9 13:14 VIDEO_TS.BUP
-rw-r--r-- 1 lana lana 6,0K Dez  9 13:14 VIDEO_TS.IFO
-rw-r--r-- 1 lana lana  32K Dez  9 13:08 VTS_01_0.BUP
-rw-r--r-- 1 lana lana  32K Dez  9 13:08 VTS_01_0.IFO
-rw-r--r-- 1 lana lana 795M Dez  9 13:08 VTS_01_1.VOB

Im zweiten Schritt wurde mit -T noch das TOC (Table Of Content) File VIDEO_TS angelegt. Der VLC Player beschwert sich nicht und spielt die „DVD“ klaglos ab. Das Ganze funktioniert analog auch mit größeren Quelldateien. Beim Authoring mit dvdauthor wird das Quellmaterial (mpg) automatisch in die DVD-typsichen 1GB großen VOB Dateien zerlegt.

Videomaterial splitten/schneiden

Manchmal macht es Sinn selbst aufgenommenes Videomaterial von lästiger Werbung oder ähnlichem zu befreien. Dazu eignet sich das Universaltool ffmpeg, das mit so ziemlich jedem Videocontainer zurecht kommt, oder aber auch, wenn es schon MKV Container sind, eben mkvmerge.

Schnitt mit ffmpeg

ffmpeg -fflags +genpts -i <INPUTDATEI> -ss 0 -t 00:42:40 -c copy <OUTPUTDATEI>

Alternativ kann statt der HH:MM:SS.nnnn Angabe auch eine Anzahl von Sekunden angegeben werden, z.B. 2560 → 00:42:40 ;-) -fflags +genpts: Fixt Timestamps um unsynchrone Ton/Videospuren vorzubeugen -i: Input/Quelle -ss: Springt in der Quelle an Stelle 00:00:00.0000 -t: time, definiert die Länge des zu kopierenden Streams. Hier 00:42:40.0000 (HH:MM:SS.nnnn) -c copy: ist in neueren Versionen ein Äquivalent zur veralteten Schreibweise -vcodec: copy -acodec: copy - scodec: copy oder der moderneren -a:c -s:c -v:c Schreibweise.

Schnitt mit mkvmerge

Wenn die Quelldatei schon ein MKV Container ist, bietet sich das Tool mkvmerge aus dem Tookit mkvtoolnix an. Das Tool erstellt immer zwei Dateien. Die erste, wenn nicht anders angegeben, von 00:00:00.0000 bis zum gewünschten Schnittpunkt 00:42:40.0000. Und danach eine weitere Datei beginnend mit 00:42:40.0000 bis zum Ende.

mkvmerge -o <AUSGABE.mkv> --split duration:00:42:40.0000 <QUELLE.mkv>

Eine weitere Möglichkeit ist statt duration: den Schalter parts: zu verwenden. Der Vorteil liegt hier in nur einer resultierenden Datei. Die Zeitstempel welche unter parts: angegeben werden, definieren das zu behaltende Material, während das andere verworfen wird.

mkvmerge -o <AUSGABE.mkv> --split parts:00:00:00.0000-00:42:40.0000 <QUELLE.mkv>

Backup mit dd (diskdump)

Ein mächtiges Tool ist auch dd, es sollte auf jedem Linuxsystem zu Standardausstattung durch die GNUCoreUtils dabei und vorinstalliert sein. Mit dd kann man Festplatten oder andere Medien Bit-genau kopieren. Bit- bzw. Byte-genau bedeutet das Medien unabhängig ihres Inhalts ausgelesen und auf einem anderen Medium gespeichert werden können. Warum nicht auch eine DVD oder BluRay? Allerdings nur komplett mit allen (ungewollten) Features.
Es kann passieren das dd bei geschütztem Material auch die Flügel streckt, hier hat es schon geholfen das Medium mit einem normalen Softwareplayer anzuspielen. Nachdem ihr euer DVD/BD-Laufwerk wie schon weiter oben beschrieben gemountet habt ist der Befehl recht simpel dd if=<INPUT> of=<OUTPUT>. Angenommen das optische Laufwerk ist dev/sr0 oder unter dvdrom gemountet und ihr wollt eine ISO oder ein IMG erstellen dann sieht das so aus dd if=/dev/sr0 of=MeineKopie.iso.

DVD/BD nach MKV (kommerzielle Software)

Eine Plattformübergreifende kommerzielle Lösung die zu einem Konsolenprogramm eine leicht zu bedienende übersichtliche GUI mitbringt ist MakeMKV.
Das Programm muss für Linux aus den Quellen selbst kompilliert werden. Eine detaillierte Anleitug dazu findet man ebenfalls auf der Downloadseite, die Bedienung der grafischen Oberfläche ist selbsterklärend. MakeMKV ist Shareware und während der Betaphase kostenlos zu erhalten. Nach Ablauf der Testphase ist man gerne bereit dafür zu bezahlen :-)

An dieser Stelle möchte ich mich auch mal bei allen Entwicklern und Mitwirkenden die hauptberuflich oder nebenbei in der Freizeit die Linux-OpenSource Szene am Leben halten, ihre Freizeit opfern, Pakete Pflegen, Distributionen zusammenstellen usw. usf. bedanken. Ihr macht einen tollen Job!

lin_videovoodoo.txt · Zuletzt geändert: 22.05.2020 09:22 von radirgummir

Seiten-Werkzeuge