VOB-Bearbeitung mit FFMPEG

Ich habe gelesen, dass es besser ist, aus VOB-H264-Dateien innerhalb einer .ts-Datei zu extrahieren, um ein verlustfreies und genaueres Beispiel zu erhalten, das sich leicht schneiden lässt. Ist das richtig?

Ich habe diese Befehle verwendet:

ffmpeg -i VTS_01_1.VOB  -acodec libfaac -aq 100 -ac 2 -vol 2048 -vcodec libx264 -preset veryslow -crf 18 -threads 2 manu1.mp4

ffmpeg -i manu1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate1.ts

Ich habe mit dieser Art von Befehl zwei Videobeispiele aus der .ts-Zwischendatei extrahiert:

ffmpeg -ss 43 -i intermediate1.ts -vcodec copy -vframes 1400 -acodec copy 1-manubus.ts

wenn ich diese .ts dateien einzeln in vlc abspiele, werden sie beide komplett dekodiert, es fehlen keine frames

Abschluss :

ffmpeg -analyzeduration 200M -probesize 150M -i "concat:1-manubus.ts|2-manuchoisit.ts" -c:v libx264 -crf 18 -preset slow -bsf:a aac_adtstoasc -force_key_frames 0 1990-Manu_Redpants.mp4 

Aber dann, wenn ich die letzte Datei abspiele, sind die ersten 6 Sekunden ein eingefrorenes Bild und dann kommen die Audio- und Videostreams bis zum Ende perfekt synchron. Wenn ich den ersten Teil 1-manubus.ts spiele, sind die 6 ersten Sekunden vorhanden und fehlen nicht, was passiert ? Etwas, das damit zusammenhängt, dass der erste Frame nicht die I-Frames sind?

Bitte geben Sie die vollständige Konsolenausgabe von jedem Befehl an.

Antworten (2)

Im ersten Schritt führen Sie eine verlustbehaftete Konvertierung durch, Sie transkodieren von vob nach mp4 und dann nach ts. Für einen verlustfreien Re-Mux sollten Sie einfach Re-Muxen, besser um sowohl Video als auch Audio anzugeben:

ffmpeg -i VTS_01_1.VOB -c:v copy -c:a copy -bsf:v h264_mp4toannexb -f mpegts intermediate1.ts

Wenn Sie jedoch zum Zweck des Slicens erneut muxen, sollten Sie sich darüber im Klaren sein, dass dies mit dieser Methode nur an der exakten Keyframe-Grenze möglich ist. Sie sollten sich also noch einmal überlegen, ob Sie dies auf diese Weise tun möchten. Eine ausführliche Erklärung finden Sie in dieser Antwort .

Nachdem ich Ihren interessanten Artikellink gelesen habe und die Auszüge präzise schneiden möchte, verstehe ich, dass ich -ss nach dem -i input_file.mp4 hätte platzieren sollen, und dies wird besonders langsam sein, bestätigen Sie das?
Ja, die Transcodierung erfordert mehr Zeit und auch einen gewissen Qualitätsverlust, gibt Ihnen aber eine bessere Kontrolle über das Ergebnis. Wenn Sie einen präzisen Schnitt wünschen, sollten Sie mit der ursprünglichen VOB-Datei arbeiten, indem Sie -ss und -t vor die Ausgabedatei setzen (in Ihrem Fall sieht es genauso aus wie nach der Eingabedatei, aber um genau zu sein, wollen wir das Überspringen während der Ausgabe erfolgen). Sie sollten TS-Dateien generieren, damit Sie während der Verkettung nicht transcodieren. Sobald Sie alle Ihre Segmente haben, können Sie sie zusammenführen und den zusammengeführten Film ohne zusätzliche Transcodierung in die endgültige mp4-Datei muxen.
Sie erhalten bessere Ergebnisse (Vermeidung von Zeitstempel-/AV-Sync-Störungen), indem Sie DVD-Tools verwenden, um eine .ts-Datei aus einer Sammlung von .VOB/.IFO-Dateien zu erhalten. Wie mplayer -dumpfile title1.ts -dvd-device /path/to/the/dir dvd://1ich denke. Ich habe vergessen, welchen Befehl ich dafür verwendet habe. >.<
Ich habe den Befehl gefunden, den ich zuvor zum Speichern einer .ts-Datei für einen DVD-Titel verwendet habe: tccat, aus dem transcodePaket. Sollte äquivalent zu allem sein, was sich mit DVD-Strukturen auskennt und nicht nur direkt auf die VOBs zugreift.

Ich habe es endlich geschafft, die VOB-Dateien mit den folgenden Befehlen direkt zu spleißen:

ffmpeg -i VTS_01_2.VOB -ss 463 -c copy -vframes 325 2-manuchoisit.vob

ffmpeg -i VTS_01_2.VOB -ss 353 -t 16 -c copy 3-manutombe.vob

und dann die extrakte konkatieren und mit umwandeln

ffmpeg -analyzeduration 200M -probesize 150M -i "concat:1-manubus.vob|2-manuchoisit.vob|3-manutombe.vob" -vcodec libx264 -preset veryslow -crf 18 -acodec libfaac -aq 100 -ac 2 -vol 2048 1990-Manu_Redpants.mp4

Kein Bildverlust, präzise Schnitte.