Introdução
Esses dias estava pensando se existia algum modo de usar a webcam de meu notebook pelo terminal. A minha idéia era usar um comando para tirar fotos e até mesmo gravar vídeos pela webcam sem usar um programa gráfico.
Nesse post iremos aprender a usar o programa streamer do pacote xawtv para tirar fotos pela webcam usando a linha de comando.
Configuração da Webcam
Não é objetivo desse post mostrar como configurar a sua webcam no linux, pois isso fugiria um pouco do assunto principal. Então, à partir daqui irei considerar que sua webcam está instalada e configurada corretamente em seu sistema.
O aplicativo streamer
Dos diversos programas [1] usados para tirar fotos usando a webcam pela linha de comando, o streamer foi o que achei mais simples e flexível. Antes de tudo vamos instalá-lo:
$ sudo yum install xawtv
O streamer faz parte do projeto xawtv que surgiu da necessidade de assistir e gravar programas de TV pelo computador. Mais informações em [2].
De acordo com [3], a instalação no Ubuntu é feita assim:
$ sudo apt-get install streamer
Tirando suas primeiras fotos
Tire uma foto usando sua webcam com o comando:
$ streamer -c /dev/video0 -b 16 -o outfile.jpeg
-c /dev/video0 : Identifica o dispositivo associado à sua webcam. Geralmente esse dispositivo é o /dev/video0, como indicado.
-b 16 : O número de cores.
-o outfile.jpeg : Indica o arquivo de saída. Nesse caso, a foto será salva no arquivo outfile.jpeg usando o formato de compressão JPEG. OBS: Use a extensão .jpeg e não a .jpg.
Para mais detalhes: man streamer
Problemas com fotos escuras
Agora abra o arquivo output.jpeg e veja o que a sua webcam capturou. Em alguns casos a foto tirada fica escura e isso ocorre quando ela é tirada antes mesmo da webcam ser “carregada”. Se esse for o seu caso, você terá que tirar fotos durante alguns segundos até obter uma de boa qualidade.
O comando streamer possui uma opção que indica por quanto tempo ele irá tirar as fotos. Veja um exemplo no comando abaixo [4]:
$ mkdir fotos $ streamer -c /dev/video0 -t 00:00:02 -b 32 -o fotos/output_00.jpeg
Serão tiradas fotos por 2 segundos (opção -t) e em média 10 fotos por segundo. Entre na pasta fotos e você verá em torno de 20 fotos, sendo que (no meu caso) somente as 5 últimas estão nítidas e as restantes escuras.
Outros aplicativos
Podemos ver em [1] que há muitos outros aplicativos de linha de comando que manipulam a webcam. Um deles é o camE que cheguei a fazer alguns testes, porém achei sua configuração um pouco confusa por ter que configurar um servidor FTP ou SSH para receber as fotos tiradas.
Conclusão
Com a ajuda de programas parecidos com o streamer, podemos facilmente integrar a manipulação da webcam em shell scripts ou em outros aplicativos de linha de comando. O stramer fornece uma interface simples e flexível para tirar fotos e gravar vídeos da webcam, podendo ser facilmente integrado em outros programas.
O único problema encontrado foi o tal tempo de “carregamento” da webcam que gira em torno de 2 segundos e que impossibilita o capturamento de fotos e vídeos nesse intervalo. Entretanto vimos que tirando fotos durante um intervalo maior que 2 segundos podemos obter fotos perfeitamente nítidas.
Referências
[1] Framegrabbing Applications (Acessado em: Novembro/2011)
http://tldp.org/HOWTO/Webcam-HOWTO/framegrabbers.html
[2] Xawtv (Acessado em: Novembro/2011)
http://en.wikipedia.org/wiki/Xawtv
[3] Webcam – Grab an image from the command line (Acessado em: Novembro/2011)
http://ubuntu.online02.com/node/25
[4] dark image captured by streamer (Acessado em: Novembro/2011)
http://ubuntuforums.org/showthread.php?t=1624415
[5] how to record the webcam with command line? (Acessado em: Novembro/2011)
http://ubuntuforums.org/showthread.php?t=1337440
OBS: Visite o link acima para saber como gravar vídeos pela webcam usando o programa streamer.
Você sabe se tem como fazer algo semelhando no Windows?
Olá Airy,
Não tenho conhecimento se há algo semelhante no Windows. Fiz algumas pesquisas rápidas no google e encontrei esse post:
Para testar, baixe o executável na página e execute conforme descrito:
Iniciar->Executar->cmd.txt
$ cd “My Documents\Downloads”
$ CommandCam /filename nome_da_imagem.bmp
Pelo que sei esse programa só tira fotos e não grava vídeos. Estou sem o Windows aqui no momento para testar esse e outros programas.
Mais tarde pesquisarei melhor e assim que encontrar o programa ideal, eu posto aqui.
Abraços.
Olá Daemonio,
Muito obrigado!!! Era exatamente o que eu estava buscando! Uma pena não gravar vídeo, mas acho que isso seria demais…
Mais uma vez, muito obrigado pela sua ajuda!
Abraços.
Daemonio,
eu instalei o Ubunto em uma maquina virtual(VirtualBox) segui os passos por vc citado acima, e ao executar:
streamer -c /dev/video0 -b 16 -o outfile.jpeg
obtive o erro abaixo:
“Could not connect device (/dev/video0)”
Poderia me ajudar?
Olá Edson,
Olhe se há outro dispositivo associado a sua webcam:
$ ls /dev/video*
Se aparecer /dev/video1, por exemplo, é só trocar no parâmetro.
Se não aparecer nada é porque a webcam não foi detectada pelo kernel e o módulo correto não foi carregado.
Você consegue executar algum outro aplicativo que utiliza a webcam? (ex: cheese)
t+
Boa noite,
executei o comando $ ls /dev/video* e deu que não existe, a webcam e integrada ao notbook e um dell inspiron 14.
executei os comandos
$ lspci e $lsusb para tentar identificar a webcam e nada.
instalei o cheese e mesmo assim não consigo acessa-la
Ok Edson,
Encontrei o comando para dar load no módulo:
$ sudo modprobe uvcvideo
Depois disso, abra o programa Cheese para ver se a webcam está funcionando.
Se não der, a gente troca ideia por e-mail.
t+
Pingback: Como criar vídeos “time lapse” | Monolito Nimbus