我一直在试图弄清楚如何使用VLC流式传输我的桌面(通过LAN),并实现尽可能低的延迟(<100ms)。目标是让另一台计算机接收流媒体,并有可能在流媒体的同时玩游戏(即在电视旁边的PC上玩PC1游戏)。
我应该使用什么设置?
编辑:我也愿意使用VLC以外的东西。
发布于 2013-06-10 05:23:09
我也尝试过同样的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或
$ ffmpeg -f x11grab -s 1600x900 -r 50 -vcodec libx264 -preset ultrafast -tune zerolatency -crf 18 -f mpegts udp://192.168.0.10:1234根据屏幕分辨率(-s <your resolution>)、刷新率(-r <fps>)、带宽(-b:v <bits/s>)、质量(-crf 18或-qp 18,越低越好)和目标ip:端口进行调整。
如果运行的是Windows,请用dshow代替x11grab。
使用ffplay udp://192.168.0.10:1234或ffplay sdp://192.168.0.10:1234观看。
请注意,这些选项都不会流式播放声音。在流式传输音频时,我也无法获得如此低的延迟。这可能是可行的,我只是想不出怎么做。
响应最快的客户端是ffplay,VLC引入了太多的延迟,即使它的网络缓存设置为零-使用这样的缓存,它实际上变得更糟,因为它试图‘重新同步’流太频繁。
如果你需要更多的细节,我做了一个关于我的发现的post。希望能有所帮助。我很感谢你的反馈。^_^
https://stackoverflow.com/questions/16369745
复制相似问题