如何使用Node和Java将游戏内容直播到网站?

时间:2017-12-07 21:24:29

标签: javascript java reactjs socket.io video-streaming

我目前正在使用Socket.io来排序" stream"从Java游戏应用程序到ReactJS网站的视频。它很慢,有点笨拙,但它确实有效。

程序通过使用Java截取游戏截图,将其压缩为JPEG,然后通过Socket.io将压缩的Base64字符串发送到服务器来工作。然后,服务器将此Base64字符串发送到Web客户端(ReactJS),然后使用CSS将Base64字符串呈现为图像。

此方法有效。我可以控制帧速率(在某种程度上......如果我使用60 FPS或更高的速度,它会通过屋顶运行我的CPU),我绝对可以控制JPEG的压缩(图像的质量)。

虽然确实有其局限性,但我仍然相信有更好的方法可以解决这个问题。我已经在google上查找了将视频从一个应用程序流式传输到另一个应用程序的方法,但我还没有找到一个。

在ReactJS中,在Java客户端中将游戏流式传输到网站的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

这不是一种方法!

流式编解码器比JPEG屏幕截图更有效。例如,任何电影压缩算法都会根据可用带宽调整自身,并且不会保留所有帧。在你的情况下,你正在渲染游戏的所有帧,这会破坏你的机器性能(JPEG渲染比渲染正确的视频更耗电)。

另一件事 - 您应该通过发送数据流而不是使用base-64来直接传输内容,从而提供持续的视频素材流。

所以,最终解决方案看起来有点像:

  1. 使用FFMPEG库
  2. 捕获视图
  3. 从捕获的素材中创建流
  4. 通过套接字公开流
  5. 在网络的另一端获取二进制输出
  6. 可能只需使用支持所有流行编码/流媒体格式的HTML5播放器。
  7. 这些链接可能有助于开始:

    此主题中的内容:Stream video in Java