版权音乐
- C++
更新时间不可用
createMusicPlayer
创建一个音乐播放器。
virtual agora_refptr<IMusicPlayer> createMusicPlayer() = 0;如果你需要播放来自声网 Music Content Center 的音乐资源,必须先调用 createMusicPlayer 创建一个音乐播放器。
返回值
- 方法调用成功,返回一个 IMusicPlayer 对象,详见 IMusicPlayer。
- 方法调用失败,返回 NULL。
所属接口类
destroyMusicPlayer
销毁音乐播放器对象。
virtual int destroyMusicPlayer(agora_refptr<IMusicPlayer> music_player) = 0;当你不再需要使用音乐播放器时,可以调用此方法销毁该对象。如果销毁后需要再次使用音乐播放器,请调用 createMusicPlayer 重新创建。
调用时机
该方法可以在加入频道前或加入频道后调用,但必须在调用 release 方法之前调用。
参数
| 参数名 | 描述 |
|---|---|
music_player | 音乐播放器对象。详见 IMusicPlayer。 |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
get
获取指定音乐榜单的详细信息。
virtual MusicChartInfo* get(int index) = 0;参数
| 参数名 | 描述 |
|---|---|
index | MusicChartInfo 数组中的索引。 |
返回值
- 方法调用成功,返回 MusicChartInfo 实例,详见 MusicChartInfo。
- 方法调用失败,返回 NULL。
所属接口类
getCaches
获取已缓存的音乐资源信息。
virtual int getCaches(MusicCacheInfo *cacheInfo, int32_t* cacheInfoSize) = 0;调用该方法前,需要预先分配内存用于存储已缓存音乐资源的信息。如果希望设置可缓存的音乐资源数量,可以通过 initialize 中的 configuration 参数进行配置。当不再需要这些缓存资源时,应及时释放内存以避免内存泄漏。
参数
| 参数名 | 描述 |
|---|---|
cacheInfo | 输出参数,用于存储已缓存音乐资源信息的内存缓冲区指针。详见 MusicCacheInfo。 |
cacheInfoSize |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
getCount [1/2]
获取当前请求中的音乐排行榜数量。
virtual int getCount() = 0;返回值
方法调用成功,返回当前请求中的音乐排行榜数量。
所属接口类
getCount [2/2]
获取当前请求中的音乐项数量。
virtual int getCount() = 0;返回值
方法调用成功,返回当前请求中的音乐项数量。
所属接口类
getInternalSongCode
创建音乐资源副歌片段的内部歌曲编码。
virtual int getInternalSongCode(int64_t songCode, const char* jsonOption, int64_t& internalSongCode) = 0;在播放音乐资源的副歌片段前,需调用该方法,结合参数 jsonOption 和音乐资源的 songCode 创建副歌片段的内部歌曲编码。该编码作为资源的唯一标识。获取该编码后,在调用打开、预加载或移除资源的方法时,将其作为 songCode 参数传入。
参数
| 参数名 | 描述 |
|---|---|
songCode | 音乐资源的歌曲编码,用于标识资源。你可以通过调用 getMusicCollectionByMusicChartId 或 searchMusic 获取,并从这些方法触发的 onMusicCollectionResult 回调中获取该编码。 |
jsonOption | 扩展 JSON 字段,默认为 NULL。目前支持以下字段:
|
internalSongCode |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。详见错误码及其解决建议。
所属接口类
getLyric
获取音乐资源歌词的下载链接。
virtual int getLyric(agora::util::AString& requestId, int64_t songCode, int32_t lyricType = 0) = 0;相关回调
调用该方法后,SDK 会触发 onLyricResult 回调报告歌词下载链接。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
getMusic
获取当前页面中指定音乐资源的详细信息。
virtual Music* getMusic(int32_t index) = 0;参数
| 参数名 | 描述 |
|---|---|
index | Music 数组中的索引。 |
返回值
所属接口类
getMusicCharts
获取所有音乐排行榜。
virtual int getMusicCharts(agora::util::AString& requestId) = 0;相关回调
成功调用该方法后,SDK 会触发 onMusicChartsResult 回调,报告音乐排行榜的详细信息。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
getMusicCollectionByMusicChartId
获取指定音乐榜单 ID 的音乐资源列表。
virtual int getMusicCollectionByMusicChartId(agora::util::AString& requestId, int32_t musicChartId, int32_t page, int32_t pageSize, const char* jsonOption = nullptr) = 0;调用该方法后,SDK 会触发 onMusicCollectionResult 回调,报告该榜单中的音乐资源详情。
参数
| 参数名 | 描述 |
|---|---|
requestId | |
musicChartId | 音乐榜单的 ID。你可以通过 onMusicChartsResult 回调获取该 ID,或通过 RESTful API 获取完整音乐库列表或增量音乐列表。 |
page | |
pageSize | |
jsonOption |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。请参见错误码文档获取详细信息和解决方案。
所属接口类
getPage
获取音乐资源列表当前的页码。
virtual int getPage() = 0;返回值
方法调用成功,返回当前页码。
所属接口类
getPageSize
获取 SDK 实际返回的音乐资源数量。
virtual int getPageSize() = 0;返回值
方法调用成功,返回 SDK 实际返回的音乐资源数量。
所属接口类
getSongSimpleInfo
获取指定音乐资源的详细信息。
virtual int getSongSimpleInfo(agora::util::AString& requestId, int64_t songCode) = 0;调用该方法前,你需要先获取目标音乐资源的歌曲编号。你可以通过调用 getMusicCollectionByMusicChartId 或 searchMusic 方法,并从其触发的 onMusicCollectionResult 回调中获取歌曲编号。调用该方法后,SDK 会触发 onSongSimpleInfoResult 回调,返回该音乐资源的详细信息。
相关回调
成功调用该方法后,SDK 会触发 onSongSimpleInfoResult 回调,返回音乐资源的详细信息。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
getTotal
获取音乐资源列表中的总数。
virtual int getTotal() = 0;返回值
方法调用成功,返回音乐资源的总数。
所属接口类
initialize
初始化 IMusicContentCenter。
virtual int initialize(const MusicContentCenterConfiguration & configuration) = 0;在调用 IMusicContentCenter 中的其他方法前,必须先调用该方法初始化 IMusicContentCenter。
参数
| 参数名 | 描述 |
|---|---|
configuration | 用于初始化 IMusicContentCenter 的配置。详见 MusicContentCenterConfiguration。 |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
isPreloaded
检查指定音乐资源是否已预加载。
virtual int isPreloaded(int64_t songCode) = 0;该方法为同步调用。若需预加载新的音乐资源,请调用 preload。
参数
返回值
- 0:方法调用成功,音乐资源已预加载。
- < 0:方法调用失败。详见错误码了解详情和解决建议。详见错误码。
所属接口类
open
通过歌曲编码打开音乐资源。
virtual int open(int64_t songCode, int64_t startPos = 0) = 0;在调用该方法前,请确保要播放的音乐资源已加载。你可以调用 isPreloaded 方法检查资源是否已预加载,或监听 onPreLoadEvent 回调。
调用该方法后,SDK 会触发 onPlayerSourceStateChanged 回调。当你收到 PLAYER_STATE_OPEN_COMPLETED 播放状态后,可以调用 play 方法播放媒体文件。
注: 如果要打开的音乐资源受数字版权管理(DRM)保护,必须使用该方法打开。对于非 DRM 保护的资源,你可以选择使用该方法或 open 方法打开。
相关回调
成功调用该方法后,SDK 会触发 onPlayerSourceStateChanged 回调报告播放状态。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
preload [1/2]
预加载音乐资源。
virtual int preload(int64_t songCode, const char* jsonOption) __deprecated = 0;废弃
该方法已废弃,请改用 preload [2/2] 方法。
你可以调用该方法预加载想要播放的音乐资源。成功调用该方法后,SDK 会触发 onPreLoadEvent 回调报告预加载事件。在调用该方法之前,你需要先调用 getMusicCollectionWithMusicChartId 或 searchMusic 获取目标音乐资源,并从 onMusicCollectionResult 回调中获取歌曲编号 songCode。
注: 在销毁 IRtcEngine 对象前,请确保已收到 onPreLoadEvent 回调后再调用 release 方法。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
preload [2/2]
预加载音乐资源。
virtual int preload(agora::util::AString& requestId, int64_t songCode) = 0;调用该方法可以预加载想要播放的音乐资源。调用成功后,SDK 会触发 onPreLoadEvent 回调报告预加载事件。在调用该方法之前,需要先调用 getMusicCollectionByMusicChartId 或 searchMusic 获取目标音乐资源,并从 onMusicCollectionResult 回调中获取歌曲编码(songCode)。
注: 在销毁 IRtcEngine 对象前,请确保已收到 onPreLoadEvent 回调后再调用 release 方法。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
registerEventHandler
注册 MusicContentCenter 的事件处理器。
virtual int registerEventHandler(IMusicContentCenterEventHandler* eventHandler) = 0;参数
| 参数名 | 描述 |
|---|---|
eventHandler | 要注册的事件处理器。详见 IMusicContentCenterEventHandler。 |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
release
释放 MusicContentCenter 使用的所有资源。
virtual void release() = 0;该方法必须在调用 release 之前调用。
所属接口类
removeCache
删除已缓存的音乐资源。
virtual int removeCache(int64_t songCode) = 0;你可以调用此方法删除指定的已缓存音乐资源。若需删除多个资源,请多次调用此方法。
注: 注意:此方法不会删除当前正在播放的已缓存音乐资源。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
renewToken
更新 Token。
virtual int renewToken(const char* token) = 0;当用于鉴权的 Token 即将过期或已经过期时,你可以调用该方法传入新生成的 Token。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
searchMusic
搜索音乐资源。
virtual int searchMusic(agora::util::AString& requestId, const char* keyWord, int32_t page, int32_t pageSize, const char* jsonOption = nullptr) = 0;相关回调
成功调用该方法后,SDK 会触发 onMusicCollectionResult 回调报告检索到的音乐资源列表。
参数
| 参数名 | 描述 |
|---|---|
requestId | |
keyWord | |
page | |
pageSize | |
jsonOption |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
setPlayMode
设置音乐资源的播放模式。
virtual int setPlayMode(MusicPlayMode mode) = 0;你可以调用该方法启用原唱、伴奏或导唱模式。如果不调用该方法,默认播放伴奏;若音乐资源不包含伴奏,则播放原唱。
注: 你可以通过 onMusicCollectionResult 回调获取音乐资源的详细信息,并从 result 参数中判断该音乐资源支持的播放模式。
适用场景
在在线 K 歌或才艺展示等娱乐场景中,如果你需要播放由声网内容中心提供的版权音乐,可以调用该方法设置播放模式。
调用时机
该方法必须在调用 createMusicPlayer 之后调用。
参数
| 参数名 | 描述 |
|---|---|
mode | 播放模式。详见 MusicPlayMode。 |
返回值
-
0:方法调用成功。
-
< 0:方法调用失败。详见错误码了解详情和解决建议。
- -2:参数无效。请重新设置参数。
所属接口类
unregisterEventHandler
取消注册 MusicContentCenter 的事件回调。
virtual int unregisterEventHandler() = 0;返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
onLyricResult
获取歌词下载链接的回调。
virtual void onLyricResult(const char* requestId, int64_t songCode, const char* lyricUrl, MusicContentCenterStateReason reason) = 0;调用 getLyric 获取某首歌曲的歌词下载链接后,SDK 会触发该回调。
参数
| 参数名 | 描述 |
|---|---|
requestId | |
songCode | |
lyricUrl | |
reason | 请求状态码,详见 MusicContentCenterStateReason。 |
所属接口类
onMusicChartsResult
获取音乐排行榜结果的回调。
virtual void onMusicChartsResult(const char* requestId, agora_refptr<MusicChartCollection> result, MusicContentCenterStateReason reason) = 0;调用 getMusicCharts 后,SDK 会触发该回调。
参数
| 参数名 | 描述 |
|---|---|
requestId | |
result | 当前可播放的音乐排行榜列表。详见 MusicChartCollection。 |
reason | 请求的状态码。详见 MusicContentCenterStateReason。 |
所属接口类
onMusicCollectionResult
获取音乐资源列表的回调。
virtual void onMusicCollectionResult(const char* requestId, agora_refptr<MusicCollection> result, MusicContentCenterStateReason reason) = 0;调用 getMusicCollectionByMusicChartId 获取某个榜单的音乐资源列表,或调用 searchMusic 搜索音乐资源时,SDK 会触发该回调,返回音乐资源列表的详细信息。
触发时机
调用 getMusicCollectionByMusicChartId 或 searchMusic 后触发。
参数
| 参数名 | 描述 |
|---|---|
requestId | |
result | 音乐资源列表的详细信息。详见 MusicCollection。 |
reason | 请求状态码。详见 MusicContentCenterStateReason。 |
所属接口类
onPreLoadEvent
预加载音乐资源相关事件的回调。
virtual void onPreLoadEvent(const char* requestId, int64_t songCode, int percent, const char* lyricUrl, PreloadState state, MusicContentCenterStateReason reason) = 0;调用 preload 预加载音乐资源后,SDK 会触发该回调。
参数
| 参数名 | 描述 |
|---|---|
requestId | |
songCode | |
percent | |
lyricUrl | |
state | 音乐资源当前的加载状态,详见 PreloadState。 |
reason | 来自音乐内容中心的请求状态码,详见 MusicContentCenterStateReason。 |
所属接口类
onSongSimpleInfoResult
获取音乐资源详细信息的回调。
virtual void onSongSimpleInfoResult(const char* requestId, int64_t songCode, const char* simpleInfo, MusicContentCenterStateReason reason) = 0;调用 getSongSimpleInfo 后,SDK 会触发该回调。
触发时机
调用 getSongSimpleInfo 后触发。
参数
| 参数名 | 描述 |
|---|---|
requestId | |
songCode | |
simpleInfo | |
reason | 请求状态码,详见 MusicContentCenterStateReason。 |