web-dev-qa-db-ja.com

遅延を減らす方法-WebカメラからのVLCストリーミング

UDP経由でWebカメラ/マイクからビデオとオーディオをストリーミングしています。ストリームを(同じマシン上でも)表示すると、約4秒の遅延があります。 UDPキャッシュの設定を0または1に設定しようとしましたが、役に立たないようです。ビデオとオーディオのビットレートを下げ、モノラルサウンドを使用し、サンプルレートをすべて下げてみました。

遅延をビデオ会議に適したもの、つまり1秒未満に減らす方法はありますか?

ビューアー/ストリーマーに適用できる設定はありますか?

ありがとう、

マーク

16
Marc

Webカメラを使用したVLCストリーミングの研究では、WMV/ASFコンテナーでトランスコードされたUDPマルチキャストストリームと、DellのCreative Integrated WebcamのWMV2コーデックでcifビデオサイズで2〜3秒の遅延が発生しました。

MP4/MOVコンテナ+ H.264コーデックを使用している場合、ビットレート、fps、スケールの設定が同じで、前者の2倍の遅延が発生しました。

興味がなかったので、両方のストリーミング設定でオーディオを無効にしました。

私は2つのVLCバージョンで調査を行いました。

  • VLC 1.1.11(最新のWindows安定版リリース)
  • VLC 2.1.0(最新のナイトリービルドバージョン)

最初のバージョンでは、ウェブカメラからコードを変換してストリーミングできましたが、ストリームを適切に再生できませんでした(ビデオストリームが黒くなっただけです)

2番目のバージョンでは、トランスコーディング、ストリーミング、および再生に適していました。

この研究は以下で行われました:

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.

Rtspプロトコルを使用してビデオ/オーディオにストリーミングする場合は、次の場所で遅延を調整できます。

tools-> preferences-> all-> input/codecs-> demuxers-> RTP/RTSP->キャッシュ値

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

9
ciphor

これを試して。

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

720pウェブカメラで2秒の遅延があり、約2.5Mbit/sのトラフィックを生成し、1つのコアで約30%の負荷をかけます。

5
kovserg