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
特有错误:denied、activation-required、device-unavailable、limit-exceeded。结构或枚举非法使用版本级公共 invalid-argument。
Requirements
- 能力:
host:playback.open - 用户激活:每次调用都必须
- 信任档位:yellow