Jessibuca 免插件 H5 直播播放器:监控流网页秒开,PC 到微信都能放
【免费下载链接】jessibucaJessibuca是一款开源的纯H5直播流播放器项目地址: https://gitcode.com/GitHub_Trending/je/jessibuca
Jessibuca,纯H5直播播放器,免插件。监控大屏、手机、微信里都能播。解码库被编成wasm(浏览器能直接执行的二进制),直接在浏览器里跑。要上web播flv(常用直播流格式),看这篇。
一条命令跑通
- 装好 Node.js LTS(JS 代码运行的环境),
node -v能打印版本号就行。 - 跑下面四条命令。
- 浏览器会自动打开演示页(默认 5173 端口),首页就是播放器,点一下就能播。
- 要用到自己项目里,把
demo/public/下的jessibuca.js、decoder.js、decoder.wasm拷到自己服务器同目录。
# 拉源码(需要 Node.js LTS) git clone https://gitcode.com/GitHub_Trending/je/jessibuca cd jessibuca # 装构建依赖 npm install # 起演示,浏览器自动打开 npm run dev它到底强在哪
墙上挂 4 路,页面不崩
你打开一个监控页,2x2、3x3 地建几个播放实例,页面不卡。解码被扔给 WebWorker(浏览器后台计算线程),主线程只管渲染,路数越多越平稳。挂一天,延迟不累积,画面一直走。
H265 的流?也放
摄像头爱推 H265(比 H264 压缩率更高的新一代编码),多数浏览器原生 video 标签放不了它。Jessibuca 走 wasm 软解,浏览器新旧都能渲染。H264 则先走硬解,失败自动回落软解,分支逻辑不用你写。
缓冲、按钮、画面模式,随手调
videoBuffer 定缓冲秒数,operateBtns 定底部按钮露哪些,isResize 定等比还是拉满,改个值就生效。想自己画控制条,整组关掉,容器留给你。
30 秒看懂数据流
白板上画条链路:play()给的地址经 http 或 ws 进来,jessibuca.js 剥掉 flv 封装,裸数据丢给 worker 线程;worker 里 decoder.wasm(编成 wasm 的 ffmpeg 解码库)吐出一帧帧画面画到 canvas 上,声音经 AudioContext 进喇叭。全程不碰 video 标签,所以什么浏览器都能解 H265。
贴进项目的最小代码
把下面这段塞进你的 index.html,三个文件放同目录,就能播。
<div id="container" style="width:640px;height:360px;background:#000;"></div> <script src="/jessibuca.js"></script> <script> // 建播放器实例,container 是挂载点 const player = new Jessibuca({ container: '#container', decoder: '/decoder.js', // decoder.js 与 decoder.wasm 必须同目录 videoBuffer: 1, // 缓冲秒数,越小延迟越低 isResize: true, // 等比缩放,画面不拉伸 operateBtns: { fullscreen: true, audio: true } // 底部按钮栏 }) // 开播,返回 Promise,记得接住失败 player.play('http://your-server/hdl/live/test.flv').catch(console.error) // 页面关掉时释放资源 window.addEventListener('beforeunload', () => player.destroy()) </script>- container:挂载点,传选择器或 DOM 元素,别传
<canvas>或<video> - decoder:解码 worker 地址,decoder.js 和 decoder.wasm 必须同目录
- videoBuffer:缓冲秒数,越小延迟越低,网络抖动时会卡
- isResize:true 等比带黑边,false 拉伸铺满
- operateBtns:底部按钮逐个开关,全关就自己画 UI
- play 返回 Promise,不 catch 的话连不上流会静默失败
遇到这些别慌
- 黑屏,但网络面板一直有数据进 → 它按 URL 后缀认协议,没后缀会被当成 m7s 私有格式 → 地址补上 .flv 后缀,立刻能放。
- http-flv 播放报跨域错 → http-flv 走的是跨域请求,服务器没给 CORS(跨域访问控制)头 → 把地址换成 ws://.../live.flv,websocket 默认没有跨域问题。
- H265 多路播放卡 → 软解 H265 本身就重,分辨率再高帧率跟不上 → 降码流分辨率,videoBuffer 提到 2~3 秒,不需要声音就关掉 hasAudio。
上生产前打勾
- 带宽:服务器出口 ≥ 路数 × 单路码率之和,高峰留余量
- CDN:jessibuca.js / decoder.js / decoder.wasm 三个文件挂 CDN 并开 GZIP(压完约 500k)
- 降级:useMSE 或 useWCS 硬解优先,同时开 autoWasm,硬解失败自动回落软解
- 监控:error、timeout、stats 事件接上上报后端,别等用户投诉才发现
- 兼容:PC Chrome、手机浏览器、微信 webview 各跑一遍全链路,确认默认静音与 cancelMute() 出声
Jessibuca 把原来只有 video 标签能干了解码的活,变成跑在 JS 里的 wasm 文件,H5 直播播放器"到哪都能放"这件事才算落地。 去仓库 issue 里翻翻,你要踩的坑多半早有人踩过并写明白了。
【免费下载链接】jessibucaJessibuca是一款开源的纯H5直播流播放器项目地址: https://gitcode.com/GitHub_Trending/je/jessibuca
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考