websocket 在浏览器中显示RTSP H264流的现代方式(HTML5)

li9yvcax  于 2022-11-11  发布在  HTML5
关注(0)|答案(1)|浏览(435)

是的,这个主题不时地出现在SO上。
我读了很多关于这个主题的文章,也尝试了一些解决方案,但我有一些限制:
1.独立于浏览器(大多数浏览器都可以正常工作)
1.独立于平台(应支持主要平台)
1.开箱即用(无插件!)
1.低延迟(最好低于1秒)
1.带宽是有限的(MJPEG不是一个选项)
1.没有转码!
因此,展望未来:H264流对于约束条件1和2似乎是完美的。
也是我的来源产生了一个活的H264(确切地说:MPEG-4AVC,第10部分)到RTSP容器中。
但RTSP在浏览器中仍然不受支持。
我检查过的内容:

上面所有的帖子都是关于这个问题的,里面有很多有价值的信息。
此外,我还读了一个非常good article从2014年(!)这是详细的,相当前瞻性。

所以,从今天开始,最好的解决方案是:

1.解析RTSP并提取h264流
1.重组流(将其转换为碎片化的MP4)

  1. WebSocket(请参阅后面的内容)
    1.如果浏览器具有MSE,则可以通过HTML5视频轻松播放fMP 4(另一种方法是使用broadway.js,它很酷,但CPU密集)
    有解决方案是在服务器端执行步骤1和步骤2,然后将fMP 4推送到WebSocket中,客户端使用websocket中的数据,并将其传递给MSE组件进行显示。
    2014年的文章显示,步骤2也可以在客户端发生。在这种情况下,只有步骤1发生在服务器上,然后h264被推送到WebSocket中,当然在客户端有重组和显示。
    Streamedian似乎是一个很好的解决方案,但他们没有公布他们的服务器端代码,而且他们的网站返回了一天的502错误。

我不想使用GStreamerffmpeg,它们都太重了。

不过,也有一些不错的项目可以帮助:

  • MP4Box.js-将MP4文件分段,以便与媒体源扩展API一起使用
  • mux.js-视频文件的检查和处理工具

回到我的列表,步骤2可以用MP4 Box完成-至少我相信/希望。

步骤3步骤4非常简单,这些步骤有大量的操作方法。

但是我对step1有点困惑。它应该在服务器端完成,最好是用一种可以很容易与websockets交互的语言(比如java)。

这就是我的问题:我需要在java中从RTSP中提取h264流,如何才能在不调用外部程序的情况下简单地完成此操作?

kqhtkvqz

kqhtkvqz1#

在浏览器中使用WebCodecs API对H.264包进行解码如何?该API将利用现代浏览器提供的硬件加速。

相关问题