Wie extrahiere ich eine QuickTime-Textspur mit FFMPEG?

393
watkipet

Ich habe einen .movContainer mit einer QuickTime-Textspur, mit der QuickTime Kapitelmarkierungen anzeigt. Im QuickTime 7 Pro-Benutzerhandbuch finden Sie die Beschreibung dazu unter Bearbeiten und Erstellen mit QuickTime Pro -> Ändern der Filmeigenschaften -> Erstellen einer Kapitelliste für einen Film. Ich werde nicht alle 20 Schritte hier setzen.

Ich möchte .movdie Textspur mit ffmpeg aus dem Container extrahieren . ffmpeg meldet diese Streams als in meinem Container vorhanden:

Chapter #0:0: start 0.000000, end 10.000000 Metadata: title : Chapter #0:1: start 10.000000, end 181.000000 Metadata: title : Course Objectives Chapter #0:2: start 181.000000, end 257.966667 Metadata: title : References Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv), 1280x720 [SAR 1:1 DAR 16:9], 1489 kb/s, 29.89 fps, 30 tbr, 3k tbn, 60 tbc (default) Metadata: rotate : 0 creation_time : 2012-08-11T01:00:09.000000Z handler_name : Apple Alias Data Handler Side data: displaymatrix: rotation of -0.00 degrees Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 191 kb/s (default) Metadata: rotate : 0 creation_time : 2012-08-11T01:00:09.000000Z handler_name : Apple Alias Data Handler Stream #0:2(eng): Data: bin_data (text / 0x74786574), 0 kb/s Metadata: rotate : 0 creation_time : 2012-08-11T01:00:09.000000Z handler_name : Apple Alias Data Handler 

Glaubt ffmpeg, dass jede Kapitelmarkierung ein eigener Stream ist? Mit welcher Art von mapAuswahl soll ich die Textspur auswählen? Wir haben vfür Video, sfür Untertitel usw., aber nichts für Kapitel.

Im Idealfall möchte ich die Kapitel im WebVTT-Format ausgeben. Soll ich nur meinen Ausgabedateinamen angeben out.webvtt?

Das Ablegen des Streams # 0: 2 mit ffmpeg -i input_movie.mov -map 0:d:0 -c copy -f data text.bineinigen Binärdaten liefert die obigen Kapitelnamen. Ich kann jedoch nicht die Zeitstempel in diesen Daten finden. Die Daten haben sicherlich nicht das gleiche Format wie die Textdatei, die ich als Eingabe verwendet habe. Hier ist die beste Interpretation, die ich finden könnte (durch Erstellen einer binären Vorlage für 010 Editor):

Binärer Daten-Dump

1
Wenn Sie den Stream # 0: 2 extrahieren möchten, verwenden Sie `ffmpeg -i in -map 0: d: 0 -c copy -f data data.bin` Gyan vor 5 Jahren 0

0 Antworten auf die Frage