我正在尝试为浏览器解决方案提供可靠,合理的低延迟(<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
从ffmpeg命令的输出生成sdp文件的地方
客户端浏览器:
<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秒的延迟。
我猜有两个问题-这种方法可以合理地调整,还是从一开始就错误?
答案 0 :(得分:0)
通过HTTP不到2秒几乎是不可能的。可以减少延迟,但是您可能需要更换http原始软件,将交付切换为分块传输,优化编码管道并管理播放器缓冲区。即使那样,我仍然怀疑你会达到2秒。