在过去的几个月里,我和一个开发人员一直在开发一个屏幕共享小程序,它可以流式传输到像 Wowza 或 Red5 这样的媒体服务器,但无论我们做什么,我们都有大约 5 秒的延迟,这对于直播来说太长了人们相互交流的应用程序。我们尝试过 xuggle、不同的编码器、不同的播放器、不同的网络、不同的媒体服务器,甚至在本地流式传输,都存在显着的延迟。
所以,我开始怀疑……</p>
Java 是否足够快来进行实时屏幕共享?
我见过很多用 Java 编写的屏幕录制小程序,但没有一个是实时流式传输的。现场完成的所有事情,例如 GoToMeeting,似乎都使用 C++。我在想也许是有原因的。
这不是压缩问题。使用 ScreenVideo,我们将一小时长的流压缩到大约 100 MB,并且我们有足够的带宽。处理器在进行压缩时也没有过载,但似乎花费了太多时间。我们从 BigBlueButton 中提取的一些代码中获得了最好的结果,但是延迟仍然很糟糕。
另一方面,流式传输网络摄像头既漂亮又活泼。几乎没有延迟。所以,问题出在小程序上。
我能想到的唯一其他想法是以某种方式用 Java 模拟网络摄像头。不确定这是否会更快。
想法?还是我应该放弃 Java 并在 C++ 中做到这一点?我不愿意这样做,因为那样我就必须为不同的平台创建不同的版本,但如果这是唯一的方法,那就是唯一的方法。