Como fazer um vídeo em Stop Motion ou Time-lapse com a webcam?

28

Eu tenho uma webcam que funciona como um dispositivo v4l2.

Qual é a maneira mais conveniente de capturar um vídeo em stop motion ou com lapso de tempo ?

NB

stop-motion e lapso de tempo estão relacionados, mas conceitualmente diferentes.

Lapso de tempo é onde você tira uma foto de uma cena em um intervalo definido e depois a combina em um vídeo (que parece estar indo muito rápido).

O stop-motion é onde você controla a cena e tira uma imagem para cada alteração que faz, para formar uma animação (por exemplo, Wallace e Grommit).

Um aplicativo para lapso de tempo precisa ser capaz de tirar uma foto em um intervalo definido.

Seppo Erviälä
fonte
A pergunta semelhante em Fotos tem respostas interessantes que se sobrepõem parcialmente.
Anarcat 30/07/19

Respostas:

40

Capturando um zilhão de imagens.

O primeiro passo é capturar imagens. Vamos imaginar que você queira tirar uma foto a cada 10 segundos e salvá-la em um diretório na área de trabalho

mkdir ~/Desktop/cap
cd ~/Desktop/cap

Usamos streamerpara fazer a captura, então vamos instalá-la:

sudo apt-get install streamer

E agora queremos capturar

streamer -o 0000.jpeg -s 300x200 -j 100 -t 2000 -r 1

-té o número de quadros que queremos capturar. -ré quadros por segundo. Portanto, isso deve pegar um quadro a cada segundo. Se você compactar isso em um vídeo de 30fps, um minuto de captura se tornará 2 segundos de vídeo. Você deseja ajustá-lo adequadamente, dependendo da quantidade de saída de vídeo que deseja.

Essa linha fornece 2000 imagens, leva meia hora para gravar e, a 30fps, gera pouco mais de 1 minuto de vídeo.

Juntando tudo

Eu vou usar ffmpeg. Existem muitas maneiras diferentes de juntá-las, incluindo, mencodermas eu apenas prefiro ffmpega perspectiva da vida. Depois de instalá-lo ( sudo apt-get install ffmpeg), basta fazer o seguinte:

ffmpeg -r 30 -i %04d.jpeg -s hd480 -vcodec libx264 -vpre hq time-lapse.mp4

As configurações de qualidade não existem na minha webcam, então você pode querer brincar muito com as opções para obter uma codificação melhor, mas isso deve gerar um bom vídeo de 30fps, compactado em x264.

Você pode querer brincar com o framerate ( -r), mas eu não ficaria abaixo de 15fps.

Oli
fonte
11
A cada dez segundos seria necessário -r 0.1.
Seppo Erviälä
man streamernão descreve o que cada parâmetro faz. Onde posso obter informações sobre o jparâmetro? Como eu consegui capturar até pressionar CTRL + C, com o FPS fornecido?
Tomáš Zato - Restabelece Monica
@oli ffmpegnão funciona mais para mim. O que devo usar?
Tim
11
@ChrisH É tecnicamente bom, só quero dizer que é o corte básico para um vídeo suave. Isso depende muito da rapidez com que você os está tomando.
Oli
2
@ TomášZato streamer -hé muito mais abrangente. Eu odeio quando os desenvolvedores se esforçam bastante, --helpmas nada para a página de manual.
precisa saber é o seguinte
9

Para capturar todos os X segundos de uma webcam, use o movimento.

Instalar motion

sudo apt-get install motion ou sudo aptitude install motion

Configurar movimento para cada X segundos

sudo nano /etc/motion/motion.conf

Altere as variáveis minimum_frame_time e snapshot_interval para a mesma quantidade de segundos que você deseja tirar a foto com a webcam.

10 minutos = 600 segundos
20 minutos = 1200 segundos
30 minutos = 1800 segundos
1 hora = 3600 segundos
2 horas = 7200 segundos e assim por diante ...

executar o movimento com sudo motionpará-lo com CTRL+C

NOTA - Configure o motion.conf para salvar os arquivos em outro diretório que não seja o padrão / tmp. Por exemplo, sua pasta pessoal. Desde que ir para / tmp precisa de mais privilégios. Você também encontrará muitas opções úteis no motion.conf para muitas outras coisas que você pode gostar.

Luis Alvarado
fonte
Isso é muito melhor do que serpentina. Não tenho certeza se gosto de uma solução que você deve ter como raiz e parece que perdi a capacidade de usá-la como um espelho retrovisor, mas é muito melhor que uma serpentina e pode resolver outro problema que tenho procurado at, que só está tirando uma foto se eu estiver lá. Irá marcar isso resolvido se eu puder resolver os outros problemas.
9789 Dave
Na verdade, você não precisa de acesso root para usá-lo. Você só precisa de acesso root para editar o arquivo de configuração.
Luis Alvarado
Suponho que se você deseja gravar no caminho padrão, também pode ser necessário, mas essa foi a primeira coisa que mudei. Obrigado.
2141111 Dave
Não tem problema amigo. Feliz em ajudar.
19611 Luis Alvarado
Eu tentei. Funcionou bem. Eu poderia tentar novamente em algum momento. Mas isso não me deu o aspecto da visão traseira, que eu valorizo ​​mais do que tirar fotos automaticamente. Então, eu estou executando o Cheese agora.
12138 Dave Jacoby
7

gTimelapse ( Link para download )

insira a descrição da imagem aqui

Um aplicativo para capturar imagens para gerar vídeos em timelapse, construído nas bibliotecas gPhoto2 e wxWidgets.

Instruções de compilação

Faça o download da fonte no site sourceforge

em um terminal, digite o seguinte:

cd Downloads 
gunzip gtimelapse-0.1.tar.gz
tar -xvf gtimelapse-0.1.tar
cd gtimelapse
sudo apt-get install build-essential libgphoto2-2-dev libwxbase2.8-dev libwxgtk2.8-dev gphoto2
./configure
make
sudo make install

Para executar o tipo de aplicativo

gtimelapse &

nb 1

gphoto2 --list-cameras | more

nb 2

veja este blog para mais informações úteis

lista todos os dispositivos compatíveis suportados pelo aplicativo

nb 3

Eu li que o gphoto2 não suporta webcams - deixarei esta resposta visível de qualquer maneira, caso alguém queira tentar essa resposta com uma câmera digital decente em vez de uma webcam.

liberdade de expressão
fonte
Demorou algum tempo para buscar e compilar wxWidgets com todos os pré-requisitos. Eu também compilei o gTimelapse, mas ele trava com: [Debug] 13:21:12: ./src/common/menucmn.cpp(859): assert "item" falhou no Check (): wxMenu :: Check: nenhum item desse tipo [Debug] Gerando um rastreamento de pilha ... por favor, aguardeTrace / trap breakpoint
Seppo Erviälä
ok - hoje irei tentar algum dia hoje - vou adicionar algumas instruções à minha resposta (supondo que eu consiga fazer isso).
fossfreedom
Isso é realmente bastante útil, pois tenho uma câmera digital suportada pelo gphoto2. Eu não sabia que uma biblioteca como essa existia.
Seppo Erviälä
1

Eu usei o Stopmotion para fazer isso, é no centro de software. Você também pode capturar com o Cheese, mas precisa alterar a configuração do Cheese para aumentar o número máximo de imagens. Achei mais fácil usar o Stopmotion durante todo o processo.

Tom Brossman
fonte
1

A melhor e mais fácil maneira de fazer isso é instalando o Motion . É um software de vigilância em larga escala para sistemas operacionais baseados em Linux.

Instale através do centro de software

Vesa
fonte
1

Uma opção rápida, suja, mas um pouco mais flexível é a seguinte:

ffmpeg -pattern_type glob -framerate 25 -i 'image-*.jpg' -c:v libx264 \
    -profile:v high -crf 20 -pix_fmt yuv420p output.mp4

Aqui eu estou adicionando -pattern_type glob, usando o wildcard *, e colocando o meu nome do arquivo entre aspas simples: 'image-*.jpg'.

O benefício: essa sintaxe permite que você inicie em qualquer número e tenha qualquer padrão em sua numeração (geralmente crio uma contagem até 20, começando por volta de 20000, por exemplo).

As desvantagens: Essa sintaxe não permite que você pule números repetidos, como a sintaxe '% ## d' permite. Além disso, você não pode ter um esquema de numeração sem os 0s anteriores. Ou seja, o esquema de nomeação de arquivos deve ser algo como 00001, 00002, ... 00033 ... (A numeração não pode ser 1,2,3, ... 33, ..., caso contrário, o número '3' será classificado entre '39' e '40', por exemplo).

Separadamente, observe também que eu tive que colocar o nome do meu arquivo de entrada entre aspas simples; caso contrário, o ffmpeg tentou sobrescrever todos os meus arquivos de imagem com uma cópia da primeira foto (é sempre uma boa ideia copiar para um backup antes de manipular arquivos )

A partir desta edição por um usuário anônimo.

Tim
fonte
0

Você deve conseguir configurar o movimento (no motion.conf) para transmitir - por padrão, ele transmite na porta 8081. Tudo o que você precisa fazer para obter o espelho retrovisor é abrir o VLC, "Open Network Stream" e aponte-o para http: // localhost: 8081 .

Derek
fonte
0

Camorama é um visualizador / gravador de webcam que eu costumava tirar fotos, em intervalos de 1 minuto, e enviá-las para um servidor da web; é uma configuração simples. Também está disponível no Ubuntu Software Center ou você pode instalá-lo usando:

sudo apt-get install camorama

Espero que isto ajude.

kicsyromy
fonte
Desculpe, acabei de ver que você escreveu que sua webcam não funciona com o Camorama.
Kicsyromy
Poderia explicar em mais detalhes? O homem não cobre a opção timelapse :(
Mars Robertson