Я пытаюсь конвертировать .mkv в .mp4, используя ffmpeg, и во время конвертации я также пытаюсь записать субтитры, если они существуют. Вот командная строка. Это скрипт:

$PGMNAME -i "$1" -s hd720 -c:v libx264 -crf 23 -c:a copy -strict -2 -vf subtitles="$1"  "$BASEPATH/$FILENAME.mp4"

"$1" - это оригинальный файл .mkv, содержащий (или не являющийся проблемой) подзаголовок. С учетом вышесказанного я получаю следующие ошибки:

Unable to locate subtitle stream file.mkv

а также

Error initializing filter 'subtitles'

Это телепередачи, загруженные через эфир. Неизвестно, какие из них содержат субтитры. Как я могу переписать команду, чтобы я не получил сообщение « Unable to locate subtitle stream file.mkv ?

1 ответ1

1

Используйте ffprobe чтобы определить, есть ли поток субтитров. Если таковые имеются, используйте фильтр субтитров .

ffprobe -loglevel error -select_streams s:0 -show_entries stream=codec_type -of csv=p=0 input.mkv
  • Если есть субтитры, он выведет subtitle .
  • Если нет субтитров, он ничего не выведет.

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