Преобразование FFMPEG MKV в MP4 теряет субтитры

11

В настоящее время пытаюсь конвертировать мою библиотеку MKV в MP4 (Iphone 6 плюс)

Мне удалось добраться до преобразования MKV в MP4, но мне не хватает части субтитров (SRT)

Вот мой код:

dir/b/s *.mkv >mkvlist.txt   ///////// this gets a list of all the mkv files on the directory

for /F "delims=;" %%F in (mkvlist.txt) do ffmpeg.exe  -i "%%F" -format mp4 -vcodec copy -acodec aac -strict -2 -sn "%%~dF%%~pF%%~nF.mp4"   ///////////// this makes the conversion

del mkvlist.txt     ////// this deletes the txt file

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

dpkmon
источник
Файлы .mkv представляют собой контейнерный формат. Весьма вероятно, что файл mkv содержит файл .srt, который вы можете извлечь. Убедитесь, что он имеет то же имя, что и файл .mp4, и он должен работать. Файл mkv может также содержать файл mp4, но также может иметь формат .divx, .avi или любой другой видеоформат.
LPChip

Ответы:

17

MP4 не поддерживает SRT. Вы можете использовать softtsubs или hardsubs.

софтсабах

Субтитры, которые состоят в виде отдельного потока в файле. Они могут быть включены / выключены проигрывателем и не требуют перекодирования видеопотока.

ffmpeg -i input.mkv -c copy -c:s mov_text output.mp4

Поддержка проигрывателем синхронизированных текстовых программных субтитров в MP4 может быть довольно слабой. Вам просто нужно попробовать.

хардсабах

Hardsubs "записаны" в видео, поэтому видео необходимо перекодировать.

ffmpeg -i input.mkv -vf subtitles=input.mkv output.mp4

См. Документацию фильтра susbtitles для получения дополнительной информации, такой как, как выбрать определенный поток субтитров, если их несколько.

llogan
источник
Не могли бы вы помочь мне лучше понять мой код? Где и почему вы бы добавили перекодировку для сабов? (И если вы можете придумать решение или способ пакетного преобразования всех файлов во вложенных папках с их соответствующими вложенными папками?) (Если субтитры отсутствуют, то нужно будет вообще пропустить файл и перейти к следующему.
dpkmon
2

У меня была похожая проблема при переходе с MP4 на MKV из некоторых файлов mp4, которые я скопировал с помощью Handbrake. Сначала я обратился к https://en.wikibooks.org/wiki/FFMPEG_An_Intermediate_Guide/subtitle_options , который подразумевал определенные форматы субтитров для mkv против mp4. После игры с преобразованиями ass и mov_text, которые не работали, я протестировал некоторые файлы и заметил, что появился формат dvd_subtitle. После долгих тренировок поработали следующие.

ffmpeg -i "\\server\directory\Sourcefile.mp4" -c:v copy -c:a copy -c:s dvd_subtitle "\\server\directory\Outputfile.mkv"

Надеюсь, поможет.

Фон руген
источник