Как извлечь текстовую дорожку QuickTime с помощью FFMPEG?

313
watkipet

У меня есть .movконтейнер с текстовой дорожкой QuickTime, которую QuickTime использует для отображения маркеров глав. В Руководстве пользователя QuickTime 7 Pro описание того, как это сделать, приведено в разделе «Редактирование и авторизация в QuickTime Pro» -> «Изменение свойств фильма» -> «Создание списка глав для фильма». Я не буду помещать все 20 шагов здесь.

Я хотел бы извлечь эту текстовую дорожку обратно из .movконтейнера с помощью ffmpeg. ffmpeg сообщает об этих потоках в моем контейнере:

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 

Считает ли ffmpeg, что каждый маркер главы - это собственный поток? Какой тип селектора мне следует использовать mapдля выбора текстовой дорожки? У нас есть vдля видео, sдля субтитров и т. Д., Но ничего для глав.

В идеале я хотел бы вывести главы в формате WebVTT. Должен ли я просто указать имя выходного файла как out.webvtt?

Сброс потока # 0: 2 с ffmpeg -i input_movie.mov -map 0:d:0 -c copy -f data text.binнекоторыми двоичными данными, которые содержат названия глав выше. Тем не менее, я не могу найти метки времени в этих данных. Данные, конечно, не в том же формате, что и текстовый файл, который я использовал для ввода. Вот лучшая интерпретация, которую я мог придумать (создав двоичный шаблон для 010 Editor):

Binary data dump

1
Если вы хотите извлечь поток # 0: 2, используйте `ffmpeg -i в -map 0: d: 0 -c copy -f data data.bin` Gyan 5 лет назад 0

0 ответов на вопрос