Поддержка 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" делает свое дело.