# 播放器控制 (/zh-CN/api-reference/rtc/cpp-all-platforms/play/mediaplayer/mediaplayer-control)

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

<a id="toc_mediaplayer_control"></a>

<a id="api_imediaplayer_adjustplayoutvolume"></a>

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

## adjustPlayoutVolume [#adjustplayoutvolume]

调整本地播放音量。

<a id="api_imediaplayer_adjustplayoutvolume__prototype"></a>

```cpp
virtual int adjustPlayoutVolume(int volume) = 0;
```

<a id="api_imediaplayer_adjustplayoutvolume__detailed_desc"></a>

<a id="api_imediaplayer_adjustplayoutvolume__timing"></a>

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

该方法可以在加入频道前或加入频道后调用。

<a id="api_imediaplayer_adjustplayoutvolume__parameters"></a>

### 参数 [#参数]

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

本地播放音量，取值范围为 0 到 100。0 表示静音，100（默认）表示原始音量。

</Parameter>
</ParameterList>

<a id="api_imediaplayer_adjustplayoutvolume__return_values"></a>

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

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

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

- [IMediaPlayer](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_imediaplayer)

<a id="api_imediaplayer_adjustpublishsignalvolume"></a>

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

## adjustPublishSignalVolume [#adjustpublishsignalvolume]

调节用于发布的媒体文件音量。

<a id="api_imediaplayer_adjustpublishsignalvolume__prototype"></a>

```cpp
virtual int adjustPublishSignalVolume(int volume) = 0;
```

<a id="api_imediaplayer_adjustpublishsignalvolume__detailed_desc"></a>

<a id="api_imediaplayer_adjustpublishsignalvolume__timing"></a>

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

该方法可以在加入频道前或后调用。

<a id="api_imediaplayer_adjustpublishsignalvolume__parameters"></a>

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

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

音量，范围为 0 到 400：

- 0：静音。
- 100：（默认）原始音量。
- 400：原始音量的四倍（将音频信号放大四倍）。

</Parameter>
</ParameterList>

<a id="api_imediaplayer_adjustpublishsignalvolume__return_values"></a>

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

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

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

- [IMediaPlayer](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_imediaplayer)

<a id="api_imediaplayer_mute"></a>

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

## mute [#mute]

设置是否将媒体文件静音。

<a id="api_imediaplayer_mute__prototype"></a>

```cpp
virtual int mute(bool muted) = 0;
```

<a id="api_imediaplayer_mute__detailed_desc"></a>

<a id="api_imediaplayer_mute__timing"></a>

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

你可以在加入频道前或加入频道后调用该方法。

<a id="api_imediaplayer_mute__parameters"></a>

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

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

是否将媒体文件静音：

- true：静音媒体文件。
- false：（默认）取消静音媒体文件。

</Parameter>
</ParameterList>

<a id="api_imediaplayer_mute__return_values"></a>

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

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

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

- [IMediaPlayer](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_imediaplayer)

<a id="api_imediaplayer_pause"></a>

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

## pause [#pause]

暂停播放。

<a id="api_imediaplayer_pause__prototype"></a>

```cpp
virtual int pause() = 0;
```

<a id="api_imediaplayer_pause__detailed_desc"></a>

<a id="api_imediaplayer_pause__timing"></a>

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

你可以在加入频道前或加入频道后调用该方法。

<a id="api_imediaplayer_pause__return_values"></a>

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

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

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

- [IMediaPlayer](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_imediaplayer)

<a id="api_imediaplayer_play"></a>

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

## play [#play]

播放媒体文件。

<a id="api_imediaplayer_play__prototype"></a>

```cpp
virtual int play() = 0;
```

<a id="api_imediaplayer_play__detailed_desc"></a>

<a id="api_imediaplayer_play__timing"></a>

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

- 调用 [open](/zh-CN/api-reference/rtc/cpp-all-platforms/play/mediaplayer/mediaplayer-open#api_imediaplayer_open) 或 [openWithMediaSource](/zh-CN/api-reference/rtc/cpp-all-platforms/play/mediaplayer/mediaplayer-open#api_imediaplayer_openwithmediasource) 打开媒体文件，并收到 [onPlayerSourceStateChanged](/zh-CN/api-reference/rtc/cpp-all-platforms/play/mediaplayer/mediaplayer-observer#callback_imediaplayersourceobserver_onplayersourcestatechanged) 回调报告状态为 `PLAYER_STATE_OPEN_COMPLETED` 后调用该方法。
- 调用 [seek](/zh-CN/api-reference/rtc/cpp-all-platforms/play/mediaplayer/mediaplayer-control#api_imediaplayer_seek) 后调用该方法。

<a id="api_imediaplayer_play__return_values"></a>

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

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

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

- [IMediaPlayer](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_imediaplayer)

<a id="api_imediaplayer_playpreloadedsrc"></a>

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

## playPreloadedSrc [#playpreloadedsrc]

播放预加载的媒体资源。

<a id="api_imediaplayer_playpreloadedsrc__prototype"></a>

```cpp
virtual int playPreloadedSrc(const char* src) = 0;
```

<a id="api_imediaplayer_playpreloadedsrc__detailed_desc"></a>

调用 [preloadSrc](/zh-CN/api-reference/rtc/cpp-all-platforms/play/mediaplayer/mediaplayer-open#api_imediaplayer_preloadsrc) 将媒体资源预加载到播放列表后，可以调用该方法播放该资源。调用成功后，如果收到 [onPlayerSourceStateChanged](/zh-CN/api-reference/rtc/cpp-all-platforms/play/mediaplayer/mediaplayer-observer#callback_imediaplayersourceobserver_onplayersourcestatechanged) 回调并报告 `PLAYER_STATE_PLAYING` 状态，表示播放成功。

如果你想更换要播放的预加载媒体资源，可以再次调用该方法并传入新的媒体资源 URL。若想重新播放该媒体资源，需要先调用 [preloadSrc](/zh-CN/api-reference/rtc/cpp-all-platforms/play/mediaplayer/mediaplayer-open#api_imediaplayer_preloadsrc) 重新预加载资源。

如需清空播放列表，请调用 [stop](/zh-CN/api-reference/rtc/cpp-all-platforms/play/mediaplayer/mediaplayer-control#api_imediaplayer_stop) 方法。

:::note
注： 如果在播放暂停时调用该方法，该方法在播放恢复之前不会生效。
:::

<a id="api_imediaplayer_playpreloadedsrc__parameters"></a>

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

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

播放列表中媒体资源的 URL，必须与通过 [preloadSrc](/zh-CN/api-reference/rtc/cpp-all-platforms/play/mediaplayer/mediaplayer-open#api_imediaplayer_preloadsrc) 设置的 `src` 保持一致，否则无法播放该媒体资源。

</Parameter>
</ParameterList>

<a id="api_imediaplayer_playpreloadedsrc__return_values"></a>

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

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

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

- [IMediaPlayer](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_imediaplayer)

<a id="api_imediaplayer_resume"></a>

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

## resume [#resume]

恢复播放媒体文件。

<a id="api_imediaplayer_resume__prototype"></a>

```cpp
virtual int resume() = 0;
```

<a id="api_imediaplayer_resume__detailed_desc"></a>

<a id="api_imediaplayer_resume__return_values"></a>

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

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

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

- [IMediaPlayer](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_imediaplayer)

<a id="api_imediaplayer_seek"></a>

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

## seek [#seek]

跳转到新的播放位置。

<a id="api_imediaplayer_seek__prototype"></a>

```cpp
virtual int seek(int64_t newPos) = 0;
```

<a id="api_imediaplayer_seek__detailed_desc"></a>

如果在播放完成后调用 [seek](/zh-CN/api-reference/rtc/cpp-all-platforms/play/mediaplayer/mediaplayer-control#api_imediaplayer_seek)（即收到回调 [onPlayerSourceStateChanged](/zh-CN/api-reference/rtc/cpp-all-platforms/play/mediaplayer/mediaplayer-observer#callback_imediaplayersourceobserver_onplayersourcestatechanged) 报告播放状态为 `PLAYER_STATE_PLAYBACK_COMPLETED` 或 `PLAYER_STATE_PLAYBACK_ALL_LOOPS_COMPLETED`），SDK 会从指定位置重新开始播放媒体文件，并触发 [onPlayerSourceStateChanged](/zh-CN/api-reference/rtc/cpp-all-platforms/play/mediaplayer/mediaplayer-observer#callback_imediaplayersourceobserver_onplayersourcestatechanged) 回调，报告播放状态为 `PLAYER_STATE_PLAYING`。
如果在播放暂停时调用 [seek](/zh-CN/api-reference/rtc/cpp-all-platforms/play/mediaplayer/mediaplayer-control#api_imediaplayer_seek)，调用成功后，SDK 会跳转到指定位置。要恢复播放，请调用 [resume](/zh-CN/api-reference/rtc/cpp-all-platforms/play/mediaplayer/mediaplayer-control#api_imediaplayer_resume) 或 [play](/zh-CN/api-reference/rtc/cpp-all-platforms/play/mediaplayer/mediaplayer-control#api_imediaplayer_play)。

<a id="api_imediaplayer_seek__timing"></a>

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

你可以在加入频道前或后调用该方法。

<a id="api_imediaplayer_seek__related"></a>

### 相关回调 [#相关回调]

成功调用该方法后，SDK 会触发 [onPlayerEvent](/zh-CN/api-reference/rtc/cpp-all-platforms/play/mediaplayer/mediaplayer-observer#callback_imediaplayersourceobserver_onplayerevent) 回调，报告跳转到新播放位置的结果。

<a id="api_imediaplayer_seek__parameters"></a>

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

<ParameterList>
<a id="newpos"></a>
<Parameter name="newPos">

新的播放位置，单位为毫秒。

</Parameter>
</ParameterList>

<a id="api_imediaplayer_seek__return_values"></a>

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

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

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

- [IMediaPlayer](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_imediaplayer)

<a id="api_imediaplayer_stop"></a>

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

## stop [#stop]

停止播放媒体轨道。

<a id="api_imediaplayer_stop__prototype"></a>

```cpp
virtual int stop() = 0;
```

<a id="api_imediaplayer_stop__detailed_desc"></a>

调用该方法停止播放后，如需再次播放，需要调用 [open](/zh-CN/api-reference/rtc/cpp-all-platforms/play/mediaplayer/mediaplayer-open#api_imediaplayer_open) 或 [openWithMediaSource](/zh-CN/api-reference/rtc/cpp-all-platforms/play/mediaplayer/mediaplayer-open#api_imediaplayer_openwithmediasource) 重新打开媒体资源。

<a id="api_imediaplayer_stop__timing"></a>

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

在播放后调用该方法。

<a id="api_imediaplayer_stop__return_values"></a>

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

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

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

- [IMediaPlayer](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_imediaplayer)

<a id="callback_imediaplayercustomdataprovider_onseek"></a>

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

## onSeek [#onseek]

定位媒体资源数据时触发的回调。

<a id="callback_imediaplayercustomdataprovider_onseek__prototype"></a>

```cpp
virtual int64_t onSeek(int64_t offset, int whence) = 0;
```

<a id="callback_imediaplayercustomdataprovider_onseek__detailed_desc"></a>

该回调在调用 [openWithMediaSource](/zh-CN/api-reference/rtc/cpp-all-platforms/play/mediaplayer/mediaplayer-open#api_imediaplayer_openwithmediasource) 或 [open](/zh-CN/api-reference/rtc/cpp-all-platforms/play/mediaplayer/mediaplayer-open#api_imediaplayer_open) 打开自定义媒体资源时触发，用于请求媒体资源中指定位置的数据。

<a id="callback_imediaplayercustomdataprovider_onseek__parameters"></a>

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

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

目标位置相对于起始点的偏移量，单位为字节。该值可以为正数或负数。

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

起始点，可设置为以下值之一：

- 0：起始点为数据开头，定位后的实际数据偏移量为 `offset`。
- 1：起始点为当前位置，定位后的实际数据偏移量为当前位置加 `offset`。
- 2：起始点为数据末尾，定位后的实际数据偏移量为整个数据长度加 `offset`。
- 65536：不执行定位操作，返回文件大小。建议在播放 MP3、WAV 等纯音频文件时使用该值。

</Parameter>
</ParameterList>

<a id="callback_imediaplayercustomdataprovider_onseek__return_values"></a>

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

- `whence` 为 `65536` 时，返回媒体文件大小。
- `whence` 为 `0`、`1` 或 `2` 时，返回定位后的实际数据偏移量。
- -1：定位失败。

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

- [IMediaPlayerCustomDataProvider](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_imediaplayercustomdataprovider)
