如何减少延迟 - 从网络摄像头流式传输VLC

Mar*_*arc 17 performance vlc video-streaming audio-streaming

我通过UDP从我的网络摄像头/麦克风传输视频和音频.当我查看流(即使在同一台机器上)时,会有大约4秒的延迟.我尝试将UDP缓存设置为0或1,但似乎没有帮助.我尝试降低视频和音频比特率,使用单声道声音并降低采样率都无济于事.

有没有人有任何想法如何减少延迟,更适合视频会议,即<1秒?

是否有可以应用于观众/流光的设置可以提供帮助?

谢谢,

cip*_*hor 9

如果您使用rtsp协议流式传输到视频/音频,则可以调整延迟时间

tools-> preferences-> all-> input/codecs-> demuxers-> RTP/RTSP->缓存值

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

  • 注意:夜间构建版本VLC 2.1.0-git-20120203-0008的GUI中不存在"缓存值(ms)"和"RTP去抖动缓冲区长度(msec)"选项.即使是"输入/编解码器 - >访问模块 - > UDP"树项也不见了,因此GUI中没有"UDP缓存"选项. (8认同)
  • 他们现在称之为"网络缓存",但它似乎没有相同的方式.我无法在2.0.4中获得1.1.9(~100-150 ms)的延迟(对于如此低的值,它会变得不稳定). (2认同)
  • 我将--rtsp-caching设置为130到200之间的任何东西.你必须进行实验.请记住,视频源的缓冲延迟会掩盖此延迟.我对1.1.3和1.1.6也有很好的经验.与> = 2.0相比,它们摇摆不定 (2认同)

小智 5

尝试这个。

#!/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
Run Code Online (Sandbox Code Playgroud)

我对720p网路摄影机有2秒的延迟,它会产生约2.5Mbit / s的流量,而一个核心的负载约为30%。


ee.*_*ee. 4

在我对使用网络摄像头进行 VLC 流式传输的研究中,使用来自戴尔 Creative 集成网络摄像头的 WMV/ASF 容器 + WMV2 编解码器转码的 UDP 多播流具有CIF视频大小,延迟为 2-3 秒。

如果使用 MP4/MOV 容器 + H.264 编解码器,在比特率、fps 和比例设置相同的情况下,我得到的延迟是前者的两倍。

我在两个流媒体设置中禁用了音频,因为我对它不感兴趣。

我用两个 VLC 版本进行了研究:

  • VLC 1.1.11(最新的 Windows 稳定版本)
  • VLC 2.1.0(最新的夜间构建版本)

在第一个版本中,我可以从网络摄像头进行转码和流式传输,但它无法正确播放流(它只是给出了黑色的视频流)

第二个版本在转码、流媒体和播放方面表现良好。

这项研究是在:

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
Run Code Online (Sandbox Code Playgroud)