javascript - 在浏览器中播放原始 h264 直播流
问题描述
我正在寻找一种解决方案,通过 WebSocket 在浏览器上实时播放来自本机服务器的原始 h264 流。我在 JavaScript 中尝试了许多第三方 h264 解码器,每个都有自己的问题。基于 Broadway 的解码器无法解码主要和高配置的 h264。其他解码器解码 1080p 帧太慢。我尝试在 JavaScript 中将原始 h264 转换为分段的 mp4,但在解码双向帧时播放非常难看。我也尝试过 webrtc,但似乎不可能在浏览器和本机服务器之间实现对等连接。有什么建议么?
解决方案
我见过的最好的(没有亲自使用它的实际经验)是https://github.com/samirkumardas/jmuxer
在https://github.com/samirkumardas/jmuxer/blob/master/example/index-h264.html有一个如何通过 WebSockets 处理流数据的示例
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');
});
推荐阅读
- java - 命名模块的未命名包中的非编译单元是否打开?
- python-3.x - UnicodeError:标签为空或太长
- python - “for”循环并获取列表中每个项目的字母数
- jenkins - Jenkins Pipeline 发送 HttpRequest
- node.js - 如何使用Kafka(node-rdkafka)发送标头并在消费者中使用相同的标头
- javascript - 如何连接输入值
- java - 如何检索子类实体
- python-3.x - AttributeError:类型对象'datetime.datetime'没有属性'timedelta'
- linux - 采购 .bashrc 时出错,但第一次加载时出错
- java - Java Main 类找不到或加载错误