# MediaSource (/zh-CN/api-reference/rtc/cpp-all-platforms/class-mediasource)

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

<a id="class_mediasource__prototype"></a>

```cpp
struct MediaSource {
  const char* url;
  const char* uri;
  int64_t startPos;
  bool autoPlay;
  bool enableCache;
  bool enableMultiAudioTrack;
  Optional<bool> isAgoraSource;
  Optional<bool> isLiveSource;
  IMediaPlayerCustomDataProvider* provider;
};
```

<a id="class_mediasource__parameters"></a>

## 属性 [#属性]

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

要播放的媒体文件的 URL。

:::note
注： 如果打开的是普通媒体资源，请传入 `url`。如果打开的是自定义媒体资源，请传入 `provider`。声网建议不要在一次调用中同时传入这两个参数，否则调用可能失败。
:::

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

媒体文件的 URI（统一资源标识符）。

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

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

</Parameter>
<a id="autoplay"></a>
<Parameter name="autoPlay">

:::note
注： 如果禁用了自动播放，需要在打开媒体文件后调用 [play](/zh-CN/api-reference/rtc/cpp-all-platforms/play/mediaplayer/mediaplayer-control#api_imediaplayer_play) 方法播放。
:::

打开媒体文件后是否自动播放：

- true：（默认）自动播放。
- false：不自动播放。

</Parameter>
<a id="enablecache"></a>
<Parameter name="enableCache">

:::note
注： 声网仅支持缓存非 HLS 协议传输的点播音视频流。若需启用缓存，请传入 `uri`，否则缓存基于媒体文件的 `url`。启用该功能后，媒体播放器会将播放中的部分媒体文件缓存在本地设备上，即使无网络连接也可播放缓存的媒体文件。缓存的媒体文件统计信息会在播放后每秒更新一次，详见 [CacheStatistics](/zh-CN/api-reference/rtc/cpp-all-platforms/class-cachestatistics)。
:::

播放媒体文件时是否启用缓存：

- true：启用缓存。
- false：（默认）不启用缓存。

</Parameter>
<a id="enablemultiaudiotrack"></a>
<Parameter name="enableMultiAudioTrack">

:::note
注： 如果需要为本地播放和发布到频道设置不同的音轨，需将该参数设置为 true，然后调用 [selectMultiAudioTrack](/zh-CN/api-reference/rtc/cpp-all-platforms/play/audio-mixing#api_imediaplayer_selectmultiaudiotrack) 方法选择音轨。
:::

播放该媒体文件时是否允许选择不同的音轨：

- true：允许选择不同音轨。
- false：（默认）不允许选择不同音轨。

</Parameter>
<a id="isagorasource"></a>
<Parameter name="isAgoraSource">

:::note
注： 如果需要打开通过直播服务分发的直播流或点播视频，请将媒体资源的 URL 传入 `url`，并将 `isAgoraSource` 设置为 true；否则无需设置该参数。
:::

要打开的媒体资源是否为通过直播服务分发的直播流或点播视频：

- true：媒体资源为通过直播服务分发的直播或点播视频。
- false：（默认）媒体资源不是通过直播服务分发的直播或点播视频。

</Parameter>
<a id="islivesource"></a>
<Parameter name="isLiveSource">

:::note
注： 如果要打开的媒体资源是直播流，声网建议将该参数设置为 true，以加快直播流加载速度。若打开的媒体资源不是直播流但设置了 `isLiveSource` 为 true，则不会加快加载速度。
:::

要打开的媒体资源是否为直播流：

- true：媒体资源为直播流。
- false：（默认）媒体资源不是直播流。

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

自定义媒体资源文件的回调。详见 [IMediaPlayerCustomDataProvider](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_imediaplayercustomdataprovider)。

:::note
注： 如果打开的是自定义媒体资源，请传入 `provider`。如果打开的是普通媒体资源，请传入 `url`。声网建议不要在一次调用中同时传入 `url` 和 `provider`，否则调用可能失败。
:::

</Parameter>
</ParameterList>
