
У меня есть .mov
файл с mov_text
дорожками субтитров в формате -, созданными с помощью старой (теперь устаревшей) функции QuickTime 7 Pro "Text Track". Вот что ffmpeg -i myfile.mov
мне о них говорит:
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
В настоящее время у меня все еще есть доступ к QuickTime 7 Pro, где я могу извлечь субтитры, чтобы затем преобразовать их в SubRip или какой-либо другой формат, который могут читать другие программы. Однако мне нужно обновить систему, а QuickTime 7 Pro не работает на macOS Catalina и выше, поэтому я ищу способ иметь возможность по-прежнему получать доступ к этим субтитрам на более новых системах. Кажется, ffmpeg
это выход, но я все еще застрял.
Вот что я попробовал:
ffmpeg -i test.mov -map 0:s:0 -c copy -f data QT-subtitles.txt
дает мне простой текст субтитров, но без временных меток, поэтому он бесполезен для конвертации субтитров в другой формат.
ffmpeg -i test.mov -map 0:s:0 QT-subtitles.srt
правильно преобразует субтитры в SubRip, включая временные метки. Но он избавляется от переносов строк и другого форматирования.
Он также выдает мне следующие сообщения об ошибках с недопустимыми данными:
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%
Предложения из комментариев ниже по поводу конкретизации -c text
или -sub_charenc
все они дают мне одинаковые результаты.
Итак, я надеюсь найти способ извлечь субтитры в простой текстовый файл, который либо все еще отформатирован в QTText (см. ниже), либо каким-то другим способом сохраняет переносы строк и другое форматирование. Вот как выглядит исходная QuickTime Text Track в виде текстового файла, когда я извлекаю и экспортирую ее через QuickTime 7 Pro (см. спецификацииздесь).
{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]
Затем я мог бы просто написать скрипт для преобразования тегов форматирования, таких как {bold}
и т. д., в теги html, которые, как я полагаю, SubRip понимает.
Есть ли способ указать формат вывода, ffmpeg
кроме как угадывать, что мне нужно, по расширению файла, например, srt
или txt
? (Я думаю, в частности, что если бы я мог указать mov_text
формат вывода, то он мог бы выдать мне файл в формате QTText, как показано выше... но как это сделать?)
Если ffmpeg
не могу справиться с этой работой, я с радостью попробую любые другие инструменты.
решение1
Если вы готовы перекодировать субтитры mov_text во что-то другое (например, файлы Subrip SRT), вы можете попробовать следующее:
ffmpeg -i test.mov -map 0:s:0 -c:s srt subtitles.srt