我的应用程序使用实时视频流,实时向用户显示一些演示文稿(!)。我有一台ip摄像头和视频编码器安装了我的电脑和一台为视频提供服务的服务器(ustream)。
服务视频和真实视频之间的延迟时间接近30秒。
这个问题对我的情况来说是微不足道的问题。但在我的情况下,所有用户必须同时看到相同的屏幕。 (没有滞后)就像一个实时视频游戏!
第一个问题是用户之间存在滞后(接近4秒!)的原因? 第二个问题我怎样才能将这个滞后时间变为零或低滞后?
编辑:
Stream Provider是ustream.com,h264编码360p 750fps
答案 0 :(得分:2)
如前所述,您收集的内容与用户看到的内容之间的延迟来自:
所以我希望你能看到你需要优化多少东西才能使延迟小于1000毫秒。
我们已经实施了WebRTC服务器,从IP摄像头到服务器以及从服务器到浏览器都实现了大约300毫秒的延迟。因此常规普通浏览器在300毫秒后获取视频。视频从莫斯科转移到阿姆斯特丹并返回。
WebRTC确实是一种很好的方式来满足您的需求。
答案 1 :(得分:0)
让我回答你的问题:
这主要是因为播放器中的用户之间没有时间同步,这不是一件容易的事。
首先让我们考虑一下当用户在UTC时间启动视频时会发生什么:
这或多或少会发生什么,无论它是什么类型的流媒体。
所以现在,当其他一些用户,几秒钟后,启动相同的流 - 他们将打开相同的块(因为这是“最新的”)并从相同的关键帧开始,但这次它已经有几秒钟了。 / p>
你观察的4秒意味着ustream块可能是那么精确的长度。
我必须声明我从未尝试过在多个用户之间同步视频,但我确实曾与同事争论过这是可能的,这是我采取的方法:
如果一切顺利,所有用户都会在完全相同的时间(或至少低于单帧持续时间的40毫秒)看到视频。