ffmpeg: Como criar miniaturas cortadas?

8

Para criar uma miniatura de vídeo com ffmpeg , estou usando 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 preciso é de uma miniatura quadrada ( cropped ) com um determinado tamanho (por exemplo, 200x200). O resultado não deve ser redimensionado, mas recortado do centro, e a proporção não deve mudar.

Como isso pode ser feito?

    
por Georg Ledermann 27.06.2013 / 13:20

2 respostas

9

Você pode usar o filtro de vídeo crop :

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

  • Use -ss em vez de -itsoffset para escolher seu tempo de deslocamento.

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

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

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

ffplay video.mp4 -vf crop=200:200

Imagem original (gerada com os testsrc filtro de origem:

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

Imagemrecortada:

    
por 27.06.2013 / 19:55
4

Você pode escalá-lo primeiro e, em seguida, recortá-lo para uma melhor saída;)

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

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

    
por 27.07.2015 / 17:47