dados de fluxo de vídeo da webcam de tubos para processamento

3

Descobri que no linux você pode usar o video4linux2 e o ffmpeg para ler os dados do / dev / video0 e pegar o vídeo da webcam. O ffmpeg envia os dados para um arquivo de vídeo, que tem um tamanho limitado. Minha pergunta é:

Posso canalizar o fluxo de vídeo para o visualizador remoto e para um programa local para que eu possa continuar processando os dados do fluxo em tempo real?

Obrigado.

    
por vivienlwt 07.10.2013 / 10:43

2 respostas

2

Isso é possível com o tee muxer . Exemplo modificado da documentação:

ffmpeg -f v4l2 -i /dev/video0 -c:v libx264 -c:a mp2 -f tee -map 0:v -map 0:a \
"archive-20121107.mkv|[f=mpegts]udp://10.0.1.255:1234/"

Observe que os fluxos precisam ser mapeados explicitamente, por isso é necessário -map .

Veja também:

por 07.10.2013 / 19:34
0

Eu encontrei a resposta do link para obter a webcam como entrada de vídeo ( usando biblioteca). Você só precisa definir os parâmetros na função avformat_open_input ().

Primeiro, o registro do dispositivo é importado:

avdevice_register_all();

Em seguida, defina o formato de entrada:

AVInputFormat *inputFormat =av_find_input_format("v4l2");

Possível definir outras opções:

AVDictionary *options = NULL;

av_dict_set (& ops, "framerate", "25", 0);

Finalmente:

avformat_open_input(&pFormatCtx, "/dev/video0", inputFormat, &options);

Depois disso, para cada quadro lido e decodificado da fonte de entrada, você pode passá-lo para a exibição ou outra função personalizada.

Espero que isso seja útil para os outros.

    
por 13.10.2013 / 06:33