Java足够快,可以进行实时屏幕共享吗?

时间:2012-03-10 02:43:32

标签: java ffmpeg red5 xuggle

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

所以,我开始怀疑......

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

我见过很多用Java编写的屏幕录制小程序,但没有一个是直播的。现在所做的一切,比如GoToMeeting,似乎都使用C ++。我想也许是有原因的。

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

另一方面,流式传输WebCam非常好用。几乎没有延迟。所以,问题是小程序。

我能想到的另一个想法是以某种方式用Java模拟WebCam。不确定这是否会更快。

想法?或者我应该放弃Java并在C ++中执行此操作?我不愿意这样做,因为那时我将不得不为不同的平台创建不同的版本,但如果这是唯一的方式,那是唯一的方法。

1 个答案:

答案 0 :(得分:3)

许多视频流子系统故意缓冲,因此连接中的光点不会影响视频,但在录制的媒体场景中更有意义。

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

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

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