Skip to content

Protocol: Methods

所有从 host 下发到 iframe(或 inline 场景直接调用)的命令。

核心命令

MethodParamsResponse备注
play{}void
pause{}void
seek{ time: number, type?: 'exact' | 'keyframe' }void越界值由 player-core 钳制,不报错
setVolume{ volume: number }void0–1
setMuted{ muted: boolean }void
setPlaybackRate{ rate: number }void0.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 三条路读的是缓存的最近一次 timeupdate
  • getPlaybackContext() —— 播放上下文快照(ADR-074)。取值,不是命令; 同样是本地读取,所以 iframe 三条路上 position 有 ~250ms 延迟,inline 两面是实时值
  • getPlayerHandle() —— 逃生舱,inline 两面返回的就是 PlayerCoreHandle

它们在 apps/demo-matrixLOCAL_ONLY_HANDLE_METHODS 里登记着, 而「四个句柄的方法集逐字相同」(ADR-012)由那边的护栏盯着。

详细说明

权威来源:packages/protocol/src/methods.ts 的 Zod schema。