Javascript 在浏览器中播放原始h264实时流

Javascript 在浏览器中播放原始h264实时流,javascript,html,webrtc,http-live-streaming,live-streaming,Javascript,Html,Webrtc,Http Live Streaming,Live Streaming,我正在寻找一种解决方案,通过浏览器上的WebSocket live播放来自本机服务器的原始h264流。我用JavaScript尝试了许多第三方h264解码器,每个解码器都有自己的问题。基于百老汇的解码器无法解码主要和高端h264。其他解码器太慢,无法解码1080p帧。我尝试用JavaScript将原始h264转换成片段化的mp4,但在解码双向帧时,播放效果非常糟糕。我也尝试过webrtc,但似乎不可能在浏览器和本机服务器之间实现对等连接。有什么建议吗?我见过的最好的使用方法(我自己没有实际使用经

我正在寻找一种解决方案,通过浏览器上的WebSocket live播放来自本机服务器的原始h264流。我用JavaScript尝试了许多第三方h264解码器,每个解码器都有自己的问题。基于百老汇的解码器无法解码主要和高端h264。其他解码器太慢,无法解码1080p帧。我尝试用JavaScript将原始h264转换成片段化的mp4,但在解码双向帧时,播放效果非常糟糕。我也尝试过webrtc,但似乎不可能在浏览器和本机服务器之间实现对等连接。有什么建议吗?

我见过的最好的使用方法(我自己没有实际使用经验)是

下面是一个如何通过WebSocket处理流式数据的示例


您需要将h.264流多路复用到MP4/ISO BMFF容器中,然后使用MediaSource扩展来播放它。你说过你试过这个。。。你能展示一下你试过的代码吗?是的,我试过了。我用这个项目做木星。由于chrome解码器在解码b帧时引用了解码时间戳而不是表示时间戳,因此它在chrome中的效果不好。chrome中的MSE可以处理b帧(与WebRTC不同),您只需要在片段化的mp4中提供合成时间。因此,无论您使用什么库进行muxing,请确保设置合成时间,这是表示时间戳和解码器时间戳之间的差异。感谢@user1390208的想法。你能推荐一个处理CT的标准muxing库吗properly@user1390208“不像WebRTC”,你的意思是WebRTC不处理b帧吗?WebRTC是否支持解码原始h264流?
var socketURL = 'ws://localhost:8080';
var jmuxer = new JMuxer({
    node: 'player',
    mode: 'video',
    flushingTime: 1000,
    fps: 30,
    debug: true
});
var ws = new WebSocket(socketURL);
ws.binaryType = 'arraybuffer';
ws.addEventListener('message',function(event) {
     jmuxer.feed({
         video: new Uint8Array(event.data)
     });
});
ws.addEventListener('error', function(e) {
    console.log('Socket Error');
});