Skip to content

播放引擎

@iunify/player 内置多种播放引擎,并在 setSource 时自动选择。无需手动指定引擎,但可以通过传入 format 提前声明。

内置引擎与覆盖格式

按尝试顺序:

  1. DashEngine.mpd(DASH)
  2. FlvEngine.flv
  3. HlsEngine.m3u8(HLS)
  4. MpegTsEngine.ts(MPEG-TS)
  5. TorrentEnginemagnet:.torrent(实验性,仅浏览器)
  6. NativeEnginemp4 / webm / ogg / audio,以及 Safari 下的 HLS

自动选择规则

  • setSource 会先标准化 src 并检测格式(或使用你传入的 format)。
  • 按上述顺序遍历引擎,调用 canPlay 过滤,再依次尝试 attach
  • 某个引擎 attach 报错时触发 engine-attach-failed,随后继续尝试下一引擎。
  • 首个成功附加的引擎即为当前引擎,触发 sourcechange

降级与失败表现

  • 仅当所有可用引擎都失败时,触发 sourcechange-failed 并抛出 PlayerError,错误码 engine_not_found
  • 播放过程中引擎报错会触发 engine-error;如果错误标记为致命,则同时触发 fatal-error
  • 用户可在错误事件中切换备用源或提示刷新。

自定义格式声明

ts
// 显式指定格式,跳过自动识别
player.setSource({ src: '/stream/custom.m3u8', format: 'hls', type: 'application/x-mpegURL' })

引擎的第三方依赖(如 hls.js、flv.js、dashjs、mpegts.js、webtorrent)采用按需动态加载,仅在浏览器环境启用。

最近更新

基于 MIT 许可证发布