播放引擎
@iunify/player 内置多种播放引擎,并在 setSource 时自动选择。无需手动指定引擎,但可以通过传入 format 提前声明。
内置引擎与覆盖格式
按尝试顺序:
DashEngine:.mpd(DASH)FlvEngine:.flvHlsEngine:.m3u8(HLS)MpegTsEngine:.ts(MPEG-TS)TorrentEngine:magnet:或.torrent(实验性,仅浏览器)NativeEngine:mp4/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)采用按需动态加载,仅在浏览器环境启用。