首页 > 解决方案 > HTTP 流式桌面到浏览器的巨大延迟

问题描述

我正在尝试为浏览器解决方案组合一个可靠、相当低(<2s)延迟的桌面窗口共享。目前我有:

使用 FFMPEG 的客户端发送方:

ffmpeg -f gdigrab -i "title=notepad.exe" -r 10 -framerate 10  -c:v libx264 -g 50  -preset fast -tune zerolatency -f rtp rtp://192.168.1.85:1234

服务器使用 VLC 重新流式传输到 HTTP:

vlc -vv test.sdp  --sout=#transcode{vcodec=theo,vb=1600,scale=1,channels=1,acodec=none}:http{dst=:8080/webcam.ogg} :no-sout-rtp-sap :no-sout-standard-sap :sout-keep 

其中 sdp 文件是从 ffmpeg 命令的输出生成的

客户端浏览器:

<video  id="video" autoplay loop muted preload="auto">
<source src="http://192.168.1.85:8080/webcam.ogg" type="video/ogg"/>
</video>

这有效并提供了良好的质量。但是延迟很糟糕(大约 10 秒),我不知道如何调整它。我知道延迟存在于 VLC 转码/重新流式传输中 - 在服务器上显示来自客户端的 RTP 流只​​有大约 1 秒的延迟。

我想有两个问题 - 这种方法可以合理调整,还是方法一开始就错了?

标签: ffmpegstreamingvlcscreensharing

解决方案


通过 http 的 Sub 2 秒几乎是不可能的。可以减少延迟,但您可能需要更换 http 源软件,将交付切换为分块传输,优化编码管道并管理播放器缓冲区。即使那样,我也怀疑你会达到 2 秒。


推荐阅读