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

10

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

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

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

Как мне сделать вещи 2-й путь? Также было бы интересно узнать, как работает первый подход.

tshepang
источник
1
Я еще не разобрался, но мне очень интересно ... Кажется, что контейнер mp4 (MPEG-4) может обрабатывать отдельные выделенные потоки субтитров ... так что (для меня) это будет путь. Если вы жестко прививаете субтитры к самому видео, вам нужно перекодировать видео, и они будут встроены навсегда ... Единственное преимущество жестко «закодированных» субтитров состоит в том, что видеоплеер не должен быть осведомленным о mp4-subtitle-stream ... Довольно сложно жестко кодировать AVI, но у меня еще не было необходимости использовать потоки субтитров (пока :). Где формат ваших субтитров?
Peter.O
@fred Мой файл субтитров заканчивается на .srt, и Наутилус говорит мне, что формат субтитров SubRip (application / x-subrip).
tshepang

Ответы:

9

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

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

mkvmerge -o output.mkv video.mp4 subtitles.srt
axel_c
источник
Работал как шарм, и так быстро, я думал, что он разбился на старте!
Томислав Накич-Альфиревич
3

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

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

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

Я использовал только видео и аудио, но он наверняка (?) Будет работать с обычным аудио + видео "фильмом" .... Уже очень поздно, поэтому я просто оставлю это на этом ...

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

Peter.O
источник
1

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

mencoder -oac copy -ovc copy -sub subs.srt video.mp4 -o new_video.mp4
gelraen
источник
Это не работает В результате получается искаженное аудио и видео, а видео усекается (исходный файл ~ 1,6 ГБ, а результирующий файл ~ 200 МБ). Я использую Mencoder 1.0-RC3.
Чепанг
У меня есть файл mp4 и SRT. Но с этими аргументами субтитры не появляются в результирующем файле. :(
ПравдаY
Посмотрел именно то, что искал. Пробовал это с видео WebM (видео дорожка VP8, аудио дорожка VORBIS) и в результате получил сломанное видео. Позор. : \
Томислав Накич-Альфиревич