Stream 使用VLC以尽可能低的延迟通过RTP传输桌面

Stream 使用VLC以尽可能低的延迟通过RTP传输桌面,stream,streaming,vlc,rtsp,rtp,Stream,Streaming,Vlc,Rtsp,Rtp,我一直在试图找出如何使用VLC传输我的桌面(通过LAN),并实现尽可能低的延迟(我也用VLC尝试过同样的方法,但始终无法获得低于3秒的延迟。FFmpeg创造了奇迹,最终提供了低于1秒的延迟 mpeg2video和UPD提供了最好的结果,RTP延迟感觉有点糟糕,但非常接近。移动到x264可以提高质量,以换取更多的延迟,但这实际上取决于有多少动态内容以及CPU有多快。我只让x264使用UDP,但必须有一种方法使用RTP 我不确定这对播放是否可行。服务器将承受繁重的工作负载,延迟将是显而易见的——至少

我一直在试图找出如何使用VLC传输我的桌面(通过LAN),并实现尽可能低的延迟(我也用VLC尝试过同样的方法,但始终无法获得低于3秒的延迟。FFmpeg创造了奇迹,最终提供了低于1秒的延迟

mpeg2video和UPD提供了最好的结果,RTP延迟感觉有点糟糕,但非常接近。移动到x264可以提高质量,以换取更多的延迟,但这实际上取决于有多少动态内容以及CPU有多快。我只让x264使用UDP,但必须有一种方法使用RTP

我不确定这对播放是否可行。服务器将承受繁重的工作负载,延迟将是显而易见的——至少在Linux上,我不知道windows

在Linux上,请尝试以下命令之一:

$ ffmpeg -f x11grab -s 1600x900 -r 50 -vcodec mpeg2video -b:v 8000 -f rtp rtp://192.168.0.10:1234

调整屏幕分辨率(
-s
)、刷新率(
-r
)、带宽(
-b:v
)、质量(
-crf 18
-qp 18
,越低越好)和目标ip:port

如果运行Windows,请使用
dshow
代替
x11grab

使用
ffplay观看udp://192.168.0.10:1234
ffplaysdp://192.168.0.10:1234

请注意,这些选项都不会流式播放声音。流式播放音频时,我无法获得如此低的延迟。这可能是可行的,我只是不知道如何实现

响应速度最快的客户端是
ffplay
VLC
引入了太多的延迟,即使其网络缓存设置为零-使用这种缓存,情况实际上变得更糟,因为它试图太频繁地“重新同步”流


如果您需要进一步的详细信息,我会对我的发现进行详细说明。希望能有所帮助。我感谢您的反馈。^ ^ ^

FFmpeg还有一些x264编码设置,如“-tune zerolatency”这在这里可能很有用:在阅读本文之前,我访问了您的网站。我认为vlc和ffplay具有几乎相同的延迟。我曾尝试按以下URL传递分辨率参数,但似乎不起作用,我的意思是rtsp录制的mp4视频保持高分辨率,即使我已通过320x240:(“-t 30-I\”rtsp://xxx.xxxxxx.com/2\“-s 320x240-acodec copy-vcodec copy-to”I get
输出文件#0不包含任何流
$ ffmpeg -f x11grab -s 1600x900 -r 50 -vcodec libx264 -preset ultrafast -tune zerolatency -crf 18 -f mpegts udp://192.168.0.10:1234