Acessando Streams da Webcam Através do Shell

1

Estou escrevendo um aplicativo (rodando no ARM Ubuntu) que precisa ser capaz de processar imagens no fluxo de vídeo de uma webcam. A maneira mais fácil de obter os dados é através do fluxo de saída de um processo, por isso estou planejando hospedar um processo filho, executar um comando e consumir a saída. Meu plano atual é usar o FFMPEG, mas posso usar qualquer ferramenta de linha de comando que funcione no ARM. Existem duas partes na minha pergunta:

  1. Qual comando do FFMPEG (ou outro utilitário, se houver um melhor) eu preciso usar da linha de comando para obter um fluxo de dados de pixel de uma webcam?
  2. Em qual formato a saída estará (de preferência apenas dados RGB, sem codificações ou cabeçalhos)? Preciso analisá-lo no meu aplicativo e preciso saber o formato de codificação.

Qualquer informação seria apreciada!

    
por Wasabi Fan 29.09.2013 / 22:25

2 respostas

1

Com o FFmpeg e o video4linux2 , você pode obter praticamente qualquer entrada da webcam . Certifique-se de usar uma versão recente de ffmpeg da página de download ou compilando-se . Os tamanhos dos quadros da câmera e taxas de quadros podem ser verificados com:

v4l2-ctl --list-formats-ext

Por exemplo, se você descobriu qual a taxa de quadros e o tamanho da imagem que sua webcam oferece:

ffmpeg -f video4linux2 -r 25 -s 640x480 -i /dev/video0 \
-c:v rawvideo -f rawvideo -pix_fmt yuv420p -

Isso capturaria vídeo de 25 fps a 640 × 480 pixels da câmera em /dev/video0 e saída de quadros YUV brutos codificados com o formato de pixel planar YUV 4: 2: 0 para stdout. O codificador rawvideo e o formato cuidam disso. Não haverá cabeçalhos.

O que você pode mudar aqui:

  • Defina um framerate ou -size diferente.

  • Aqui, o - no final envia os dados para o stdout, mas você também pode escolher um arquivo se desejar.

  • Para ver quais outros formatos de pixel estão disponíveis, execute ffmpeg -pix_fmts . Sua ordem de bytes é explicada em fourcc.org . Se você realmente deseja dados RGB (embora duvide que essa seja a saída padrão da sua câmera), você pode usar -pix_fmt rgb24 , por exemplo.

por 30.09.2013 / 09:40
-1

Definitivamente confira as opções de linha de comando do VLC. Eu não estou realmente familiarizado com seus fluxos de saída, mas parece que li que poderia fazer praticamente o que você está tentando fazer.

Homepage do VLC

    
por 30.09.2013 / 09:30