Поддержка ffmpeg для tx3g

Я пытаюсь встроить субтитры в 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 ответа

Решение

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

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

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

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

Официального текстового представления текстового потока не существует. Более того, спецификация опирается на знания IsoMedia для большинства структурных описаний. Чтобы помочь в создании текстовых потоков, в GPAC был разработан формат XML, называемый TTXT для синхронизированного текста - расширение используется .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 будет выбирать параметры макета по умолчанию, чтобы субтитры появлялись в нижней части видео.

Чистый метод 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" делает свое дело.

Другие вопросы по тегам