1

在过去的几个月里,我和一个开发人员一直在开发一个屏幕共享小程序,它可以流式传输到像 Wowza 或 Red5 这样的媒体服务器,但无论我们做什么,我们都有大约 5 秒的延迟,这对于直播来说太长了人们相互交流的应用程序。我们尝试过 xuggle、不同的编码器、不同的播放器、不同的网络、不同的媒体服务器,甚至在本地流式传输,都存在显着的延迟。

所以,我开始怀疑……</p>

Java 是否足够快来进行实时屏幕共享?

我见过很多用 Java 编写的屏幕录制小程序,但没有一个是实时流式传输的。现场完成的所有事情,例如 GoToMeeting,似乎都使用 C++。我在想也许是有原因的。

这不是压缩问题。使用 ScreenVideo,我们将一小时长的流压缩到大约 100 MB,并且我们有足够的带宽。处理器在进行压缩时也没有过载,但似乎花费了太多时间。我们从 BigBlueButton 中提取的一些代码中获得了最好的结果,但是延迟仍然很糟糕。

另一方面,流式传输网络摄像头既漂亮又活泼。几乎没有延迟。所以,问题出在小程序上。

我能想到的唯一其他想法是以某种方式用 Java 模拟网络摄像头。不确定这是否会更快。

想法?还是我应该放弃 Java 并在 C++ 中做到这一点?我不愿意这样做,因为那样我就必须为不同的平台创建不同的版本,但如果这是唯一的方法,那就是唯一的方法。

4

1 回答 1

3

许多视频流子系统刻意缓冲,以便连接中的信号不会影响视频,但这在录制的媒体场景中更有意义。

确保这些系统已关闭或关闭缓冲。

此外,虽然这并不完全科学,但您可以在传出和传入的计算机上运行类似 wireshark 的应用程序,并尝试查看流量实际需要多长时间。如果它非常快,那么我会更认真地考虑缓冲是问题所在。

如果你在 Windows 上,也许只是运行任务管理器/网络选项卡就可以证明这一点(而不是安装像 wireshark 这样的东西,这并不难......只是想建议一种快速的检查方法)

于 2012-03-10T02:55:58.050 回答