
Ich habe eine .mov
Datei mit mov_text
-formatierten Untertitelspuren, die mit der alten (mittlerweile veralteten) Funktion „Textspur“ von QuickTime 7 Pro erstellt wurden. Folgendes ffmpeg -i myfile.mov
verrät mir etwas über sie:
Stream #0:4(eng): Subtitle: mov_text (text / 0x74786574), 640x116, 0 kb/s (default)
Metadata:
rotate : 0
creation_time : 2021-11-20T03:08:45.000000Z
handler_name : Apple Text Media Handler
Derzeit habe ich noch Zugriff auf QuickTime 7 Pro, wo ich die Untertitel extrahieren und dann in SubRip oder ein anderes Format konvertieren kann, das von anderen Programmen gelesen werden kann. Ich muss jedoch mein System aktualisieren und QuickTime 7 Pro läuft nicht unter macOS Catalina und höher. Daher suche ich nach einer Möglichkeit, auf neueren Systemen weiterhin auf diese Untertitel zugreifen zu können. Das scheint ffmpeg
der richtige Weg zu sein, aber ich stecke immer noch fest.
Folgendes habe ich versucht:
ffmpeg -i test.mov -map 0:s:0 -c copy -f data QT-subtitles.txt
gibt mir den Klartext der Untertitel, aber ohne Zeitstempel, also ist es für die Konvertierung der Untertitel in ein anderes Format ziemlich nutzlos.
ffmpeg -i test.mov -map 0:s:0 QT-subtitles.srt
konvertiert die Untertitel korrekt in SubRip, einschließlich Zeitstempel. Dabei werden jedoch Zeilenumbrüche und andere Formatierungen entfernt.
Außerdem erhalte ich die folgenden Fehlermeldungen, dass ungültige Daten gefunden wurden:
Stream mapping:
Stream #0:4 -> #0:0 (mov_text (native) -> subrip (srt))
Press [q] to stop, [?] for help
[mov_text @ 0x7fa492823200] invalid UTF-8 byte in subtitle
[mov_text @ 0x7fa492823200] Invalid UTF-8 in decoded subtitles text; maybe missing -sub_charenc option
Error while decoding stream #0:4: Invalid data found when processing input
[mov_text @ 0x7fa492823200] invalid UTF-8 byte in subtitle
[mov_text @ 0x7fa492823200] Invalid UTF-8 in decoded subtitles text; maybe missing -sub_charenc option
Error while decoding stream #0:4: Invalid data found when processing input
size= 6kB time=00:02:04.30 bitrate= 0.4kbits/s speed=3.32e+04x
video:0kB audio:0kB subtitle:3kB other streams:0kB global headers:0kB muxing overhead: 82.697044%
Vorschläge aus den Kommentaren unten zum Spezifizieren -c text
oder -sub_charenc
alle führen bei mir zu den gleichen Ergebnissen.
Ich hoffe also, einen Weg zu finden, den Untertitel in eine einfache Textdatei zu extrahieren, die entweder immer noch QTText-formatiert ist (siehe unten) oder auf andere Weise Zeilenumbrüche und andere Formatierungen beibehält. So sieht der ursprüngliche QuickTime-Texttrack als Textdatei aus, wenn ich ihn mit QuickTime 7 Pro extrahiere und exportiere (siehe Spezifikationen)Hier).
{QTtext}{font:Verdana}{plain}{size:36}{textColor: 65535, 65535, 65535}{backColor: 0, 0, 0}{justify:default}{timeScale:30}{width:640}{height:116}{timeStamps:absolute}{language:0}{textEncoding:0}
[00:00:00.00]
Text here {bold} bold word {plain} text here
[00:00:01.12]
Text here text here text here
Next line here (respects spaces)
[00:00:02.14]
Ich könnte dann einfach ein Skript schreiben, um die Formatierungs-Tags wie {bold}
usw. in HTML-Tags umzuwandeln, was SubRip, glaube ich, versteht.
Gibt es eine andere Möglichkeit, das Ausgabeformat anzugeben, ffmpeg
als es anhand der Dateierweiterung wie srt
oder erraten zu lassen, was ich brauche txt
? (Ich denke insbesondere daran, dass ich, wenn ich als Ausgabe angeben könnte, mov_text
möglicherweise eine QTText-formatierte Datei wie die oben stehende erhalten würde ... aber wie würde ich das machen?)
Wenn ffmpeg
das für die Arbeit nicht funktioniert, probiere ich gern andere Werkzeuge aus.
Antwort1
Wenn Sie die mov_text-Untertitel gerne in etwas anderes transkodieren möchten (z. B. Subrip SRT-Dateien), können Sie Folgendes versuchen:
ffmpeg -i test.mov -map 0:s:0 -c:s srt subtitles.srt