# 版权音乐 (/zh-CN/api-reference/rtc/unity/play/drm)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

<a id="toc_drm"></a>

<a id="api_imusiccontentcenter_createmusicplayer"></a>

<a id="ariaid-title2"></a>

## CreateMusicPlayer [#createmusicplayer]

创建音乐播放器。

<a id="api_imusiccontentcenter_createmusicplayer__prototype"></a>

```csharp
public abstract IMusicPlayer CreateMusicPlayer();
```

<a id="api_imusiccontentcenter_createmusicplayer__detailed_desc"></a>

如果你需要播放音乐内容中心的音乐资源，你需要先调用该方法来创建一个音乐播放器。

<a id="api_imusiccontentcenter_createmusicplayer__return_values"></a>

### 返回值 [#返回值]

- 方法调用成功：返回 [IMusicPlayer](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusicplayer) 对象。
- 方法调用失败：返回空指针。

### 所属接口类 [#所属接口类]

- [IMusicContentCenter](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusiccontentcenter)

<a id="api_imusiccontentcenter_destroymusicplayer"></a>

<a id="ariaid-title3"></a>

## DestroyMusicPlayer [#destroymusicplayer]

销毁音乐播放器对象。

<a id="api_imusiccontentcenter_destroymusicplayer__prototype"></a>

```csharp
public abstract int DestroyMusicPlayer(IMusicPlayer music_player);
```

<a id="api_imusiccontentcenter_destroymusicplayer__detailed_desc"></a>

当你不再需要使用音乐播放器时，你可以调用该方法来销毁音乐播放器对象。销毁之后如果需要重新使用音乐播放器，需要调用 [CreateMusicPlayer](/zh-CN/api-reference/rtc/unity/play/drm#api_imusiccontentcenter_createmusicplayer) 重新创建一个音乐播放器对象。

<a id="api_imusiccontentcenter_destroymusicplayer__timing"></a>

### 调用时机 [#调用时机]

该方法在加入频道前后均可调用，但请确保在 [IRtcEngine](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_irtcengine) 的 [Dispose](/zh-CN/api-reference/rtc/unity/play/mediaplayer/mediaplayer-initialize#api_imediaplayer_dispose_imediaplayer) 方法前调用。

<a id="api_imusiccontentcenter_destroymusicplayer__parameters"></a>

### 参数 [#参数]

<ParameterList>
<a id="music_player"></a>
<Parameter name="music_player">

[IMusicPlayer](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusicplayer) 对象。

</Parameter>
</ParameterList>

<a id="api_imusiccontentcenter_destroymusicplayer__return_values"></a>

### 返回值 [#返回值-1]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-1]

- [IMusicContentCenter](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusiccontentcenter)

<a id="api_imusiccontentcenter_getcaches"></a>

<a id="ariaid-title4"></a>

## GetCaches [#getcaches]

获取已缓存的音乐资源信息。

<a id="api_imusiccontentcenter_getcaches__prototype"></a>

```csharp
public abstract int GetCaches(ref MusicCacheInfo[] cacheInfo, ref Int32 cacheInfoSize);
```

<a id="api_imusiccontentcenter_getcaches__detailed_desc"></a>

调用该方法前，你需要预先分配一定大小的内存空间用来存储缓存音乐资源的信息。如果你需要设置可缓存的音乐资源数量，可通过 [Initialize](/zh-CN/api-reference/rtc/unity/play/drm#api_imusiccontentcenter_initialize_imusiccontentcenter) 的 `configuration` 来设置。
当你不再需要使用已缓存的音乐资源时，你需要及时释放内存以防止内存泄漏。

<a id="api_imusiccontentcenter_getcaches__parameters"></a>

### 参数 [#参数-1]

<ParameterList>
<a id="cacheinfo"></a>
<Parameter name="cacheInfo">

输出参数，指向用于存储已缓存音乐资源的内存缓冲区的指针。

</Parameter>
<a id="cacheinfosize"></a>
<Parameter name="cacheInfoSize">

输入和输出参数。

- 输入值：`cacheInfo` 数组的长度，即你所分配的 [MusicCacheInfo](/zh-CN/api-reference/rtc/unity/class-musiccacheinfo) 结构体的数量。
- 输出值：方法执行完毕后输出的 [MusicCacheInfo](/zh-CN/api-reference/rtc/unity/class-musiccacheinfo) 结构体的数量。

</Parameter>
</ParameterList>

<a id="api_imusiccontentcenter_getcaches__return_values"></a>

### 返回值 [#返回值-2]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-2]

- [IMusicContentCenter](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusiccontentcenter)

<a id="api_imusiccontentcenter_getinternalsongcode"></a>

<a id="ariaid-title5"></a>

## GetInternalSongCode [#getinternalsongcode]

创建音乐资源的副歌片段编号。

<a id="api_imusiccontentcenter_getinternalsongcode__prototype"></a>

```csharp
public abstract int GetInternalSongCode(Int64 songCode, string jsonOption, ref Int64 internalSongCode);
```

<a id="api_imusiccontentcenter_getinternalsongcode__detailed_desc"></a>

<a id="api_imusiccontentcenter_getinternalsongcode__scenario"></a>

### 适用场景 [#适用场景]

当你需要播放某一音乐资源的副歌片段前，你需要调用此方法，通过 `jsonOption` 参数和该音乐资源的 `songCode` 来为该音乐资源的副歌片段创建一个编号，作为该资源的唯一标识。当你获取到该片段的编号后，在你调用相应方法打开、预加载、移除该资源时，将该内部歌曲编号传入 `songCode` 参数。

<a id="api_imusiccontentcenter_getinternalsongcode__parameters"></a>

### 参数 [#参数-2]

<ParameterList>
<a id="songcode"></a>
<Parameter name="songCode">

音乐资源编号，用于标识音乐资源。你可以通过调用 [GetMusicCollectionByMusicChartId](/zh-CN/api-reference/rtc/unity/play/drm#api_imusiccontentcenter_getmusiccollectionbymusicchartid) 或 [SearchMusic](/zh-CN/api-reference/rtc/unity/play/drm#api_imusiccontentcenter_searchmusic) 方法来获取音乐资源，并通过由此触发的 [OnMusicCollectionResult](/zh-CN/api-reference/rtc/unity/play/drm#callback_imusiccontentcentereventhandler_onmusiccollectionresult) 回调获取音乐资源的编号（`songCode`）。

</Parameter>
<a id="jsonoption"></a>
<Parameter name="jsonOption">

:::note
注： 声网会根据你在 `sceneType` 传入的应用场景进行收费。不同的应用场景对应不同的费率，你可以参考 [计费说明](/zh-CN/solutions/online-ktv/online-ktv-sdk/reference/billing) 查看详细的计费。如果需要切换到不同场景，需要重新调用此方法并传入 `sceneType` 的值。
:::

扩展 JSON 字段，默认为 `null`。目前支持传入下列值：

- sceneType：场景类型。1：直播场景，在线 K 歌房和背景音乐播放；2：直播场景，背景音乐播放；3：（默认）声动语聊场景，在线 K 歌房；4：声动语聊场景，背景音乐播放；5：VR 场景，在线 K 歌房和背景音乐播放。示例：`{"sceneType":1}`。
- highPart：副歌片段的索引，从 `onMusicCollectionResult` 回调中获取，索引从 0 开始。示例：`{"format": {"highpart": 0}}`。

</Parameter>
<a id="internalsongcode"></a>
<Parameter name="internalSongCode">

输出参数，音乐资源的内部歌曲编号。

</Parameter>
</ParameterList>

<a id="api_imusiccontentcenter_getinternalsongcode__return_values"></a>

### 返回值 [#返回值-3]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-3]

- [IMusicContentCenter](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusiccontentcenter)

<a id="api_imusiccontentcenter_getlyric"></a>

<a id="ariaid-title6"></a>

## GetLyric [#getlyric]

获取音乐资源的歌词下载地址。

<a id="api_imusiccontentcenter_getlyric__prototype"></a>

```csharp
public abstract int GetLyric(ref string requestId, Int64 songCode, int LyricType = 0);
```

<a id="api_imusiccontentcenter_getlyric__detailed_desc"></a>

成功调用该方法后，SDK 会触发 [OnLyricResult](/zh-CN/api-reference/rtc/unity/play/drm#callback_imusiccontentcentereventhandler_onlyricresult) 回调报告歌词的下载地址。

<a id="api_imusiccontentcenter_getlyric__parameters"></a>

### 参数 [#参数-3]

<ParameterList>
<a id="songcode-1"></a>
<Parameter name="songCode">

音乐资源的编号，用于标识音乐资源。

</Parameter>
<a id="lyrictype"></a>
<Parameter name="lyricType">

歌词类型：

- 0：xml 格式。
- 1：lrc 格式。

</Parameter>
<a id="requestid"></a>
<Parameter name="requestId">

请求 ID。本次请求的唯一标识。

</Parameter>
</ParameterList>

<a id="api_imusiccontentcenter_getlyric__return_values"></a>

### 返回值 [#返回值-4]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-4]

- [IMusicContentCenter](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusiccontentcenter)

<a id="api_imusiccontentcenter_getmusiccharts"></a>

<a id="ariaid-title7"></a>

## GetMusicCharts [#getmusiccharts]

获取全部音乐榜单。

<a id="api_imusiccontentcenter_getmusiccharts__prototype"></a>

```csharp
public abstract int GetMusicCharts(ref string requestId);
```

<a id="api_imusiccontentcenter_getmusiccharts__detailed_desc"></a>

当你调用该方法后，SDK 会触发 [OnMusicChartsResult](/zh-CN/api-reference/rtc/unity/play/drm#callback_imusiccontentcentereventhandler_onmusicchartsresult) 回调报告音乐榜单的详细信息。

<a id="api_imusiccontentcenter_getmusiccharts__parameters"></a>

### 参数 [#参数-4]

<ParameterList>
<a id="requestid-1"></a>
<Parameter name="requestId">

请求 ID。本次请求的唯一标识。

</Parameter>
</ParameterList>

<a id="api_imusiccontentcenter_getmusiccharts__return_values"></a>

### 返回值 [#返回值-5]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-5]

- [IMusicContentCenter](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusiccontentcenter)

<a id="api_imusiccontentcenter_getmusiccollectionbymusicchartid"></a>

<a id="ariaid-title8"></a>

## GetMusicCollectionByMusicChartId [#getmusiccollectionbymusicchartid]

通过音乐榜单的 ID 获取指定榜单的音乐资源列表。

<a id="api_imusiccontentcenter_getmusiccollectionbymusicchartid__prototype"></a>

```csharp
public abstract int GetMusicCollectionByMusicChartId(ref string requestId, int musicChartType, int page, int pageSize, string jsonOption = "");
```

<a id="api_imusiccontentcenter_getmusiccollectionbymusicchartid__detailed_desc"></a>

成功调用该方法后，SDK 会触发 [OnMusicCollectionResult](/zh-CN/api-reference/rtc/unity/play/drm#callback_imusiccontentcentereventhandler_onmusiccollectionresult) 回调报告榜单中音乐资源列表的详细信息。

<a id="api_imusiccontentcenter_getmusiccollectionbymusicchartid__parameters"></a>

### 参数 [#参数-5]

<ParameterList>
<a id="requestid-2"></a>
<Parameter name="requestId">

请求 ID。本次请求的唯一标识。

</Parameter>
<a id="musiccharttype"></a>
<Parameter name="musicChartType">

音乐榜单的 ID，可以通过 [OnMusicChartsResult](/zh-CN/api-reference/rtc/unity/play/drm#callback_imusiccontentcentereventhandler_onmusicchartsresult) 回调获取。你也可以通过 RESTful API 来[获取曲库所有歌曲列表](/zh-CN/api-reference/online-ktv/android/ktv-scenario/api/music-content-center#获取曲库所有歌曲列表)或[获取增量歌曲列表](/zh-CN/api-reference/online-ktv/android/ktv-scenario/api/music-content-center#获取增量歌曲列表)。

</Parameter>
<a id="page"></a>
<Parameter name="page">

当前页面编号，默认从 1 开始。

</Parameter>
<a id="pagesize"></a>
<Parameter name="pageSize">

当前音乐资源列表的总页面数量，最大值为 50。

</Parameter>
<a id="jsonoption-1"></a>
<Parameter name="jsonOption">

扩展 JSON 字段，默认为 `null`。你可以通过该字段来筛选出你需要的音乐资源，目前支持筛选可打分的音乐资源及音乐资源的副歌片段：

- `pitchType`：音乐资源是否支持评分。

  - `1`：可评分的音乐资源。
  - `2`：不可评分的音乐资源。

- `needHighPart`：是否需要合唱片段资源。

  - `YES`：需要合唱片段资源。
  - `NO`：不需要合唱片段资源。

</Parameter>
</ParameterList>

<a id="api_imusiccontentcenter_getmusiccollectionbymusicchartid__return_values"></a>

### 返回值 [#返回值-6]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-6]

- [IMusicContentCenter](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusiccontentcenter)

<a id="api_irtcengine_getmusiccontentcenter"></a>

<a id="ariaid-title9"></a>

## GetMusicContentCenter [#getmusiccontentcenter]

获取 [IMusicContentCenter](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusiccontentcenter)。

<a id="api_irtcengine_getmusiccontentcenter__prototype"></a>

```csharp
public abstract IMusicContentCenter GetMusicContentCenter();
```

<a id="api_irtcengine_getmusiccontentcenter__detailed_desc"></a>

<a id="api_irtcengine_getmusiccontentcenter__return_values"></a>

### 返回值 [#返回值-7]

一个 [IMusicContentCenter](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusiccontentcenter) 对象。

### 所属接口类 [#所属接口类-7]

- [IRtcEngine](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_irtcengine)

<a id="api_imusiccontentcenter_getsongsimpleinfo"></a>

<a id="ariaid-title10"></a>

## GetSongSimpleInfo [#getsongsimpleinfo]

获取某一音乐资源的详细信息。

<a id="api_imusiccontentcenter_getsongsimpleinfo__prototype"></a>

```csharp
public abstract int GetSongSimpleInfo(ref string requestId, Int64 songCode);
```

<a id="api_imusiccontentcenter_getsongsimpleinfo__detailed_desc"></a>

在调用该方法前，你需要先获取到对应的音乐资源的编号。你可以通过调用 [GetMusicCollectionByMusicChartId](/zh-CN/api-reference/rtc/unity/play/drm#api_imusiccontentcenter_getmusiccollectionbymusicchartid) 或 [SearchMusic](/zh-CN/api-reference/rtc/unity/play/drm#api_imusiccontentcenter_searchmusic) 方法来获取音乐资源，并通过由此触发的 [OnMusicCollectionResult](/zh-CN/api-reference/rtc/unity/play/drm#callback_imusiccontentcentereventhandler_onmusiccollectionresult) 回调获取音乐资源的编号（`songCode`）。
当你调用该方法后，SDK 会触发 [OnSongSimpleInfoResult](/zh-CN/api-reference/rtc/unity/play/drm#callback_imusiccontentcentereventhandler_onsongsimpleinforesult) 回调报告音乐资源的详细信息。

<a id="api_imusiccontentcenter_getsongsimpleinfo__parameters"></a>

### 参数 [#参数-6]

<ParameterList>
<a id="songcode-2"></a>
<Parameter name="songCode">

音乐资源的编号，用于标识音乐资源。

</Parameter>
<a id="requestid-3"></a>
<Parameter name="requestId">

请求 ID。本次请求的唯一标识。

</Parameter>
</ParameterList>

<a id="api_imusiccontentcenter_getsongsimpleinfo__return_values"></a>

### 返回值 [#返回值-8]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-8]

- [IMusicContentCenter](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusiccontentcenter)

<a id="api_imusiccontentcenter_initialize_imusiccontentcenter"></a>

<a id="ariaid-title11"></a>

## Initialize [#initialize]

初始化 [IMusicContentCenter](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusiccontentcenter)。

<a id="api_imusiccontentcenter_initialize_imusiccontentcenter__prototype"></a>

```csharp
public abstract int Initialize(MusicContentCenterConfiguration configuration);
```

<a id="api_imusiccontentcenter_initialize_imusiccontentcenter__detailed_desc"></a>

在调用 [IMusicContentCenter](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusiccontentcenter) 类下的其他方法前，你需要先调用该方法初始化 [IMusicContentCenter](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusiccontentcenter)。

<a id="api_imusiccontentcenter_initialize_imusiccontentcenter__parameters"></a>

### 参数 [#参数-7]

<ParameterList>
<a id="configuration"></a>
<Parameter name="configuration">

[IMusicContentCenter](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusiccontentcenter) 的设置，详见 [MusicContentCenterConfiguration](/zh-CN/api-reference/rtc/unity/class-musiccontentcenterconfiguration)。

</Parameter>
</ParameterList>

<a id="api_imusiccontentcenter_initialize_imusiccontentcenter__return_values"></a>

### 返回值 [#返回值-9]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-9]

- [IMusicContentCenter](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusiccontentcenter)

<a id="api_imusiccontentcenter_ispreloaded"></a>

<a id="ariaid-title12"></a>

## IsPreloaded [#ispreloaded]

检测音乐资源是否已被预加载。

<a id="api_imusiccontentcenter_ispreloaded__prototype"></a>

```csharp
public abstract int IsPreloaded(Int64 songCode);
```

<a id="api_imusiccontentcenter_ispreloaded__detailed_desc"></a>

该方法为同步调用。如需预加载新的音乐资源，可调用 [Preload [2/2]](/zh-CN/api-reference/rtc/unity/play/drm#api_imusiccontentcenter_preload2)。

<a id="api_imusiccontentcenter_ispreloaded__parameters"></a>

### 参数 [#参数-8]

<ParameterList>
<a id="songcode-3"></a>
<Parameter name="songCode">

音乐资源的编号，用于标识一个音乐资源。

</Parameter>
</ParameterList>

<a id="api_imusiccontentcenter_ispreloaded__return_values"></a>

### 返回值 [#返回值-10]

- 0: 方法调用成功，该音乐资源已被预加载。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-10]

- [IMusicContentCenter](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusiccontentcenter)

<a id="api_imusicplayer_open_imusicplayer"></a>

<a id="ariaid-title13"></a>

## Open [#open]

通过音乐资源编号打开音乐资源。

<a id="api_imusicplayer_open_imusicplayer__prototype"></a>

```csharp
public abstract int Open(Int64 songCode, Int64 startPos);
```

<a id="api_imusicplayer_open_imusicplayer__detailed_desc"></a>

在调用此方法之前，请确保需要播放的音乐资源已加载完成。你可以调用 [IsPreloaded](/zh-CN/api-reference/rtc/unity/play/drm#api_imusiccontentcenter_ispreloaded) 方法来检测音乐资源是否已被预加载，或通过 [OnPreLoadEvent](/zh-CN/api-reference/rtc/unity/play/drm#callback_imusiccontentcentereventhandler_onpreloadevent_imusiccontentcentereventhandler) 回调得知。
调用该方法后会触发 [OnPlayerSourceStateChanged](/zh-CN/api-reference/rtc/unity/play/mediaplayer/mediaplayer-observer#callback_imediaplayersourceobserver_onplayersourcestatechanged) 回调。在收到报告播放状态为 `PLAYER_STATE_OPEN_COMPLETED` 后，你可以调用 [Play](/zh-CN/api-reference/rtc/unity/play/mediaplayer/mediaplayer-control#api_imediaplayer_play) 方法播放媒体文件。

:::note
注： 如果你想要打开的音乐资源受数字版权保护，则需要调用此方法打开。对于不受数字版权保护的音乐资源，你可以选择通过调用此方法或 [IMediaPlayer](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imediaplayer) 类下的 [Open](/zh-CN/api-reference/rtc/unity/play/drm#api_imusicplayer_open_imusicplayer) 方法来打开。
:::

<a id="api_imusicplayer_open_imusicplayer__parameters"></a>

### 参数 [#参数-9]

<ParameterList>
<a id="songcode-4"></a>
<Parameter name="songCode">

音乐资源的编号，用于标识音乐资源。

</Parameter>
<a id="startpos"></a>
<Parameter name="startPos">

设置起始播放位置（毫秒），默认值为 0。

</Parameter>
</ParameterList>

<a id="api_imusicplayer_open_imusicplayer__return_values"></a>

### 返回值 [#返回值-11]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-11]

- [IMusicPlayer](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusicplayer)

<a id="api_imusiccontentcenter_preload"></a>

<a id="ariaid-title14"></a>

## Preload [1/2] [#preload-12]

预加载音乐资源。

<a id="api_imusiccontentcenter_preload__prototype"></a>

```csharp
public abstract int Preload(Int64 songCode, string jsonOption = "");
```

<a id="api_imusiccontentcenter_preload__detailed_desc"></a>

<a id="废弃"></a>

:::error[废弃]
弃用： 该方法已废弃，请改用 [Preload [2/2]](/zh-CN/api-reference/rtc/unity/play/drm#api_imusiccontentcenter_preload2)。
:::

你可以调用该方法预先加载需要播放的音乐资源。成功调用该方法后，SDK 会触发 [OnPreLoadEvent](/zh-CN/api-reference/rtc/unity/play/drm#callback_imusiccontentcentereventhandler_onpreloadevent_imusiccontentcentereventhandler) 回调报告预加载音乐资源的事件。
在调用该方法来预加载音乐资源之前，你需要调用 [GetMusicCollectionByMusicChartId](/zh-CN/api-reference/rtc/unity/play/drm#api_imusiccontentcenter_getmusiccollectionbymusicchartid) 或 [SearchMusic](/zh-CN/api-reference/rtc/unity/play/drm#api_imusiccontentcenter_searchmusic) 方法来获取你需要播放的音乐资源，并通过由此触发的 [OnMusicCollectionResult](/zh-CN/api-reference/rtc/unity/play/drm#callback_imusiccontentcentereventhandler_onmusiccollectionresult) 回调获取音乐资源的编号（`songCode`）。

:::note
注： 如需销毁 [IRtcEngine](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_irtcengine) 对象，请在收到 [OnPreLoadEvent](/zh-CN/api-reference/rtc/unity/play/drm#callback_imusiccontentcentereventhandler_onpreloadevent_imusiccontentcentereventhandler) 回调后，再调用 [Dispose](/zh-CN/api-reference/rtc/unity/play/mediaplayer/mediaplayer-initialize#api_imediaplayer_dispose_imediaplayer) 方法。
:::

<a id="api_imusiccontentcenter_preload__parameters"></a>

### 参数 [#参数-10]

<ParameterList>
<a id="songcode-5"></a>
<Parameter name="songCode">

音乐资源的编号，用于标识音乐资源。

</Parameter>
<a id="jsonoption-2"></a>
<Parameter name="jsonOption">

扩展 JSON 字段。
声网会根据你在场景字段（`sceneType`）传入的应用场景进行收费。不同的应用场景对应不同的费率，你可以参考 [计费说明](/zh-CN/solutions/online-ktv/online-ktv-sdk/reference/billing) 查看详细的计费。

- 1：直播场景：K 歌及背景音乐播放。
- 2：直播场景：背景音乐播放。
- 3：（默认）语聊场景：K 歌。
- 4：语聊场景：背景音乐播放。
- 5：VR 场景：K 歌及背景音乐播放。

如果需要切换到不同场景，需要重新调用此方法并在该字段中传入 `sceneType` 的值。示例：`{"sceneType":1}`

</Parameter>
</ParameterList>

<a id="api_imusiccontentcenter_preload__return_values"></a>

### 返回值 [#返回值-12]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-12]

- [IMusicContentCenter](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusiccontentcenter)

<a id="api_imusiccontentcenter_preload2"></a>

<a id="ariaid-title15"></a>

## Preload [2/2] [#preload-22]

预加载音乐资源。

<a id="api_imusiccontentcenter_preload2__prototype"></a>

```csharp
public abstract int Preload(ref string requestId, Int64 songCode);
```

<a id="api_imusiccontentcenter_preload2__detailed_desc"></a>

你可以调用该方法预先加载需要播放的音乐资源。成功调用该方法后，SDK 会触发 [OnPreLoadEvent](/zh-CN/api-reference/rtc/unity/play/drm#callback_imusiccontentcentereventhandler_onpreloadevent_imusiccontentcentereventhandler) 回调报告预加载音乐资源的事件。
在调用该方法来预加载音乐资源之前，你需要调用 [GetMusicCollectionByMusicChartId](/zh-CN/api-reference/rtc/unity/play/drm#api_imusiccontentcenter_getmusiccollectionbymusicchartid) 或 [SearchMusic](/zh-CN/api-reference/rtc/unity/play/drm#api_imusiccontentcenter_searchmusic) 方法来获取你需要播放的音乐资源，并通过由此触发的 [OnMusicCollectionResult](/zh-CN/api-reference/rtc/unity/play/drm#callback_imusiccontentcentereventhandler_onmusiccollectionresult) 回调获取音乐资源的编号（`songCode`）。

:::note
注： 如需销毁 [IRtcEngine](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_irtcengine) 对象，请在收到 [OnPreLoadEvent](/zh-CN/api-reference/rtc/unity/play/drm#callback_imusiccontentcentereventhandler_onpreloadevent_imusiccontentcentereventhandler) 回调后，再调用 [Dispose](/zh-CN/api-reference/rtc/unity/play/mediaplayer/mediaplayer-initialize#api_imediaplayer_dispose_imediaplayer) 方法。
:::

<a id="api_imusiccontentcenter_preload2__parameters"></a>

### 参数 [#参数-11]

<ParameterList>
<a id="songcode-6"></a>
<Parameter name="songCode">

音乐资源的编号，用于标识音乐资源。

</Parameter>
<a id="requestid-4"></a>
<Parameter name="requestId">

输出参数，请求 ID。本次请求的唯一标识。

</Parameter>
</ParameterList>

<a id="api_imusiccontentcenter_preload2__return_values"></a>

### 返回值 [#返回值-13]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-13]

- [IMusicContentCenter](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusiccontentcenter)

<a id="api_imusiccontentcenter_registereventhandler_imusiccontentcenter"></a>

<a id="ariaid-title16"></a>

## RegisterEventHandler [#registereventhandler]

注册音乐内容中心回调事件。

<a id="api_imusiccontentcenter_registereventhandler_imusiccontentcenter__prototype"></a>

```csharp
public abstract int RegisterEventHandler(IMusicContentCenterEventHandler eventHandler);
```

<a id="api_imusiccontentcenter_registereventhandler_imusiccontentcenter__detailed_desc"></a>

<a id="api_imusiccontentcenter_registereventhandler_imusiccontentcenter__parameters"></a>

### 参数 [#参数-12]

<ParameterList>
<a id="eventhandler"></a>
<Parameter name="eventHandler">

待注册的回调事件，详见 [IMusicContentCenterEventHandler](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusiccontentcentereventhandler)。

</Parameter>
</ParameterList>

<a id="api_imusiccontentcenter_registereventhandler_imusiccontentcenter__return_values"></a>

### 返回值 [#返回值-14]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-14]

- [IMusicContentCenter](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusiccontentcenter)

<a id="api_imusiccontentcenter_removecache"></a>

<a id="ariaid-title17"></a>

## RemoveCache [#removecache]

删除已缓存的音乐资源。

<a id="api_imusiccontentcenter_removecache__prototype"></a>

```csharp
public abstract int RemoveCache(Int64 songCode);
```

<a id="api_imusiccontentcenter_removecache__detailed_desc"></a>

你可以调用该方法删除某一已缓存的音乐资源，如需删除多个音乐资源，你可以多次调用该方法。

<a id="api_imusiccontentcenter_removecache__parameters"></a>

### 参数 [#参数-13]

<ParameterList>
<a id="songcode-7"></a>
<Parameter name="songCode">

待删除的音乐资源的编号。

</Parameter>
</ParameterList>

<a id="api_imusiccontentcenter_removecache__return_values"></a>

### 返回值 [#返回值-15]

- 0: 方法调用成功，音乐资源已删除。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-15]

- [IMusicContentCenter](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusiccontentcenter)

<a id="api_imusiccontentcenter_renewtoken_imusiccontentcenter"></a>

<a id="ariaid-title18"></a>

## RenewToken [#renewtoken]

更新 Token。

<a id="api_imusiccontentcenter_renewtoken_imusiccontentcenter__prototype"></a>

```csharp
public override int RenewToken(string token)
 	 	        {
 	 	            if (_rtcEngineInstance == null || _musicContentCenterImpl == null)
 	 	            {
 	 	                return ErrorCode;
 	 	            }
 	 	            return _musicContentCenterImpl.RenewToken(token);
 	 	        }
```

<a id="api_imusiccontentcenter_renewtoken_imusiccontentcenter__detailed_desc"></a>

当你用于鉴权的 Token 快要过期或已过期时，你可以调用该方法来传入新生成的 Token。

<a id="api_imusiccontentcenter_renewtoken_imusiccontentcenter__parameters"></a>

### 参数 [#参数-14]

<ParameterList>
<a id="token"></a>
<Parameter name="token">

新的 Token。

</Parameter>
</ParameterList>

<a id="api_imusiccontentcenter_renewtoken_imusiccontentcenter__return_values"></a>

### 返回值 [#返回值-16]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-16]

- [IMusicContentCenter](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusiccontentcenter)

<a id="api_imusiccontentcenter_searchmusic"></a>

<a id="ariaid-title19"></a>

## SearchMusic [#searchmusic]

搜索音乐资源。

<a id="api_imusiccontentcenter_searchmusic__prototype"></a>

```csharp
public abstract int SearchMusic(ref string requestId, string keyWord, int page, int pageSize, string jsonOption = "");
```

<a id="api_imusiccontentcenter_searchmusic__detailed_desc"></a>

成功调用该方法后，SDK 会触发 [OnMusicCollectionResult](/zh-CN/api-reference/rtc/unity/play/drm#callback_imusiccontentcentereventhandler_onmusiccollectionresult) 回调报告检索到的音乐资源列表。

<a id="api_imusiccontentcenter_searchmusic__parameters"></a>

### 参数 [#参数-15]

<ParameterList>
<a id="keyword"></a>
<Parameter name="keyword">

搜索关键词，支持歌曲名、歌手搜索。

</Parameter>
<a id="page-1"></a>
<Parameter name="page">

想要获取的音乐资源列表的目标页编号。

</Parameter>
<a id="pagesize-1"></a>
<Parameter name="pageSize">

每页所展示的音乐资源的最大数量，最大值为 50。

</Parameter>
<a id="jsonoption-3"></a>
<Parameter name="jsonOption">

扩展 JSON 字段，默认为 `null`。你可以通过该字段来筛选出你需要的音乐资源，目前支持筛选可打分的音乐资源及音乐资源的副歌片段：

- `pitchType`：音乐资源是否支持评分。

  - `1`：可评分的音乐资源。
  - `2`：不可评分的音乐资源。

- `needHighPart`：是否需要合唱片段资源。

  - `YES`：需要合唱片段资源。
  - `NO`：不需要合唱片段资源。

</Parameter>
<a id="requestid-5"></a>
<Parameter name="requestId">

请求 ID。本次请求的唯一标识。

</Parameter>
</ParameterList>

<a id="api_imusiccontentcenter_searchmusic__return_values"></a>

### 返回值 [#返回值-17]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-17]

- [IMusicContentCenter](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusiccontentcenter)

<a id="api_imusicplayer_setplaymode"></a>

<a id="ariaid-title20"></a>

## SetPlayMode [#setplaymode]

设置音乐资源的播放模式。

<a id="api_imusicplayer_setplaymode__prototype"></a>

```csharp
public abstract int SetPlayMode(MusicPlayMode mode);
```

<a id="api_imusicplayer_setplaymode__detailed_desc"></a>

你可以调用该方法来设置启用原唱、伴奏或导唱。如不调用该方法进行设置，则默认播放伴奏；如果音乐资源没有伴奏，则播放原唱。

:::note
注： 你可以通过 [OnMusicCollectionResult](/zh-CN/api-reference/rtc/unity/play/drm#callback_imusiccontentcentereventhandler_onmusiccollectionresult) 回调获取音乐资源的详细信息，并可通过其中的 `result` 参数得知需播放的版权音乐所支持的播放类型。
:::

<a id="api_imusicplayer_setplaymode__scenario"></a>

### 适用场景 [#适用场景-1]

在线 K 歌、秀场等娱乐场景下，如果你需要播放声网内容中心提供的版权音乐，你可以调用该方法来设置播放模式。

<a id="api_imusicplayer_setplaymode__timing"></a>

### 调用时机 [#调用时机-1]

该方法需要在 [CreateMusicPlayer](/zh-CN/api-reference/rtc/unity/play/drm#api_imusiccontentcenter_createmusicplayer) 之后调用。

<a id="api_imusicplayer_setplaymode__parameters"></a>

### 参数 [#参数-16]

<ParameterList>
<a id="mode"></a>
<Parameter name="mode">

播放模式，详见 [MusicPlayMode](/zh-CN/api-reference/rtc/unity/enum-musicplaymode)。

</Parameter>
</ParameterList>

<a id="api_imusicplayer_setplaymode__return_values"></a>

### 返回值 [#返回值-18]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

  - -2: 参数设置错误，请重新设置参数。

### 所属接口类 [#所属接口类-18]

- [IMusicPlayer](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusicplayer)

<a id="api_imusiccontentcenter_unregistereventhandler_imusiccontentcenter"></a>

<a id="ariaid-title21"></a>

## UnregisterEventHandler [#unregistereventhandler]

取消注册音乐内容中心事件回调。

<a id="api_imusiccontentcenter_unregistereventhandler_imusiccontentcenter__prototype"></a>

```csharp
public abstract int UnregisterEventHandler();
```

<a id="api_imusiccontentcenter_unregistereventhandler_imusiccontentcenter__detailed_desc"></a>

<a id="api_imusiccontentcenter_unregistereventhandler_imusiccontentcenter__return_values"></a>

### 返回值 [#返回值-19]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-19]

- [IMusicContentCenter](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusiccontentcenter)

<a id="callback_imusiccontentcentereventhandler_onlyricresult"></a>

<a id="ariaid-title22"></a>

## OnLyricResult [#onlyricresult]

歌词下载地址回调。

<a id="callback_imusiccontentcentereventhandler_onlyricresult__prototype"></a>

```csharp
public abstract void OnLyricResult(string requestId, long songCode, string lyricUrl, MusicContentCenterStateReason reason);
```

<a id="callback_imusiccontentcentereventhandler_onlyricresult__detailed_desc"></a>

当你调用 [GetLyric](/zh-CN/api-reference/rtc/unity/play/drm#api_imusiccontentcenter_getlyric) 获取指定歌曲的歌词下载地址后，SDK 会触发该回调。

<a id="callback_imusiccontentcentereventhandler_onlyricresult__parameters"></a>

### 参数 [#参数-17]

<ParameterList>
<a id="requestid-6"></a>
<Parameter name="requestId">

请求 ID。本次请求的唯一标识。

</Parameter>
<a id="songcode-8"></a>
<Parameter name="songCode">

音乐资源的编号，用于标识音乐资源。

</Parameter>
<a id="lyricurl"></a>
<Parameter name="lyricUrl">

歌词的下载地址。

</Parameter>
<a id="reason"></a>
<Parameter name="reason">

音乐内容中心的请求状态码，详见 [MusicContentCenterStateReason](/zh-CN/api-reference/rtc/unity/enum-musiccontentcenterstatereason)。

</Parameter>
</ParameterList>

### 所属接口类 [#所属接口类-20]

- [IMusicContentCenterEventHandler](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusiccontentcentereventhandler)

<a id="callback_imusiccontentcentereventhandler_onmusicchartsresult"></a>

<a id="ariaid-title23"></a>

## OnMusicChartsResult [#onmusicchartsresult]

获取音乐榜单回调。

<a id="callback_imusiccontentcentereventhandler_onmusicchartsresult__prototype"></a>

```csharp
public abstract void OnMusicChartsResult(string requestId, MusicChartInfo[] result, MusicContentCenterStateReason reason);
```

<a id="callback_imusiccontentcentereventhandler_onmusicchartsresult__detailed_desc"></a>

当你调用 [GetMusicCharts](/zh-CN/api-reference/rtc/unity/play/drm#api_imusiccontentcenter_getmusiccharts) 方法获取全部音乐榜单之后，SDK 会触发该回调。

<a id="callback_imusiccontentcentereventhandler_onmusicchartsresult__parameters"></a>

### 参数 [#参数-18]

<ParameterList>
<a id="requestid-7"></a>
<Parameter name="requestId">

请求 ID。本次请求的唯一标识。

</Parameter>
<a id="reason-1"></a>
<Parameter name="reason">

音乐内容中心的请求状态码，详见 [MusicContentCenterStateReason](/zh-CN/api-reference/rtc/unity/enum-musiccontentcenterstatereason)。

</Parameter>
<a id="result"></a>
<Parameter name="result">

当前可播放的音乐榜单列表。详见 [MusicChartInfo](/zh-CN/api-reference/rtc/unity/class-musicchartinfo)。

</Parameter>
</ParameterList>

### 所属接口类 [#所属接口类-21]

- [IMusicContentCenterEventHandler](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusiccontentcentereventhandler)

<a id="callback_imusiccontentcentereventhandler_onmusiccollectionresult"></a>

<a id="ariaid-title24"></a>

## OnMusicCollectionResult [#onmusiccollectionresult]

获取音乐资源列表回调。

<a id="callback_imusiccontentcentereventhandler_onmusiccollectionresult__prototype"></a>

```csharp
public abstract void OnMusicCollectionResult(string requestId, MusicCollection result, MusicContentCenterStateReason reason);
```

<a id="callback_imusiccontentcentereventhandler_onmusiccollectionresult__detailed_desc"></a>

当你调用 [GetMusicCollectionByMusicChartId](/zh-CN/api-reference/rtc/unity/play/drm#api_imusiccontentcenter_getmusiccollectionbymusicchartid) 方法来获取指定榜单的音乐资源列表或调用 [SearchMusic](/zh-CN/api-reference/rtc/unity/play/drm#api_imusiccontentcenter_searchmusic) 来搜索音乐资源时，SDK 会触发此回调报告榜单中音乐资源列表的详细信息。

<a id="callback_imusiccontentcentereventhandler_onmusiccollectionresult__parameters"></a>

### 参数 [#参数-19]

<ParameterList>
<a id="requestid-8"></a>
<Parameter name="requestId">

请求 ID。本次请求的唯一标识。

</Parameter>
<a id="reason-2"></a>
<Parameter name="reason">

音乐内容中心的请求状态码，详见 [MusicContentCenterStateReason](/zh-CN/api-reference/rtc/unity/enum-musiccontentcenterstatereason)。

</Parameter>
<a id="result-1"></a>
<Parameter name="result">

音乐资源列表的详细信息。详见 [MusicCollection](/zh-CN/api-reference/rtc/unity/class-musiccollection)。

</Parameter>
</ParameterList>

### 所属接口类 [#所属接口类-22]

- [IMusicContentCenterEventHandler](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusiccontentcentereventhandler)

<a id="callback_imusiccontentcentereventhandler_onpreloadevent_imusiccontentcentereventhandler"></a>

<a id="ariaid-title25"></a>

## OnPreLoadEvent [#onpreloadevent]

报告预加载音乐资源的事件。

<a id="callback_imusiccontentcentereventhandler_onpreloadevent_imusiccontentcentereventhandler__prototype"></a>

```csharp
public abstract void OnPreLoadEvent(string requestId, long songCode, int percent, string lyricUrl, PreloadState state, MusicContentCenterStateReason reason);
```

<a id="callback_imusiccontentcentereventhandler_onpreloadevent_imusiccontentcentereventhandler__detailed_desc"></a>

当你调用 [Preload [1/2]](/zh-CN/api-reference/rtc/unity/play/drm#api_imusiccontentcenter_preload) 或 [Preload [2/2]](/zh-CN/api-reference/rtc/unity/play/drm#api_imusiccontentcenter_preload2) 方法预加载音乐资源后，SDK 会触发该回调。

<a id="callback_imusiccontentcentereventhandler_onpreloadevent_imusiccontentcentereventhandler__parameters"></a>

### 参数 [#参数-20]

<ParameterList>
<a id="requestid-9"></a>
<Parameter name="requestId">

请求 ID。本次请求的唯一标识。

</Parameter>
<a id="songcode-9"></a>
<Parameter name="songCode">

音乐资源的编号，用于标识一个音乐资源。

</Parameter>
<a id="percent"></a>
<Parameter name="percent">

音乐资源当前的加载进度，取值范围为 [0,100]。

</Parameter>
<a id="lyricurl-1"></a>
<Parameter name="lyricUrl">

歌词下载地址。

</Parameter>
<a id="state"></a>
<Parameter name="state">

当前音乐资源的加载状态。详见 [PreloadState](/zh-CN/api-reference/rtc/unity/enum-preloadstate)。

</Parameter>
<a id="reason-3"></a>
<Parameter name="reason">

音乐内容中心的请求状态码，详见 [MusicContentCenterStateReason](/zh-CN/api-reference/rtc/unity/enum-musiccontentcenterstatereason)。

</Parameter>
</ParameterList>

### 所属接口类 [#所属接口类-23]

- [IMusicContentCenterEventHandler](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusiccontentcentereventhandler)

<a id="callback_imusiccontentcentereventhandler_onsongsimpleinforesult"></a>

<a id="ariaid-title26"></a>

## OnSongSimpleInfoResult [#onsongsimpleinforesult]

音乐资源的详细信息回调。

<a id="callback_imusiccontentcentereventhandler_onsongsimpleinforesult__prototype"></a>

```csharp
public abstract void OnSongSimpleInfoResult(string requestId, long songCode, string simpleInfo, MusicContentCenterStateReason reason);
```

<a id="callback_imusiccontentcentereventhandler_onsongsimpleinforesult__detailed_desc"></a>

当你调用 [GetSongSimpleInfo](/zh-CN/api-reference/rtc/unity/play/drm#api_imusiccontentcenter_getsongsimpleinfo) 获取某一音乐资源的详细信息后，SDK 会触发该回调。

<a id="callback_imusiccontentcentereventhandler_onsongsimpleinforesult__parameters"></a>

### 参数 [#参数-21]

<ParameterList>
<a id="requestid-10"></a>
<Parameter name="requestId">

请求 ID。本次请求的唯一标识。

</Parameter>
<a id="songcode-10"></a>
<Parameter name="songCode">

音乐资源的编号，用于标识音乐资源。

</Parameter>
<a id="simpleinfo"></a>
<Parameter name="simpleInfo">

音乐资源的相关信息，包含下列内容：

- 副歌片段的开始和结束的时间（ms）
- 副歌片段的歌词下载地址
- 副歌片段时长（ms）
- 歌曲名称
- 歌手名

</Parameter>
<a id="reason-4"></a>
<Parameter name="reason">

音乐内容中心的请求状态码，详见 [MusicContentCenterStateReason](/zh-CN/api-reference/rtc/unity/enum-musiccontentcenterstatereason)。

</Parameter>
</ParameterList>

### 所属接口类 [#所属接口类-24]

- [IMusicContentCenterEventHandler](/zh-CN/api-reference/rtc/unity/rtc-interface-class#class_imusiccontentcentereventhandler)
