1

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

现在我已经设法做到了:

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

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

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

4

0 回答 0