Mesclar vários JPEGs em um vídeo

3

Estou capturando imagens de uma Web em intervalos de 1 segundo. Eu gostaria de encontrar uma maneira de criar um vídeo dessas imagens. Como a câmera está parada e pode haver longos períodos de tempo em que a imagem não muda, eu gostaria de poder descartar o que são essencialmente imagens duplicadas para poder encurtar o meu vídeo resultante.

    
por user276388 30.04.2014 / 19:42

2 respostas

1

Isso levará todos os arquivos .jpeg no diretório e criará um vídeo AVI.

mencoder "mf://*.jpeg" -mf fps=20 -o out.avi -ovc lavc -lavcopts vcodec=msmpeg4v2:vbitrate=640

Detectar imagens "duplicadas" adiciona alguma complicação. O programa findimagedupes pode ser uma opção.

    
por Nattgew 30.04.2014 / 19:49
0

Para analisar as semelhanças entre suas imagens estáticas, você pode usar o comando compare do pacote imagemagick . Você provavelmente precisará de um parâmetro -metric . Eu pessoalmente não brinquei muito com isso, mas você pode ler sobre isso aqui :

-metric type

  Output to STDERR a measure of the differences between images according
  to the type given metric.

Para fazer um vídeo, você também pode fazer isso com o pacote avconv from libav . A única desvantagem possível é que é necessário que todos os arquivos sejam nomeados seqüencialmente, sem nenhuma lacuna, e eles precisam começar com 1. Você precisará de um script para preparar o diretório, antes de poder executar o comando.

link sequencial (Script! não! escrito por mim)

#!/usr/bin/python
"""    Create symlinks from a set of paths returned by glob for FFmpeg to read.  Thanks to: http://programmer-art.org/articles/tutorials/ffmpeg-time-lapse
"""
import os
import glob
import sys
files = sorted(glob.glob("/home/txoof/temp/779OLYMP/*.JPG"))
outdir = "/home/txoof/temp/output/"
if not os.path.exists(outdir):
  os.makedirs(outdir)
for i, f in enumerate(files):
  os.symlink(f, os.path.join(outdir, "%06d.jpg" % (i + 1)))

Você precisará editar os diretórios neste script manualmente, apenas definir o diretório onde seus arquivos estão e o diretório onde os links serão (que pode ser um diretório temporário e, em seguida, será excluído).

Depois disso, você terá um diretório cheio de arquivos começando com 000001.jpg e você pode executar o seguinte comando:

avconv -i /home/txoof/temp/output/%06d.jpg -c:v copy -an video.avi
    
por v010dya 10.11.2014 / 20:10

Tags