帮你快速理解、总结文档立即下载

MusicStore

最近更新时间:2026-10-23 17:00:00
我的收藏

MusicStore

简介

MusicStore 提供了一套完整的音乐播放管理 API,包括播放/暂停/恢复/停止和音量控制。 通过该类,可以在直播间内实现 BGM 播放功能。
重要:
使用 create(liveID:)工厂方法创建 MusicStore 实例,需要传入有效的直播间 ID。
说明:
播放状态更新通过 state 发布者传递。订阅它以接收房间内播放数据的实时更新。

功能特性

播放控制:支持 BGM 的播放、暂停、恢复、停止和跳转。
音量控制:可调节 BGM 音量(0-100)。
升降调:支持升降调调节(-12 ~ 12)。
状态管理:通过响应式状态发布者实时更新播放状态。
事件监听:监听播放完成和播放错误事件。

可订阅数据

MusicState 的字段描述如下:
属性名
类型
描述
playURL
ValueListenable<String?>
当前播放的音乐 URL。null 表示没有音乐在播放。
playStatus
ValueListenable<MusicPlayStatus>
当前播放状态。
playProgress
ValueListenable<int>
当前播放进度(单位:毫秒)。
totalDuration
ValueListenable<int>
当前音乐总时长(单位:毫秒)。0 表示未知。
musicVolume
ValueListenable<int>
BGM 音量,取值范围 0 - 100,默认 60。

API 列表

函数名
描述
创建音乐播放管理实例。
音乐播放事件回调。
音乐播放事件回调。
startPlay
开始播放音乐。
pausePlay
暂停播放。
恢复播放。
stopPlay
停止播放。
seek
跳转到指定位置。
设置 BGM 音量。
setPitch
设置升降调。

创建实例

MusicStore.create

创建音乐播放管理实例。

观察状态和事件

addMusicListener

音乐播放事件回调。

removeMusicListener

音乐播放事件回调。

播放控制

startPlay

开始播放音乐。
Future<CompletionHandler> startPlay(AudioMusicParam param);
播放 param 描述的音乐。若在 AudioMusicParam.path 中提供网络 URL,SDK 会在内部处理下载。 播放状态会先转为 LOADING,在实际开始播放时转为 PLAYING。 错误码说明:失败时 completion 回调会返回 TRTC SDK 的错误码,详见 onPlayError 中的错误码表。
版本信息
从3.5版本开始支持。
参数说明
参数名
类型
描述
param
音乐播放参数。参见 AudioMusicParam。

pausePlay

暂停音乐播放。
void pausePlay();
暂停当前正在播放的音乐。播放状态会变为 PAUSED。 调用 resumePlay 可以从暂停位置恢复播放。
版本信息
从3.5版本开始支持。

resumePlay

恢复音乐播放。
void resumePlay();
从暂停位置恢复播放。播放状态会变为 PLAYING。
版本信息
从3.5版本开始支持。

stopPlay

停止音乐播放。
void stopPlay();
完全停止当前音乐播放。播放状态会变为 IDLE。 与暂停不同,停止会重置播放位置。
版本信息
从3.5版本开始支持。

seek

跳转到指定播放位置。
void seek(int ms);
跳转到当前播放音乐的指定时间位置。
版本信息
从3.5版本开始支持。
参数说明
参数名
类型
描述
ms
Int
目标播放位置,单位毫秒。

播放参数

setMusicVolume

设置 BGM 音量。
void setMusicVolume(int volume);
同时设置本地播放音量和远端推流音量。
版本信息
从3.5版本开始支持。
参数说明
参数名
类型
描述
volume
Int
BGM 音量,取值范围 0 - 100。

setPitch

设置升降调。
void setPitch(double pitch);
调节当前播放音乐的音调。
版本信息
从3.5版本开始支持。
参数说明
参数名
类型
描述
pitch
Double
升降调值,取值范围 -12 ~ 12。正值升调,负值降调。

数据结构

MusicPlayStatus

音乐播放状态。
枚举值
值
说明
idle
0
空闲,未播放。
playing
1
播放中。
paused
2
已暂停。
loading
3
加载中(如缓冲网络资源)。

MusicState

音乐播放状态,管理当前房间的播放数据状态。
属性
类型
说明
playURL
ValueListenable<String?>
当前播放的音乐 URL。null 表示没有音乐在播放。
playStatus
ValueListenable<MusicPlayStatus>
当前播放状态。
playProgress
ValueListenable<int>
当前播放进度(单位:毫秒)。
totalDuration
ValueListenable<int>
当前音乐总时长(单位:毫秒)。0 表示未知。
musicVolume
ValueListenable<int>
BGM 音量,取值范围 0 - 100,默认 60。

AudioMusicParam

音乐播放参数。
属性
类型
说明
id
int
音乐 ID。由于 SDK 允许同时播放多个音轨,此 ID 用于标记某个音轨以进行开始/停止/音量控制等。 为 0 时,SDK 会基于 path 在内部生成 ID。
path
String?
音频文件的完整路径或 URL。支持格式:MP3、AAC、M4A、WAV。
loopCount
int
音轨循环播放的次数。0 表示只播放一次,不循环。

MusicListener

音乐播放事件监听器,用于接收直播间/语音聊天房内的播放动态。
方法
onPlayCompleted: 音乐正常播放完成时的事件回调。
void onPlayCompleted(String playURL) {}
参数名
类型
说明
playURL
String
播放完成的音乐 URL。
onPlayError: 音乐播放出错时的事件回调。
void onPlayError(String playURL, int code) {}
参数名
类型
说明
playURL
String
播放出错的音乐 URL。
code
Int
错误码,透传自 TRTC SDK。常见错误码如下:
0(成功):操作成功。
4001(ERR_BGM_OPEN_FAILED):打开文件失败,音频数据无效或 FFMPEG 协议未找到。
4002(ERR_BGM_DECODE_FAILED):音频文件解码失败,文件可能损坏或编码格式无法识别。
4003(ERR_BGM_OVER_LIMIT):预加载音乐数量超过限定值。
4004(ERR_BGM_INVALID_OPERATION):无效操作,如在播放中调用预加载。
4005(ERR_BGM_INVALID_PATH):非法路径,请检查文件路径是否指向合法的音乐文件。
4006(ERR_BGM_INVALID_URL):非法 URL,请确保 URL 可访问(iOS/Mac 需使用 HTTPS)。
4007(ERR_BGM_NO_AUDIO_STREAM):无音频流,请确认文件是合法的音频文件且未损坏。
4008(ERR_BGM_FORMAT_NOT_SUPPORTED):格式不支持。
移动端支持:mp3, aac, m4a, wav, ogg, mp4, mkv;
桌面端支持:mp3, aac, m4a, wav, mp4, mkv。
4009(ERR_CONCURRENT_BGM_OVER_LIMIT):同时播放 BGM 数量超过限定值(最大 10 个)。