Я пытаюсь использовать FFmpeg для разделения видео на несколько якобы суб-видео, используя scenecut и порог. Я нашел следующую команду на SE:

ffmpeg -i myVideo.mp4 -y -c:v libx264 -profile:v high -prese6t:v fast -deinterlace -x264opts min-keyint=15:keyint=1000:scenecut=20 -b:v 2000k -c:a aac -b:a 128k -f segment -segment_format mp4 -segment_format_options movflags=empty_moov+frag_keyframe+default_base_moof+skip_trailer+faststart /home/1/output%%05d.mp4

Но следующая команда не работает для меня и показывает ошибку:

Unrecognized option 'prese6t:v'.
Error splitting the argument list: Option not found

Есть ли какие-либо изменения с момента последнего FFmpeg? Я использую последнюю версию.

2 ответа2

2

@ K7AAY на правильном пути. Метка опции preset . Маска выходного имени файла должна быть output%05d

Но помимо синтаксических ошибок, есть и пара фундаментальных проблем. Фрагментированные параметры MP4 предназначены для случаев, когда сегменты упакованы в один контейнерный файл. Сегментный мультиплексор испускает несколько файлов, поэтому фрагментация мультиплексора MP4 может быть пропущена. Кроме того, необходимо указать сегмент_времени с очень низким значением, иначе значения GOP, меньшие значения по умолчанию (2 с), будут объединены в некоторых сегментах.

Команда должна быть

ffmpeg -y -i myVideo.mp4 -vf yadif \
       -c:v libx264 -profile:v high -preset:v fast \
       -x264opts min-keyint=15:keyint=1000:scenecut=20 -b:v 2000k \
       -c:a aac -b:a 128k \
       -f segment -segment_format mp4 -segment_time 0.01 -segment_format_options movflags=faststart \
       /home/1/output%05d.mp4
1

После замены prese6t:v
с preset:v
потому что нет опции "prese6t" для ffmpeg

заменить output%%05d.mp4
с output5d.mp4

поскольку ffmpeg отклоняет output%%05d.mp4 как недопустимое имя файла.

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