as

Settings
Sign out
Notifications
Alexa
亚马逊应用商店
AWS
文档
Support
Contact Us
My Cases
新手入门
设计和开发
应用发布
参考
支持

音频播放流生成器

音频播放流生成器

音频播放流构建器允许配置、创建和销毁音频播放流。

  • TOC

所需服务

API需要声明系统音频服务:

[wants]
[[wants.service]]
id = "com.amazon.audio.stream"
[[wants.service]]
id = "com.amazon.audio.control"

使用的类型

请参阅音频核心类型

  • AudioStatus
  • AudioAttributes
  • AudioContentType
  • AudioUsageType
  • AudioFlags
  • AudioConfig
  • AudioSampleRate
  • AudioSampleFormat
  • AudioSource

静态方法

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日