v0.1首个正式支持的版本化规范查看版本范围

playback.open()

创建应用会话级音频输出,并返回宿主实际采用的格式和缓冲预算。

Syntax

const stream = await host.playback.open(options?);

Parameters

PlaybackOptions {
  preferredSampleRate?: u32
  channels?: 1 | 2
  latency?: "interactive" | "balanced"
}

preferredSampleRate 是偏好,与返回采样率都必须是 [8000, 192000] 内的整数;宿主可以选择不同采样率,guest 以返回值为准。channels 省略时默认 2,返回值必须与请求或默认值相同。latency 省略时默认 "balanced",它只选择宿主预设。

Return value

{
  output: Handle<audio-output, write+close, app-context, session>
  sampleRate: u32
  channels: 1 | 2
  maxQueuedFrames: u32
}

maxQueuedFrames 恰好等于宿主为 v0.1 公布的 playback.maxQueuedFrames,不会按设备或调用偷偷缩小。

Examples

const stream = await host.playback.open({
  preferredSampleRate: 48_000,
  channels: 2,
  latency: 'interactive',
});
configureMixer(stream.sampleRate, stream.channels);

Errors

特有错误:deniedactivation-requireddevice-unavailablelimit-exceeded。结构或枚举非法使用版本级公共 invalid-argument

Requirements

  • 能力:host:playback.open
  • 用户激活:每次调用都必须
  • 信任档位:yellow

See also

playback.write()playback.stop()

Host API 版本与分层概览Host API v0.1版本非正式提议提议canvas API呈现canvas.getInfo()方法canvas.draw()方法canvas.present()方法canvas.measureText()方法canvas.frame event事件canvas.resize event事件asset API呈现asset.read()方法asset.loadFont()方法playback API呈现playback.open()方法playback.write()方法playback.stop()方法playback.ready event事件playback.ended event事件input API输入input.focus()方法input.pointer event事件input.key event事件input.wheel event事件input.focusChange event事件ime API输入ime.openSession()方法ime.updateState()方法ime.updateGeometry()方法ime.closeSession()方法ime.textUpdate event事件ime.composition event事件ime.formatUpdate event事件ime.characterBoundsRequest event事件ime.ended event事件capture API输入capture.requestCamera()方法capture.requestMic()方法capture.frame()方法capture.readAudio()方法capture.stop()方法capture.ended event事件store API数据store.get()方法store.put()方法store.delete()方法store.list()方法store.deletePrefix()方法clipboard API数据clipboard.readText()方法clipboard.writeText()方法env API平台集成env.snapshot()方法env.change event事件开始调用 Host API指南构建交互式绘图应用指南构建自绘文本编辑器指南管理媒体采集与播放指南组织本地数据与同步指南