Curso Raspberry Pi - #11 - Filmes, Slowmotion, Timelapse - ElectroFun Blog
Anteriormente fizemos os primeiros exercícios de tirar fotos e enviar imagens pela rede. Claro, a câmara conectada ao Raspberry Pi tem muito mais possibilidades. Desta vez, vamos verificar como o Raspberry lida com a gravação de filmes: lapso de tempo e câmara lenta.
Gravando filmes no Raspberry Pi com raspivid
Usamos o programa raspistill para tirar fotos. O Raspivid será útil para filmes. Primeiro, vamos emitir um comando que irá gravar um filme com um tamanho padrão de 5 segundos:
raspivid -n -w 1920 -h 1080 -cd MJPEG -o test.mpg
Os parâmetros utilizados são praticamente idênticos ao programa raspistill.
Indo da esquerda para a esquerda: -n desligou a pré-visualização. A resolução da imagem é definida usando as opções -w e -h. O arquivo de saída é dado após -o. Um novo recurso é a opção -cd, que permite definir o método de compactação de imagem. Nós escolhemos o MJPEG para este teste. Se precisar, a imagem pode ser rodada usando o parâmetro -rot.
Nesse caso, também há uma alteração importante na operação do parâmetro -t. No raspivid, ele determina depois que a foto será tirada. Agora define o tamanho do filme (em milissegundos). O valor padrão é 5000 ms ou 5 segundos.
Como antes, o arquivo final foi salvo no diretório em que lançamos o programa:
Reproduzindo filmes gravados no Raspberry Pi
Se tivermos um monitor conectado ao Raspberry ou se conectar através do VNC, podemos reproduzir o filme no omxplayer do programa padrão ou no popular mplayer (ele deve estar pré-instalado).
Se nos conectarmos remotamente via SSH , então como antes, o filme pode ser feito download num PC via WinSCP. No entanto, há uma grande probabilidade de que os filmes salvos em mpg/mjepg não sejam reproduzidos corretamente. Normalmente, um quadro será exibido em todo o comprimento do material (uma foto). Para poder reproduzir esses arquivos corretamente num PC com Windows, deve instalar os codecs.
Depois de instalar o codec, o filme será iniciado corretamente no Windows. Filme de exemplo:
Alterando o codec para h.264
Se não definirmos o parâmetro correspondente ao método de compactação, os materiais serão gravados por padrão usando o codec h.264, que é muito mais eficiente:
raspivid -n -w 640 -h 480 -o test_2.h264
Depois de fazer download num PC, o filme deve definitivamente ocupar espaço, e a sua qualidade será tão boa quanto antes:
Filmes em câmera lenta (slowmotion)
Também vale lembrar o parâmetro -fps, que permite alterar o número de frames com os quais os vídeos são gravados. Na resolução VGA, podemos gravar 90 FPS, o que permite obter vídeos mais lentos (câmara lenta).
raspivid -n -w 640 -h 480 -o test.h264 -fps 90
Esta resolução a 90 FPS pode ser útil em muitos projetos!
Como gravar um filme com lapso de tempo no Raspberry Pi?
Ao usar o raspivid anteriormente conhecido, pode criar facilmente filmes com lapso de tempo (timelaps). O princípio é muito simples. Nós tiramos fotos a cada certo tempo (por exemplo, 5 segundos) e depois as combinamos num filme. Dobrando centenas/milhares de fotos num filme, obtemos um material impressionante que mostra como as nuvens se movem no céu ou como um objeto é criado numa impressora 3D.
Começamos por criar um novo diretório, por exemplo, timelapse:
Criamos uma pasta porque a gravação de filmes com lapso de tempo requer centenas e, muitas vezes, milhares de fotos, é melhor não mexer na sua pasta pessoal. Vá para a nova pasta e execute o raspistill com os seguintes parâmetros:
raspistill -t 300000 -tl 2000 -o image%04d.jpg -w 1280 -h 720 -rot 180
Indo da esquerda. O parâmetro -t especifica por quanto tempo queremos tirar fotos, aqui 300.000 ms ou 300 segundos, o que dá exatamente 5 minutos. O próximo parâmetro -tl especifica o intervalo (quanto tempo queremos tirar uma nova foto), aqui 2000 ms, ou seja, uma nova foto será tirada a cada 2 segundos. O próximo parâmetro -o é, obviamente, o nome do arquivo com a data adicionada.
Adicionar uma data no nome é absolutamente necessário! Caso contrário, sobrescreveremos a mesma imagem.
Os últimos parâmetros são a seleção da resolução e a rotação da câmara (identicamente como na seção anterior). Depois de executar o comando, esperamos 5 minutos para que o Raspberry Pi tire todas as fotos. Para obter o melhor efeito ao gravar filmagens com lapso de tempo, a câmara deve ser direcionada, por exemplo, para uma rua movimentada ou nuvens.
O ato de tirar fotografias podem ser parado usando CTRL + C.
Novas fotos aparecerão na pasta depois de 5 minutos:
As fotos estão prontas, então é hora de combiná-las num filme. O programa avconv, que faz parte do pacote libav-tools, será útil aqui. Portanto, instalamos as ferramentas necessárias:
Após a instalação, podemos chamar o comando que o filme irá gerar para nós:
avconv -i image%04d.jpg -r 10 -vcodec libx264 -vf scale=1280:720 timelapse.mp4
Indo da esquerda. Com o parâmetro -i, selecionamos o material de entrada (as nossas fotos). Use -r para especificar o número de frames por segundo. Neste exemplo, inserimos 10, o que significa que, por um segundo de nosso filme, haverá 10 fotos tiradas anteriormente. Os próximos parâmetros definem o codec, a resolução e o nome do vídeo criado. A geração de material pode demorar muito tempo:
Abaixo pode ver um filme com lapso de tempo, que levou algumas horas para ser gravado:
O comprimento do material resultante pode ser estimado com base em relacionamentos simples:
número de fotos tiradas=comprimento/intervalo
duração do filme=número de fotos tiradas/filme FPS
Tirando fotos com lapso de tempo "no fundo"
Este método de tirar fotos para filmes em time-lapse foi bloqueado por Raspberry Pi. Felizmente, também podemos realizar operações em segundo plano. Para este propósito, usaremos o operador &, que permite executar comandos em segundo plano. Basta adicionar o caractere & precedido por um espaço no final:
raspistill -t 300000 -tl 2000 -o image%04d.jpg -w 1280 -h 720 -rot 180 &
Podemos visualizar a atividade em segundo plano, emitindo o comando jobs. Por sua vez, o retorno a esta tarefa será possível usando fg. Então, se necessário, será capaz de completar a tarefa usando CTRL + C.
Cuidado! Esta forma de executar tarefas em segundo plano requer que a conexão com o Raspberry seja sempre suportada (o terminal não pode ser fechado).
Neste artigo, usamos programas básicos para tirar fotos e vídeos usando o Raspberry Pi. Verificamos alguns dos aplicativos de câmara mais populares, mas é apenas o começo. Nós vamos voltar para a câmara!
Nós encorajamos a testar! No próximo episódio, veremos o básico das portas do GPIO. Nós conectaremos componentes eletrônicos ao Raspberry Pi e poderemos controlá-los com muita facilidade!