web-dev-qa-db-fra.com

Comment réduire le délai - Streaming VLC à partir d'une webcam

Je diffuse de la vidéo et du son depuis ma webcam/microphone via UDP. Lorsque je regarde le flux (même sur la même machine), il y a un retard d'environ 4 secondes. J'ai essayé de définir le paramètre de cache UDP sur 0 ou 1, mais cela ne semble pas aider. J'ai essayé de réduire les débits vidéo et audio, en utilisant le son mono et en réduisant le taux d'échantillonnage en vain.

Quelqu'un a-t-il une idée de la façon dont je pourrais réduire le délai, à quelque chose de mieux adapté à une vidéo conférence, c'est-à-dire <1 seconde?

Y a-t-il un paramètre que je peux appliquer à la visionneuse/streamer qui peut aider?

Merci,

Marc

16
Marc

Dans mon étude du streaming VLC avec webcam, j'ai eu un délai de 2-3 secondes pour le flux de multidiffusion UDP transcodé avec le conteneur WMV/ASF + le codec WMV2 de la webcam intégrée créative de Dell avec cif taille de la vidéo.

Si j'utilise un conteneur MP4/MOV + un codec H.264, j'ai obtenu deux fois le retard du premier avec les mêmes paramètres de débit, fps et échelle.

J'ai désactivé l'audio dans les deux paramètres de streaming, car cela ne m'intéressait pas.

J'ai fait l'étude avec deux versions de VLC:

  • VLC 1.1.11 (dernière version stable de Windows)
  • VLC 2.1.0 (dernière version de construction nocturne)

Avec la première version, je pouvais transcoder et diffuser à partir de la webcam, mais il ne pouvait pas lire le flux correctement (cela donnait juste un flux vidéo noirci)

Avec la deuxième version, cela fonctionnait bien pour le transcodage, le streaming et la lecture.

Cette étude a été réalisée sur:

Intel Core 2 Duo T7250
4GB DDR2-667 SDRAM 
SATA 7200 RPM HDD
GeForce 8400M GS 128MB GDDR3 (+ 128MB shared memory = 256MB video memory)
Windows XP Pro SP3
3
ee.

Si vous utilisez le protocole rtsp pour diffuser en vidéo/audio, vous pouvez régler le délai à

tools-> preferences-> all-> input/codecs-> demuxers-> RTP/RTSP-> cache value

tools-> preferences-> all-> input/codecs-> demuxers-> RTP-> RTP de-jitter buffer buffer length

9
ciphor

Essaye ça.

#!/bin/sh
ETH=eth0

cvlc --miface=$ETH v4l2:///dev/video0 :input-slave=alsa://hw:0,0 :sout=#transcode{vcodec=h264,venc=x264{preset=ultrafast,tune=zerolatency,intra-refresh,lookahead=10,keyint=15},scale=auto,acodec=mpga,ab=128}:rtp{dst=224.10.0.1,port=5004,mux=ts} :sout-keep >/dev/null 2>/dev/null &
vlc1=$!
vlc  --miface=$ETH rtp://224.10.0.1 >/dev/null 2>/dev/null &
vlc2=$!
wait $vlc2
kill -9 $vlc1

J'ai un retard de 2 secondes avec une webcam 720p, il produit environ 2,5 Mbit/s de trafic et charge pour un cœur ~ 30%.

5
kovserg