使用 VLC 通过 RTP 流式传输桌面,延迟尽可能低

问题描述 投票:0回答:2

我一直在尝试找出如何使用 VLC 流式传输我的桌面(通过 LAN)并实现尽可能低的延迟(<100ms). The goal is to have another computer receive the stream and potentially play games while streaming (i.e playing game from PC1 on the PC beside the TV).

我应该使用什么设置?我尝试了多种方法但尚未成功。

编辑:我也愿意使用 VLC 以外的其他东西。

stream streaming vlc rtsp rtp
2个回答
10
投票

我也尝试过使用 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
即使将其网络缓存设置为零,也会引入太多延迟 - 使用这样的缓存,它实际上会变得更糟,因为它过于频繁地尝试“重新同步”流。

如果您需要更多详细信息,我发布了关于我的发现的帖子。希望能帮助到你。我很感激任何反馈。 ^_^


0
投票

它需要使用 -i :0.0 标志设置显示,如显示 0,以下对我有用,现在我正在尝试降低延迟而不放弃质量;

ffmpeg -f x11grab -i :0.0 -s 1920x1080 -r 1000 -vcodec libx264 -preset ultrafast -tune zerolatency -crf 18 -f mpegts udp://192.168.13.37:5000
© www.soinside.com 2019 - 2024. All rights reserved.