音频播放流生成器
音频播放流构建器允许配置、创建和销毁音频播放流。
- TOC
所需服务
API需要声明系统音频服务:
[wants]
[[wants.service]]
id = "com.amazon.audio.stream"
[[wants.service]]
id = "com.amazon.audio.control"
使用的类型
请参阅音频核心类型
AudioStatusAudioAttributesAudioContentTypeAudioUsageTypeAudioFlagsAudioConfigAudioSampleRateAudioSampleFormatAudioSource
静态方法
AudioPlaybackStreamBuilder.destroyAsync(playbackStream)
描述
销毁参数中指定的AudioPlaybackStream对象。
返回值
返回解析为AudioStatus类型的promise。
参数
| 参数名 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| playbackStream | AudioPlaybackStream | 是 | AudioPlaybackStream将被销毁 |
代码示例
/*
销毁playbackStream并返回,然后将返回的AudioStatus类型
存储在状态中
假设playbackStream是一个AudioPlaybackStream对象
*/
const status = AudioPlaybackStreamBuilder.destroyAsync(playbackStream)
.then((status) => {return status;}).catch((error) => console.log(error));
方法
buildAsync()
描述
创建新的AudioPlaybackStream对象。
返回值
返回解析为AudioPlaybackStream对象的Promise。
代码示例
/*
返回解析为AudioPlaybackStream对象的Promise并将其存储在
playbackStream
*/
const builder = new AudioPlaybackStreamBuilder();
const playbackStream = builder.buildAsync()
.then((stream) => {return stream;}).catch((error) => console.log(error));
setAudioConfig(config)
描述
设置播放流的音频配置。
返回值
无返回值。
参数
| 参数名 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| config | AudioConfig | 是 | 播放流的音频配置详细信息 |
代码示例
/*
将音频播放配置设置为配置中指定的内容
通过调用buildAysnc()创建的任何播放流现在都将包含此音频
configuration
假设构建器是一个AudioPlaybackStreamBuilder对象
*/
const config: AudioConfig = {
sampleRate: AudioSampleRate.SAMPLE_RATE_8_KHZ,
channelMask: AudioChannelMask.CHANNEL_STEREO,
format: AudioSampleFormat.FORMAT_PCM_16_BIT,
};
builder.setAudioConfig(config);
reset()
描述
重置音频播放构建器配置。
返回值
无返回值。
代码示例
/*
重置音频播放构建器配置
假设构建器是一个AudioPlaybackStreamBuilder对象
*/
builder.reset();
setAudioAttributes(attributes)
描述
设置音频播放构建器属性。
返回值
无返回值。
参数
| 参数名 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| attributes | AudioAttributes | 是 | 播放流构建器的音频属性 |
代码示例
/*
将音频属性设置为属性中指定的内容
通过调用buildAysnc()创建的任何播放流现在都将包含这些音频
attributes
假设构建器是一个AudioPlaybackStreamBuilder对象
*/
const attributes: AudioAttributes = {
contentType: AudioContentType.CONTENT_TYPE_NONE,
usage: AudioUsageType.USAGE_NONE,
flags: AudioFlags.FLAG_NONE
};
builder.setAudioAttributes(attributes);
setFramesPerBuffer(framesPerBuffer)
描述
配置共享内存缓冲区队列中帧计数的缓冲区容量。这用于确定共享内存缓冲区队列中每个插槽的缓冲区大小。
返回值
无返回值。
参数
| 参数名 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| framesPerBuffer | Int32 | 是 | 表示构建器每个缓冲区的帧数 |
代码示例
/*
为构建器设置每个缓冲区的帧数
假设构建器是一个AudioPlaybackStreamBuilder对象
*/const framesPerBuffer = 200;
builder.setFramesPerBuffer(framesPerBuffer);
setAudioFocusSessionId(focusSessionId)
描述
为音频播放构建器设置音频焦点会话ID。焦点会话ID是通过创建AudioFocusSession对象并直接进行访问而获得的。
返回值
无返回值。
参数
| 参数名 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| focusSessionId | Int32 | 是 | 表示构建器的音频焦点会话ID |
代码示例
/*
将会话ID设置为1
假设构建器是一个AudioPlaybackStreamBuilder对象
*/
builder.setAudioFocusSessionId(session.getAudioSessionId());
注意: 上面的示例假设会话是一个AudioFocusSession对象。
setUnderrunThreshold(framesThreshold)
描述
配置音频服务器何时向客户端报告缓冲区欠载情况。
返回值
无返回值。
参数
| 参数名 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| framesThreshold | Int32 | 是 | 帧阈值 |
代码示例
const createAudioSourceInstance = async () => {
const builder = new AudioPlaybackStreamBuilder();
/* 其他配置
...
...
...*/
builder.setUnderrunThreshold(3); // 将阈值设置为3
const stream = await builder.buildAsync();
playbackStream.current = stream;
}
createAudioSourceInstance();
setDuckingPolicy(duckPolicy)
描述
用于指定是使用应用显式放弃还是使用系统自动放弃。
如果放弃策略等于StreamDuckingPolicy::EXPLICIT,则应用需要调用duckVolume API来放弃流音量,否则音量将无法更改;
如果设置为StreamDuckingPolicy::SYSTEM(默认设置),则流音量放弃由系统处理。
返回值
无返回值。
参数
| 参数名 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| duckPolicy | StreamDuckingPolicy | 是 | 放弃模式、SYSTEM(系统)或EXPLICIT(显式) |
代码示例
const createAudioSourceInstance = async () => {
const builder = new AudioPlaybackStreamBuilder();
/* 其他配置
...
...
...*/
builder.setDuckingPolicy(StreamDuckingPolicy.EXPLICIT); // 将策略设置为显式
const stream = await builder.buildAsync();
playbackStream.current = stream;
}
createAudioSourceInstance();
Last updated: 2025年10月2日

