Объединение видеопотока mp4 с субтитрами для использования при создании DVD

Предположим, у меня есть два файла с именами foo.mp4и foo.srt. В файле mp4 нет субтитров, и я хочу добавить субтитры из foo.srtфайла.

Утилита mencoderчасто рекомендуется в этом контексте. Я пытался использовать, например:

mencoder foo.mp4 -sub foo.srt -ovc lavc -oac copy -o foo.mpg

Это работало для меня раньше. Однако здесь я получаю

Audio format 0x4134504d is incompatible with '-oac copy', please try '-oac pcm' instead or use '-fafmttag' to override it.

Я не знаю, что это значит. Запуск mediainfoэтого файла дает следующую информацию о audioпотоке.

Audio
ID                                       : 2
Format                                   : AAC
Format/Info                              : Advanced Audio Codec
Format profile                           : LC
Codec ID                                 : 40
Duration                                 : 1h 47mn
Bit rate mode                            : Variable
Bit rate                                 : 93.7 Kbps
Maximum bit rate                         : 110 Kbps
Channel(s)                               : 2 channels
Channel positions                        : Front: L R
Sampling rate                            : 48.0 KHz
Compression mode                         : Lossy
Stream size                              : 71.8 MiB (9%)
Language                                 : English
Encoded date                             : UTC 2014-11-19 03:58:38
Tagged date                              : UTC 2014-11-19 03:58:40

Пытающийся

mencoder foo.mp4 -sub foo.srt -ovc lavc -oac pcm -o foo.mpg

работает, но производит видео, которое заметно хуже по качеству.

Я полагаю , что ffmpegэто тоже может быть вариантом, но я не понял, как его использовать для этого.

Я использую Debian wheezy. Версии mencoderи ffmpegкоторые поставляются с хрипом:

2:1.0~rc4.dfsg1+svn34540-1+deb7u1 (менкодер)

6:0.8.16-1 (ffmpeg)

Тем не менее, мне удалось сделать резервную копию более новой версии ffmpegиз нестабильной версии, а именно: 7:2.5.1-1.

Какой формат вывода вы хотите именно? Я вижу, вы использовали контейнер AVI в вопросе, но это не говорит мне о ваших желаемых форматах видео и аудио.
@LordNeckbeard Привет. Это aviбыла опечатка. Ответ в том, что я могу в конечном итоге создать DVD. Обычно это включает в себя создание структуры DVD, а затем ISO из нее. Первый шаг включает в себя создание файла из исходного видеофайла с использованием ffmpeg, и я даю этому mpgрасширение по непонятным мне причинам. После этого этот файл обрабатывается dvdauthorдля создания структуры каталогов, а затем преобразуется в iso с расширением genisoimage. Итак, я полагаю, что ответ таков: какие бы форматы ни работали.

Ответы (1)

Используйте subtitlesфильтр для создания хардсабов («вжигаемых» субтитров):

ffmpeg -i input.mp4 -vf subtitles=subs.srt -target pal-dvd output.mpg
  • -target pal-dvdна выходе будет частота кадров 25 и размер кадра 720x576. Если вы хотите вместо этого выводить NTSC для частоты кадров 30000/1001 и размера кадра 720x480, используйте -target ntsc-dvd. Для частоты кадров 24000/1001 и размера кадра 720x480 используйте -target film-dvd.

  • Старая, так называемая " ffmpeg" версия 0.8.16 в репо - это подделка от форка, в котором отсутствует subtitlesфильтр. Если вам нужна настоящая вещь, вы можете просто загрузить статическую сборку .

  • Я не верю, что ffmpegможно преобразовать текстовый SRT в растровый dvdsub/vobsub, но, вероятно, есть другие инструменты, которые могут это сделать. Это позволит вам использовать стандартные субтитры DVD, которые могут быть включены или выключены зрителем.

Спасибо. Это очень всеобъемлюще. Под "подделкой", я полагаю, ты имеешь в виду ту несчастную вилку? Я думаю, что "7:2.5.1-1" - настоящая вещь, верно? Будет ли результат -target film-dvdработы на обычном DVD плеере?
@FaheemMitha Я предполагаю, что да. Если вы запустите ffmpeg, в первой строке вывода консоли будет указано, кто его разработал. Если он показывает FFmpeg Developers, это реальная вещь.
Кроме того, mencoderне подходит ли инструмент для такой задачи? Кажется, это широко рекомендуется для таких вещей в сети.
@FaheemMitha Я считаю, что разработка в mencoderосновном прекратилась некоторое время назад, но если это работает для вас и вы предпочитаете это, продолжайте и используйте его.
Я бы, конечно, предпочел использовать что-то поддерживаемое, но разве mencoder не является частью mplayer? Как вы думаете, почему разработка менкодеров прекратилась?
@FaheemMitha Похоже, mplayer.cс 2012 года было сделано ~ 14 коммитов. Последний коммит был 20 мая 2014 года. Не идеальное средство измерения, но это даст хорошее представление об активности. Похоже, что с 20 мая 2014 года в FFmpeg было внесено около 7023 коммитов. Также не идеальное измерение, потому что оно включает в себя все коммиты для всего проекта.
Вы имеете в виду mencoder.c, наверное? Я не вижу mplayer.cтам. Я клонировал mplayer из svn. svn infoдает «Корень репозитория: svn://svn.mplayerhq.hu/mplayer». И mencoder.cимеет 10 коммитов с начала 2013 года.
@FaheemMitha Да, это была опечатка. Должно было быть mencoder.c, но цифры остались прежними.
Мы должны использовать разные репозитории. У меня 2014-05-21последний коммит, и это определенно 10 коммитов с начала 2013 года. Но это не имеет большого значения - я понял вашу точку зрения.
@FaheemMitha Тот же репозиторий. 10 коммитов с 2013 года + еще 4 с 2012 года = 14.
О, вы говорили о коммитах с начала 2012 года. Мне это было непонятно. Тогда да, 14 коммитов с 1 января 2012 года. И да, это не так много активности. Возможно, сейчас программное обеспечение является зрелым / стабильным. Не знаю.