3

я пытаюсь запустить следующую строку в FFmpeg, которая в основном "переформатирует" файл MKV в MP4 без какой-либо перекодировки, а также вставит субтитры SRT на выход MP4:

ffmpeg -i test.mkv -i test.srt -newsubtitle -acodec copy -vcodec copy test.mp4

Без бита "-i test.srt -nwesubtitle", кажется, работает нормально; однако с его помощью я получаю следующий вывод:

Кажется, что частота кадров кодека потока 0 отличается от частоты кадров контейнера: 47,95 (5000000/104271) -> 23,98 (24000/1001)

Stream #0.0(eng): Video: h264, yuv420p, 1280x720 [PAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc
Stream #0.1(eng): Subtitle: 0x0000
Metadata:
  title           : English
Stream #0.2(jpn): Audio: aac, 48000 Hz, stereo, s16
Metadata:
  title           : Japanese 2.0
Stream #0.3(eng): Audio: aac, 48000 Hz, stereo, s16
Metadata:
  title           : English 2.0
Stream #0.4(eng): Subtitle: 0x0000
Metadata:
  title           : English Songs & Signs
Stream #0.5: Attachment: 0x0000
Metadata:
  filename        : MyriadPro-Bold.ttf
Stream #0.6: Attachment: 0x0000
Metadata:
  filename        : MyriadPro-RegularHaruhi.ttf
Stream #0.7: Attachment: 0x0000
Metadata:
  filename        : ChaparralPro-BoldIt.ttf
Stream #0.8: Attachment: 0x0000
Metadata:
  filename        : ChaparralPro-SemiboldIt.ttf
Stream #0.9: Attachment: 0x0000
Metadata:
  filename        : epmgobld_ending.ttf
Stream #0.10: Attachment: 0x0000
Metadata:
  filename        : epminbld_opening.ttf
Stream #0.11: Attachment: 0x0000
Metadata:
  filename        : Folks-Bold.ttf
Stream #0.12: Attachment: 0x0000
Metadata:
  filename        : GosmickSansBold.ttf
Stream #0.13: Attachment: 0x0000
Metadata:
  filename        : WarnockPro-LightDisp.ttf
Stream #0.14: Attachment: 0x0000
Metadata:
  filename        : epmgobld_ending.ttf
Stream #0.15: Attachment: 0x0000
Metadata:
  filename        : GosmickSansBold.ttf
Stream #0.16: Attachment: 0x0000
Metadata:
  filename        : Marker SD 1.2.ttf
Stream #0.17: Attachment: 0x0000
Metadata:
  filename        : MyriadPro-Bold.ttf
Stream #0.18: Attachment: 0x0000
Metadata:
  filename        : MyriadPro-RegularHaruhi.ttf
Stream #0.19: Attachment: 0x0000
Metadata:
  filename        : MyriadPro-SemiCn.ttf
test.srt: Invalid data found when processing input

Я попытался добавить «-r pal», «-r ntsc» или «-r 23.98», думая, что это проблема частоты кадров без изменений.

2 ответа2

3

FFmpeg вызывал «test.srt: при обработке ввода обнаружены неверные данные», потому что он просто не мог обработать файл SRT. Я запустил опции -codecs и, конечно же, кодека "srt" не было в списке.

Чтобы это исправить, я собрал ffmpeg из исходного кода, используя параметры конфигурации для включения субтитров.

Очевидно, что FFmpeg, который можно найти в репозиториях Ubuntu, соответствует отключенным субтитрам.

1

Субтитры SRT официально не поддерживаются в MP4, и многие из устройств, которые воспроизводят MP4, не смогут воспроизводить субтитры SRT, содержащиеся в них. Широкая совместимость является основной причиной использования MP4 вместо MKV, так что вы можете придерживаться Matroska.

Чтобы объединить несколько файлов в один MKV, используйте mkvmerge из mkvtoolsnix

mkvmerge -o output.mkv input.mkv input2.srt

Если вы настаиваете на использовании MP4, MP4Box является эквивалентным инструментом (из gpac):

MP4Box -out output.mp4 -add input.mkv -add input2.srt

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .