使用Robot的Java屏幕截图和通过套接字传输压缩视频(JCodec)

时间:2016-11-08 21:04:57

标签: java websocket screensharing jcodec

我需要一个Java应用程序(桌面 - Windows和Mac),需要通过套接字(WebSockets,因为客户端使用浏览器)将桌面屏幕视频发送给其他用户。

现在我设法做到了:

  • 使用Robot.getImageWritersByFormatName获取屏幕截图(不是那么快,但据我所知,没有其他跨平台解决方案)
  • 我已设法设置套接字通信java socket client -> screenshare/socket server -> client(browser)
  • 尝试发送JPEG压缩图像然后在浏览器中呈现它们,在本地网络中它是可以接受的,但是当它关​​于wan时它非常慢(3 / 4fps并且流已经> 350kbps)< / LI>
  • 想出我需要视频压缩(不像JPEG这样的静止图像),关键帧,iframe等等。我没有太多的视频编码/解码经验
  • 找到JCodec库(非常好的库,在我看来,使用java的纯编解码器,很棒的工作,但没有文档)
  • 感谢示例代码,我设法将BufferedImage图像序列编码为h264 / mp4但仅将其保存到文件

我如何想象,如果我可以使用 ByteBufferSeekableByteChannel 而不是 FileChannelWrapper (两者都实现SeekableByteChannel)并使用 ByteBuffer 将数据存储在内存中,那么我可以在循环中调用channel.read(someOtherByteBuffer)并通过套接字发送字节数组,但是我得到的数组充满了零。

有人知道如何使这项工作?欢迎任何其他建议或者其他想法如何制作这个应用程序。

0 个答案:

没有答案