3

Я пытаюсь встроить субтитры в MP4 контрейнер, используя ffmpeg.

Я использую следующую команду:

ffmpeg -i input.MOV -i input.srt -map 0 -map 1 -c copy -c:s mov_text output.MOV

Я бы хотел, чтобы субтитры были закодированы как tx3g, а не как текст для совместимости с моим Video Streamer (Wowza).

Есть ли способ изменить кодировщик субтитров?

Спасибо!

2 ответа2

4

Я должен признать, что не знал, что на самом деле означало FourCC tx3g . Кодек FFmpeg mov_text и tx3g - это одно и то же: MPEG-4 Part 17 (Timed Text).

Единственное, что не поддерживает FFmpeg - это пользовательский стиль для текста, который он встраивает. Если вы посмотрите на исходный код, то обнаружите, что он применяет стиль по умолчанию:

Сейчас мы будем использовать фиксированный стиль по умолчанию. Когда мы добавим поддержку стилей, это будет сгенерировано из стиля ASS.

При этом свободный и кроссплатформенный MP4Box должен иметь возможность добавлять эти субтитры в файлы MP4, как вы и просили. Даже со стайлингом. То, как вы добавите их в файл, зависит от того, как они кодируются. Из его документации:

Официального текстового представления текстового потока не существует. Кроме того, спецификация опирается на знания IsoMedia для большинства структурных описаний. Чтобы помочь в создании текстовых потоков, в GPAC был разработан формат XML, называемый TTXT для timed-text - используемое расширение - .ttxt .

Чтобы создать файл TTXT, вы можете сделать следующее:

Найдите файл субтитров SRT или SUB и запустите MP4Box -ttxt file.srt . Это преобразует субтитры в формат TTXT.

Затем MP4Box должен иметь возможность добавлять поток субтитров в существующий файл MP4 следующим образом:

MP4Box -add input.mp4 -add subtitles.ttxt output.mp4

Важно, чтобы вы конвертировали файлы субтитров в TTXT раньше. Если они по-прежнему закодированы в SUB или SRT, MP4Box просто разместит их с параметрами по умолчанию:

При импорте файлов SRT или SUB MP4Box выбирает параметры макета по умолчанию, чтобы субтитры появлялись в нижней части видео.

1

Чистый метод ffmpeg для встраивания MacOS и iOS-совместимых субтитров в видео MP4:

ffmpeg -i input.MOV -i input.srt -c copy -c:s mov_text -tag:s:s:0 tx3g output.mov

"-Tag:s:s:0 tx3g" делает свое дело.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .