Programa para tirar fotos do filme?

4

Existe algum programa que me permita especificar partes de um arquivo de vídeo (avi, mpeg, mp4, ...) e tirar "instantâneos" a cada segundo e minuto, e armazená-lo como uma série de arquivos de imagem (por exemplo, jpeg)? Por exemplo, selecione parte de um filme entre 0h45m e 1h00m e faça um "snap-shot" a cada 30 segundos.

Pode ser parte ou um plug-in para um player de vídeo (por exemplo, VLC) ... o ponto é que eu preciso de algo que tire instantâneos instantâneos, não de forma física.

Além disso, existem bons programas para transformar essa série de arquivos de imagem em um arquivo GIF ou PNG animado? (É claro que seria um bônus se o programa snap-shot pudesse, opcionalmente, salvar os snaps como GIF / PNG animado.)

    
por Baard Kopperud 19.06.2013 / 19:01

2 respostas

5

Você pode usar ffmpeg para fazer isso. Existem vários exemplos no site do ffmpeg .

Aqui estão alguns deles:

  1. Isso criará uma imagem em miniatura a cada minuto, chamada img001.jpg , img002.jpg , img003.jpg , ... ( %03d significa que o número ordinal de cada imagem em miniatura deve ser formatado usando 3 dígitos)

    $ ffmpeg -i myvideo.avi -f image2 -vf fps=fps=1/60 img%03d.jpg
    
  2. Isso criará uma imagem em miniatura a cada 10 minutos, chamada thumb0001.bmp , thumb0002.bmp , thumb0003.bmp , ...

    $ ffmpeg -i test.flv -f image2 -vf fps=fps=1/600 thumb%04d.bmp
    

Se você quiser transformá-los em um vídeo curto, você pode novamente solicitar a ajuda de ffmpeg . É discutido em esta página do site .

Aqui estão mais alguns exemplos:

  1. Aqui, cada imagem terá uma duração de 5 segundos (o inverso de 1/5 quadros por segundo). Ao dizer ao FFmpeg para definir a opção FPS do arquivo de entrada (quadros por segundo) para algum valor muito baixo, criamos quadros duplicados FFmpeg na saída e assim conseguimos exibir cada imagem por algum tempo na tela:

    $ ffmpeg -f image2 -r 1/5 -i img%03d.png -c:v libx264 -r 30 out.mp4
    
  2. Se você não tiver imagens numeradas e ordenadas em série ( img001.jpg , img002.jpg , img003.jpg ), mas um monte aleatório de imagens, o ffmpeg também suporta globbing estilo bash (* representa qualquer número de qualquer caractere ):

    $ ffmpeg -f image2 -r 1 -pattern_type glob -i '*.jpg' -c:v libx264 out.mp4
    

ou para imagens png:

    $ ffmpeg -f image2 -r 1 -pattern_type glob -i '*.png' -c:v libx264 out.mp4

Para transformar o vídeo resultante em um gif animado, você pode usar as etapas descritas em seu SO Q & A intitulado: Como gerar gif a partir do avi usando o ffmpeg? :

$ ffmpeg -i video.avi -t 10 out%02d.gif

então:

$ gifsicle --delay=10 --loop *.gif > anim.gif

Aqui está o link para a ferramenta gifsicle .

    
por 19.06.2013 / 19:23
2

Também comecei com ffmpeg mas @slm me bateu nele:)

Anyheuw, você também pode usar mplayer para fazer um dump simples e rápido. Por exemplo:

mplayer -nosound -ss 45:00 -endpos 15:00 -vo png:z=7 -sstep 30 your_vid.mp4
  • -ss é a posse inicial.
  • -endpos é a duaração.
  • -vo recebe o driver de saída. Use mplayer -vo help para obter uma lista. Muitas distros também têm a conclusão de abas na maioria das opções do mplayer: mplayer -vo Separador Separador
  • -sstep 30 significa passo 30 segundos entre cada quadro.

Início e finalização:

<[[hh:]mm:]ss[.ms]|size[b|kb|mb]>

Há muitos cálculos e buffers acontecendo, portanto, não são 100% exatos, mas geralmente são próximos o suficiente.

Ele também tem um driver gif89a, mas a qualidade não é a melhor (comparada a imagens descartadas, convertendo com convert e compilando vídeo com, por exemplo, gifsicle ). Você poderia, claro, brincar com isso. Mais adequado para fazer atalhos de filmes como avatar como gif:

mplayer -ao null -ss 10:00 -endpos 5 -vo gif89a:fps=5.3 -vf palette,softskip,scale=240:135 videofile.ext

Você também pode especificar o arquivo de saída normalmente:

-vo gif89a:fps=4.9:output=sample.gif

Muito ao lado, não relacionado, mas para mostrar o intervalo de -vo , é o formato ASCII:

mplayer -vo aa -monitorpixelaspect 0.5 video.mp4

maximize a janela de saída e leve 5 etapas para trás.

    
por 19.06.2013 / 19:51