2012-02-02 16 views
13

Sto trasmettendo video e audio dalla mia webcam/microfono su UDP. Quando guardo il flusso (anche sulla stessa macchina) c'è un ritardo di circa 4 secondi. Ho provato a impostare l'impostazione della cache UDP su 0 o 1, ma non sembra essere di aiuto. Ho provato a ridurre i bit rate video e audio, usando il suono mono e riducendo il campionamento tutto inutilmente.Come ridurre il ritardo - Streaming VLC da una web cam

Qualcuno ha qualche idea su come ridurre il ritardo, su qualcosa di più adatto a una videoconferenza, vale a dire < 1 secondo?

Esiste un'impostazione che posso applicare al visualizzatore/streamer che può essere d'aiuto?

Grazie,

Marc

risposta

3

Nel mio studio di VLC in streaming con webcam, ho ottenuto il ritardo di 2-3 secondi per UDP flusso multicast transcodificato con WMV/ASF contenitore + WMV2 codec da Dell creativo webcam integrata con cif dimensioni del video.

Se si utilizza un contenitore MP4/MOV + codec H.264, ho ottenuto il doppio del ritardo del primo con le stesse impostazioni di bitrate, fps e scala.

Ho disabilitato l'audio in entrambe le impostazioni di streaming poiché non ero interessato a questo.

ho fatto lo studio con due versioni di VLC:

  • VLC 1.1.11 (ultima versione stabile di Windows)
  • VLC 2.1.0 (ultima nightly build versione)

Con il prima versione, potevo transcodificare e trasmettere dalla webcam, ma non era in grado di riprodurre correttamente il flusso (solo un flusso video annerito)

Con la seconda versione, funziona bene per transcodifica, streaming e riproduzione.

Questo studio è stato fatto su:

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 
+0

Ho provato le impostazioni simulate sul mio laptop, il processore è un i7, tuttavia la scheda grafica è una Intel integrata. Sai se il processore della scheda grafica viene utilizzato durante lo streaming video? Questo potrebbe essere il mio problema. – Marc

+1

Sì, sotto Windows, 'dshow: //' è un'interfaccia DirectShow; come tutte le interfacce DirectX, utilizzerà tutte le funzionalità a accelerazione hardware di una GPU DirectX in grado di migliorare le prestazioni se vengono rilevate sul lato server o sul lato client. – ecle

7

Se si utilizza il protocollo RTSP per lo streaming di video/audio, è possibile regolare il ritardo in

strumenti-> Preferenze> all> ingresso/codecs-> demuxers-> RTP/RTSP-> valore caching

tools-> Preferenze> all> ingresso/codecs-> demuxers-> RTP-> RTP de-jitter lunghezza del buffer

+8

Nota: l'opzione 'Caching value (ms)' e 'RTP de-jitter buffer length (msec)' non sono presenti nella GUI della versione night build VLC 2.1.0-git-20120203-0008. Persino l'elemento ad albero 'Input/Codecs-> Access modules-> UDP' manca così l'opzione' UDP caching' non è disponibile dalla GUI. – ecle

+2

Ora chiamano "caching della rete", ma non sembra funzionare allo stesso modo. Non riesco a ottenere la grande latenza che ho ottenuto in 1.1.9 (~ 100-150 ms) in 2.0.4 (molto di più, diventa instabile per valori così bassi). –

+1

@YngveSneenLindal quale riga di comando hai usato per tali latenze con 1.1.9? – rogerdpack

4

Prova questa .

#!/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 

ho 2 secondi di ritardo con 720p webcam, si producono circa 2.5Mbit/s traffico e carico per un core ~ ​​30%.