Alternativas para Video4Linux2 para pegar na webcam (usando FFmpeg)

2

Estou recebendo (dois erros alternados) seguindo este guia para streaming de um Raspberry Pi . Existem outros grabber além do V4L2 que eu possa usar com ffmpeg ?

Ou existem outras configurações de streaming que eu poderia experimentar? Eu dei 'movimento', mas foi muito irregular e não consegui mais do que um par de fps em 160x120.

Eu também tentei o VLC, mas recebi um erro com isso. (Algo sobre ALSA - eu estou supondo porque nem o RPi ou webcam tem um microfone ou outra entrada de áudio).

(E sim, a webcam funciona com o RPi, consegui visualizá-la usando guvcview .)

Obrigado!

Editar 1 Tanto quanto eu posso dizer, praticamente tudo (por exemplo, VLC, movimento, etc) usam V4L2, então parece que não há alternativas.

Edit 2: Abaixo está uma configuração que usei e os resultados . Este é agora um terceiro problema. Eu não posso replicar as outras duas mensagens de erro durante a execução do ffmpeg / server que eu tinha. Eu corri top e há quase nenhum uso da CPU por outros processos. É preocupante que a webcam parece sempre forçar a captura bruta a 30fps. Em algumas configurações, o sistema lida, mas com um FPS de baixa saída (como no movimento), e outras vezes gera um erro ou outro.

Comando:

ffserver -f ~/ffserver3.conf & ffmpeg -v verbose -r 1 -s 320x240 -f video4linux2 -i /dev/video0 http://localhost:8080/webcam.ffm

ffserver3.conf:

Port 8080
BindAddress 0.0.0.0
MaxClients 10
MaxBandwidth 50000
NoDaemon

<Feed webcam.ffm>
file /tmp/webcam.ffm
FileMaxSize 10M
</Feed>

<Stream webcam.mjpeg>
Feed webcam.ffm
Format mjpeg
VideoSize 320x240
VideoFrameRate 1
VideoBitRate 50000
VideoQMin 1
VideoQMax 10
</Stream>

<Stream stat.html>
Format status
</Stream>

Resultado:

ffmpeg version N-51221-gdda04a5 Copyright (c) 2000-2013 the FFmpeg developers
  built on Mar 23 2013 02:21:23 with gcc 4.6 (Debian 4.6.3-12+rpi1)
  configuration:
  libavutil      52. 22.101 / 52. 22.101
  libavcodec     55.  1.100 / 55.  1.100
  libavformat    55.  0.100 / 55.  0.100
  libavdevice    55.  0.100 / 55.  0.100
  libavfilter     3. 48.100 /  3. 48.100
  libswscale      2.  2.100 /  2.  2.100
  libswresample   0. 17.102 /  0. 17.102
[video4linux2,v4l2 @ 0x256c4b0] fd:3 capabilities:4000001
[video4linux2,v4l2 @ 0x256c4b0] The driver changed the time per frame from 1/1 to 1/30
ffserver version N-51221-gdda04a5 Copyright (c) 2000-2013 the FFmpeg developers
  built on Mar 23 2013 02:21:23 with gcc 4.6 (Debian 4.6.3-12+rpi1)
  configuration:
  libavutil      52. 22.101 / 52. 22.101
  libavcodec     55.  1.100 / 55.  1.100
  libavformat    55.  0.100 / 55.  0.100
  libavdevice    55.  0.100 / 55.  0.100
  libavfilter     3. 48.100 /  3. 48.100
  libswscale      2.  2.100 /  2.  2.100
  libswresample   0. 17.102 /  0. 17.102
[video4linux2,v4l2 @ 0x256c4b0] ioctl(VIDIOC_DQBUF): Input/output error
[video4linux2,v4l2 @ 0x256c4b0] Estimating duration from bitrate, this may be inaccurate
Input #0, video4linux2,v4l2, from '/dev/video0':
  Duration: N/A, bitrate: 36864 kb/s
    Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 320x240, 36864 kb/s, 30 fps, 30 tbr, 1000k tbn, 1000k tbc
[http @ 0x256d3c0] HTTP error 503 Server too busy
http://localhost:8080/webcam.ffm: Input/output error
    
por Jodes 23.03.2013 / 08:36

1 resposta

0

O Banco de Testes V4L2 (pacote qv4l2) pode ajudar a conhecer os parâmetros da webcam. Por exemplo, lista possíveis combinações de resolução / framerate.

O driver fictício do Vivi (sudo modprobe vivi) pode ajudar a identificar se o problema está vindo do driver ou do ffmpeg. Ele cria / dev / videoX exibindo um cartão de texto (padrão de texto) mencionando os parâmetros atuais.

    
por 10.08.2017 / 22:01