Appearance
Protocol: Methods
所有从 host 下发到 iframe(或 inline 场景直接调用)的命令。
核心命令
| Method | Params | Response | 备注 |
|---|---|---|---|
play | {} | void | |
pause | {} | void | |
seek | { time: number, type?: 'exact' | 'keyframe' } | void | 越界值由 player-core 钳制,不报错 |
setVolume | { volume: number } | void | 0–1 |
setMuted | { muted: boolean } | void | |
setPlaybackRate | { rate: number } | void | 0.25–4 |
setQuality | { level: number | 'auto' } | void | 'auto'=交给 ABR 自适应 |
setSubtitle | { id: number | 'off' } | void | 'off'=关闭字幕;id=ready.subtitles[].id(ADR-027) |
pushDanmaku | { item: DanmakuItem } | void | 直播逐条推弹幕;渲染归 SDK,数据源归团队层(ADR-028) |
setDanmakuEnabled | { enabled: boolean } | void | 开关弹幕渲染(ADR-028) |
clearDanmaku | {} | void | 清空当前屏上弹幕(ADR-028) |
setLocale | { locale: LocaleConfig } | void | 运行时切语言,不重建播放器、不丢进度;消费方通常不直接调,改 locale prop 各消费面自动下发(ADR-035) |
load | { source: MediaSource } | void | 切换视频源 |
reconnect | { resetCounter?: boolean } | void | |
destroy | {} | void | |
enterFullscreen | {} | void | |
exitFullscreen | {} | void |
不是命令的那几个句柄方法
四个消费面的句柄上还有几个方法不走命令通道,所以不在上面那张表里 —— 表里每一行都会被 docs-sync.contract.test.ts 拿去和 CommandSchema 对账, 把非命令写进去会当场红。
getCurrentTime()/getDuration()—— 本地读取。iframe 三条路读的是缓存的最近一次timeupdategetPlaybackContext()—— 播放上下文快照(ADR-074)。取值,不是命令; 同样是本地读取,所以 iframe 三条路上position有 ~250ms 延迟,inline 两面是实时值getPlayerHandle()—— 逃生舱,inline 两面返回的就是PlayerCoreHandle
它们在 apps/demo-matrix 的 LOCAL_ONLY_HANDLE_METHODS 里登记着, 而「四个句柄的方法集逐字相同」(ADR-012)由那边的护栏盯着。
详细说明
权威来源:packages/protocol/src/methods.ts 的 Zod schema。