Я использую этот аргумент для FFmpeg, чтобы получить миниатюру изображения из видеофайла:
ffmpeg -i input.mp4 -vframes 1 -s 320x240 -ss 10 output.jpg
Я понимаю, что -ss 10 сообщает FFmpeg о необходимости захвата миниатюры на 10-й секунде, но какова цель -vframes 1?
решение1
Это скажет ffmpeg
выводить один кадр. В противном случае он попытается использоватьмультсериал файлов изображенийдля вывода нескольких изображений. Из справки:
$ ffmpeg -h
...
-vframes number set the number of video frames to record
решение2
Для будущих поколений, если вы затем захотите добавить миниатюру как значок файла и удалить промежуточный jpeg, добавьте это в «быстрое действие» автоматизатора, передав входные данные в качестве аргумента:
export PATH=/usr/local/bin:/opt/homebrew/bin:$PATH
for f in "$@"
do
ffmpeg -y -ss 60 -i "$f" -v error -vf select="eq(pict_type\,I),scale=-1:640,crop=in_w:in_h:0:0" -qscale:v 3 -vframes 1 "$f".jpg
fileicon set "$f" "$f".jpg
rm "$f".jpg
done