AgoraMediaSource
需播放的媒体文件的相关信息及播放设置。
__attribute__((visibility("default"))) @interface AgoraMediaSource : NSObject
@property(copy, nonatomic) NSString *_Nullable url;
@property(copy, nonatomic) NSString *_Nullable uri;
@property(assign, nonatomic) NSUInteger startPos;
@property(assign, nonatomic) BOOL enableCache;
@property(assign, nonatomic) BOOL enableMultiAudioTrack;
@property(assign, nonatomic) BOOL autoPlay;
@property(assign, nonatomic) BOOL isAgoraSource;
@property(assign, nonatomic) BOOL isLiveSource;
@property(copy, nonatomic) AgoraRtcMediaPlayerCustomSourceOnReadCallback _Nonnull playerOnReadCallback;
@property(copy, nonatomic) AgoraRtcMediaPlayerCustomSourceOnSeekCallback _Nonnull playerOnSeekCallback;
@end
@end
url
需要播放的媒体资源的 URL。
如果你打开的为普通媒体资源,请向 url 传值;如果你打开媒体资源为自定义媒体资源,请向 playerOnReadCallback 及 playerOnSeekCallback 传值,同时传值会导致方法调用失败。
uri
startPos
autoPlay
YES
:(默认)开启自动播放。NO
:关闭自动播放。
如果你设置关闭自动播放,打开媒体文件后,请调用 play 方法来播放媒体文件。
enableCache
YES
:开启实时缓存。NO
:(默认)关闭实时缓存。
- SDK 目前仅支持缓存点播流,但不支持缓存通过 HLS 协议传输的点播流。
- 缓存前,请向 uri 传值,否则播放器会以媒体文件的 url 作为缓存索引。
- 开启实时缓存后,播放器会预先缓存当前正在播放的媒体文件的部分数据到本地,当你下次播放该文件时播放器会直接从缓存中加载数据,可节省网络流量。当前缓存的媒体文件的相关统计数据会在媒体文件开始播放后每秒更新一次,详见 AgoraMediaPlayerCacheStatistics。
enableMultiAudioTrack
YES
:允许选择不同音轨。NO
:(默认)不允许选择不同音轨。
如果你在本地播放和发布音频至远端时,需要设置不同的音轨,你需要将该参数设为 YES
,然后再调用 selectMultiAudioTrack:publishTrackIndex: 方法来设置音轨。
isAgoraSource
YES
:打开的媒体资源是声网融合 CDN 分发的直播或点播流。NO
:(默认)打开的媒体资源不是声网融合 CDN 分发的直播或点播流。
如果你需要打开的媒体资源为声网融合 CDN 分发的直播流或点播流,请向 url 传入直播或点播流的 URL 并将 isAgoraSource 设置为 YES
,否则无需设置 isAgoraSource。
isLiveSource
YES
:直播流。NO
:(默认)非直播流。
如果你打开的媒体资源为直播流,建议你将该参数设置为 YES
,可加快打开直播流的速度。
仅当打开的媒体资源为直播流时,将 isLiveSource 设置为 YES
后才可加快媒体资源的打开速度。
playerOnReadCallback
读取媒体资源数据回调。详见 AgoraRtcMediaPlayerCustomSourceOnReadCallback。
如果你打开的为普通媒体资源,请向 url 传值;如果你打开媒体资源为自定义媒体资源,请向 playerOnReadCallback 及 playerOnSeekCallback 传值,同时传值会导致方法调用失败。
playerOnSeekCallback
定位媒体资源数据回调。详见 AgoraRtcMediaPlayerCustomSourceOnSeekCallback。
如果你打开的为普通媒体资源,请向 url 传值;如果你打开媒体资源为自定义媒体资源,请向 playerOnReadCallback 及 playerOnSeekCallback 传值,同时传值会导致方法调用失败。