Я должен признать, что не знал, что на самом деле означало 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 выбирает параметры макета по умолчанию, чтобы субтитры появлялись в нижней части видео.