ffmpeg: como criar miniaturas cortadas?

10

Para criar uma miniatura de vídeo ffmpegusando este comando:

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

Isso me dá uma miniatura com o mesmo tamanho do vídeo (que tem um tamanho desconhecido, por exemplo, 960x540). Mas o que eu preciso é de uma miniatura quadrada ( cortada ) com um determinado tamanho (por exemplo, 200x200). O resultado não deve ser redimensionado, mas cortado do centro, e a proporção da imagem não deve mudar.

Como pode ser isto alcançado?

Georg Ledermann
fonte
Por que usar em -itsoffsetvez de -ss? Ultimamente, tenho visto um aumento no uso disso por usuários que produzem imagens de vídeos.
Llogan
@ LordNeckbeard: Desculpe, misturei as opções. Encontrei isso para obter mais informações sobre -itsoffsetvs -ss.: superuser.com/questions/538031/…
Georg Ledermann

Respostas:

12

Você pode usar o cropfiltro de vídeo:

ffmpeg -ss 4 -i video.mp4 -vf crop=200:200 -vframes 1 output.jpg
  • Por padrão, o recorte será centralizado.

  • Use em -ssvez de -itsoffsetpara escolher o seu tempo de deslocamento.

  • Você pode controlar a qualidade da saída JPEG com -qscale:v. Usar um valor de 2-5 geralmente é bom; um valor mais baixo é uma qualidade mais alta.

  • O cropfiltro pode também aceitar a largura de entrada e de saída e altura como valores: iw, ih, ow, oh. Isto permite uma filtragem mais flexível e criativo: crop=iw-100:ih-50.

Você pode testar com ffplaypara obter uma visualização:

ffplay video.mp4 -vf crop=200:200

Imagem original (gerada com o testsrcfiltro de origem:

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

imagem original

Imagem cortada:
imagem recortada

llogan
fonte
6

Você pode dimensioná-lo primeiro e depois cortá-lo para obter uma melhor saída;)

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

entrada de vídeo às 0:49 imagem de saída

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

outra miniatura

SMMousavi
fonte