最近在捣鼓web端的音视频,有这么一个需求,web端需要显示流媒体,性能不能太差,而且协议是私有协议,试了几个方案,最终符合需求的方案的只有mse 和wasm。
这里先不对wasm 进行讨论,主要讲mse。mse 全称是Media Source Extensions,MSE 是一个 W3C 标准,允许 JavaScript 动态构建 <video> 和 <audio> 的媒体流。它定义了对象,允许 JavaScript 传输媒体流片段到一个 HTMLMediaElement。
jmuxer 是一个基于mse技术的js开源库,它可以将h264裸流和aac音频合成MP4片,推给浏览器播放。从demo表现来看,性能表现还是很不错的,接近原生解码速度。按照官方的步骤,很容易编译成功。
1、编译
1、git clone https://github.com/samirkumardas/jmuxer.git
2、cd jmuxer
3、npm install
4、npm run build OR npm run pro
编译成功后,在dist 目录下有两个js文件,jmuxer.js 和jmuxer.min.js,调试时建议使用jmuxer.js。
2、Demo运行
cd 切换到example目录,执行node server-h264.js,如果遇到报错,检查是否安装wensocket和fs
npm install nodejs-websocket
npm install fs
node server-h264.js
执行server-h264.js 后,会开启一个websocket服务器,双击example目录下的index-h264.html即可看到视频显示。
链接
jmuxer:https://github.com/samirkumardas/jmuxer