Как «записать» дорожку субтитров в видеофайл mp4

Я хотел бы сделать файл субтитров частью видеофайла mp4, так что мне не нужно иметь дело с двумя отдельными файлами.

Я представляю два пути:

  • Сделайте субтитр неотъемлемой частью видео. Для этого потребуется повторное кодирование видео.
  • Сделайте субтитры отдельным потоком, но все же встроены в один и тот же видеофайл. Это гораздо предпочтительнее, особенно потому, что я могу отключить его (в отличие от другого подхода) или даже играть с типом / размером шрифта.

Как мне сделать что-то 2-го? Было бы также kool знать, как работает первый подход.

Формат контейнера Matroska (mkv) поддерживает текстовые субтитры, встроенные в отдельный поток в файл.

Вы можете использовать mkvmerge для переназначения файла в .mkv и включить субтитры на выходе, которые вы можете включить / отключить при воспроизведении видео. Обратите внимание, что этот метод НЕ будет повторно кодировать видео или аудио, он просто помещает одни и те же данные в другой формат контейнера, поэтому он не снизит качество видео.

 mkvmerge -o output.mkv video.mp4 subtitles.srt 

В пакете gpac есть утилита CLI под названием MP4Box

Вот пример того, что сработало для меня ..

 MP4Box -add ~/file.noaudio.mp4 \ -add ~/file.mp3 \ -add ~/file.srt \ ~/file.MP4Box.mp4 

Я использовал только видео и аудио, но он будет (?) Работать с обычным аудио + видео «фильм» … Очень поздно, поэтому я просто оставлю это на этом …

Примечание: субтитры работают в тотеме, но не в SMPlayer …

Попробуйте что-нибудь вроде:

 mencoder -oac copy -ovc copy -sub subs.srt video.mp4 -o new_video.mp4