9

Для создания миниатюры видео с помощью ffmpeg я использую эту команду:

ffmpeg -itsoffset -4 -i video.mp4 -vframes 1 thumb.jpg

Это дает мне миниатюру с таким же размером видео (который имеет неизвестный размер, например 960x540). Но мне нужен квадратный (обрезанный) эскиз с заданным размером (например, 200x200). Результат не должен быть изменен, но обрезан от центра, и соотношение сторон не должно измениться.

Как это можно сделать?

2 ответа2

10

Вы можете использовать видеофильтр crop :

ffmpeg -ss 4 -i video.mp4 -vf crop=200:200 -vframes 1 output.jpg
  • По умолчанию урожай будет отцентрирован.

  • Используйте -ss вместо -itsoffset чтобы выбрать время смещения.

  • Вы можете контролировать качество вывода JPEG с помощью -qscale:v . Использование значения 2-5 обычно хорошо; чем ниже значение, тем выше качество.

  • Фильтр crop также может принимать ширину и высоту ввода и вывода в качестве значений: iw , ih , ow , oh . Это позволяет более гибкую и креативную фильтрацию: crop=iw-100:ih-50 .

Вы можете проверить с помощью ffplay чтобы получить предварительный просмотр:

ffplay video.mp4 -vf crop=200:200

Исходное изображение (генерируется с помощью исходного фильтра testsrc :

ffmpeg -f lavfi -i testsrc -vframes 1 output.jpg 

исходное изображение

Обрезанное изображение:
обрезанное изображение

5

Вы можете масштабировать его сначала, а затем обрезать для лучшего вывода;)

ffmpeg -ss 10 -i "Ali_Video.mp4" -vframes 1 -filter "scale=-1:300,crop=400:300" "output.jpg"

введите видео в 0:49 выходное изображение

ffmpeg -ss 10 -i "Ali_Video.mp4" -vframes 1 -filter "scale=-1:150,crop=200:150" "output.jpg"

другой эскиз

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