AgoraMediaPlayer Class Reference

Inherits from NSObject
Declared in AgoraMediaPlayerKit.h

Overview

AgoraMediaPlayer 类

  mute

是否静音:

@property (nonatomic, assign) BOOL mute

Discussion

  • YES: 静音
  • NO: 不静音

Declared In

AgoraMediaPlayerKit.h

  volume

本地播放音量。取值范围 0 到 100。 0 为无声,100 为媒体资源的原始音量。

@property (nonatomic, assign) NSInteger volume

Declared In

AgoraMediaPlayerKit.h

  state

播放状态,详见 AgoraMediaPlayerState

@property (nonatomic, readonly) AgoraMediaPlayerState state

Declared In

AgoraMediaPlayerKit.h

– initWithDelegate:

创建一个 AgoraMediaPlayer 实例

- (instancetype)initWithDelegate:(id<AgoraMediaPlayerDelegate>)delegate

Parameters

delegate

AgoraMediaPlayerDelegate

Return Value

一个 AgoraMediaPlayer 实例

Declared In

AgoraMediaPlayerKit.h

– initWithDelegate:voiceChatMode:

创建一个 AgoraMediaPlayer 实例

- (instancetype)initWithDelegate:(id<AgoraMediaPlayerDelegate>)delegate voiceChatMode:(bool)enableVoiceChatMode

Parameters

delegate

AgoraMediaPlayerDelegate

enableVoiceChatMode

是否使用通话音量:

  • YES: 使用通话音量。通话音量无法调节为 0。
  • NO:(默认)使用媒体音量。相比通话音量,媒体音量具有更好的声音表现力且可以调整为 0,更适用于播放音视频。

Return Value

一个 AgoraMediaPlayer 实例

Discussion

Note

  • 当你同时使用 Agora RTC Native SDK 和 MediaPlayer Kit 时,如果 Native SDK 设置 audio scenario 是 GameStreaming(3),Agora 推荐你设置 MediaPlayer Kit 使用媒体音量,并且同时集成 helper。
  • 当你同时使用 Agora RTC Native SDK 和 MediaPlayer Kit 时,如果 Native SDK 设置 audio scenario 不是 GameStreaming(3),Agora 推荐你设置 MediaPlayer Kit 使用通话音量。

Declared In

AgoraMediaPlayerKit.h

– setView:

设置播放器的渲染视图

- (void)setView:(View *_Nullable)view

Parameters

view

视频渲染视图

Declared In

AgoraMediaPlayerKit.h

– setRenderMode:

设置播放器视图的渲染模式

- (void)setRenderMode:(AgoraMediaPlayerRenderMode)mode

Parameters

mode

播放器视图的渲染模式,详见 AgoraMediaPlayerRenderMode

Declared In

AgoraMediaPlayerKit.h

– open:startPos:

打开媒体文件

- (void)open:(NSString *)url startPos:(NSInteger)startPos

Parameters

url

媒体文件的路径。支持本地路径和网络路径。

startPos

设置起始播放位置 (毫秒),默认值为 0

Declared In

AgoraMediaPlayerKit.h

– play

播放媒体文件

- (void)play

Discussion

打开 open 媒体文件、 定位 seekToPosition 到媒体文件的指定播放位置或暂停 pause 播放媒体文件后,你可以调用该方法播放媒体文件。

Note:

MediaPlayer Kit only supports playing videos with framerate below 60fps (not including 60fps).

Declared In

AgoraMediaPlayerKit.h

– pause

暂停播放

- (void)pause

Discussion

如果你想恢复播放,请调用 play 方法。

Declared In

AgoraMediaPlayerKit.h

– stop

停止播放

- (void)stop

Declared In

AgoraMediaPlayerKit.h

– seekToPosition:

定位到媒体文件的指定播放位置

- (void)seekToPosition:(NSInteger)position

Parameters

position

指定的位置 (毫秒)

Declared In

AgoraMediaPlayerKit.h

– mute:

设置是否静音

- (int)mute:(bool)isMute

Parameters

isMute

静音选项:

  • YES: 静音
  • NO: (默认)不静音

Return Value

Declared In

AgoraMediaPlayerKit.h

– getMute

获取当前的静音状态

- (bool)getMute

Return Value

  • 方法调用成功,返回:
    • YES: 静音
    • NO: (默认)不静音
  • 方法调用失败,返回 NO

Declared In

AgoraMediaPlayerKit.h

– adjustVolume:

调节本地播放音量

- (int)adjustVolume:(int)volume

Parameters

volume

本地播放音量,取值范围从 0 到 100: - 0: 无声 - 100: (默认)媒体文件的原始播放音量

Return Value

Declared In

AgoraMediaPlayerKit.h

– getPlayPosition

获取当前播放进度

- (NSInteger)getPlayPosition

Return Value

Declared In

AgoraMediaPlayerKit.h

– getDuration

获取媒体文件总时长

- (NSInteger)getDuration

Return Value

Declared In

AgoraMediaPlayerKit.h

– getPlayerState

获取播放器当前状态

- (AgoraMediaPlayerState)getPlayerState

Return Value

  • 方法调用成功,返回播放器当前状态 详见 AgoraMediaPlayerState
  • 方法调用失败,返回 nil

Declared In

AgoraMediaPlayerKit.h

– getStreamCount

获取该媒体文件中媒体流的数量

- (NSInteger)getStreamCount

Return Value

Declared In

AgoraMediaPlayerKit.h

– getStreamByIndex:

获取媒体流信息

- (AgoraMediaStreamInfo *_Nullable)getStreamByIndex:(int)index

Parameters

index

媒体流索引值

Return Value

  • 方法调用成功,返回媒体流信息,详见 AgoraMediaStreamInfo
  • 方法调用失败,返回 nil

Declared In

AgoraMediaPlayerKit.h

– setLogFile:

设置日志文件

- (void)setLogFile:(NSString *)filePath

Parameters

filePath

日志文件的完整路径。该日志文件为 UTF-8 编码。

Discussion

设置 MediaPlayer Kit 的输出 log 文件。MediaPlayer Kit 运行时产生的所有 log 将写入该文件。App 必须保证指定的目录存在而且可写。

Note

  • MediaPlayer Kit 的默认日志路径为 App Sandbox/Library/caches/agoraplayer.log
  • 如需调用本方法,请在创建 AgoraMediaPlayerKit 后立即调用,否则可能造成输出日志不完整。

Declared In

AgoraMediaPlayerKit.h

– setLogFilter:

设置日志过滤等级

- (void)setLogFilter:(NSInteger)filter

Parameters

filter

设置过滤器等级。按照输出日志最全到最少排列:

  • AgoraLogFilterDebug(0x080f): 输出所有的 API 日志。如果你想获取最完整的日志,可将日志级别设为该等级。
  • AgoraLogFilterInfo(0x000f): 输出 CRITICAL、ERROR、WARNING、INFO 级别的日志。我们推荐你将日志级别设为该等级。
  • AgoraLogFilterWarning(0x000e): 仅输出 CRITICAL、ERROR、WARNING 级别的日志。
  • AgoraLogFilterError(0x000c): 仅输出 CRITICAL、ERROR 级别的日志。
  • AgoraLogFilterCritical(0x0008): 仅输出 CRITICAL 级别的日志。
  • AgoraLogFilterOff(0): 不输出任何日志。

Discussion

该方法设置 MediaPlayer Kit 的输出日志过滤等级。不同的过滤等级可以单独或组合使用。日志级别顺序依次为 OFF、 CRITICAL、ERROR、WARNING、INFO 和 DEBUG。选择一个级别,你就可以看到在该级别之前所有级别的 日志信息。 例如,你选择 WARNING 级别,就可以看到在 CRITICAL、ERROR 和 WARNING 级别上的所 有日志信息。

Declared In

AgoraMediaPlayerKit.h

– setPlayerOptionInt:value:

设置 MediaPlayer Kit 私有选项

- (void)setPlayerOptionInt:(NSString *)key value:(NSInteger)value

Parameters

key

key 值

value

value 值

Discussion

MediaPlayer Kit 支持通过 key 和 value 来设置私有选项。一般情况下,你无需知晓私有选项设置,使用 Player 默认的选项设置即可。

Note: 请确保在 open 之前调用该方法。

Declared In

AgoraMediaPlayerKit.h

– setPlayerOptionString:value:

设置 MediaPlayer Kit 私有选项

- (void)setPlayerOptionString:(NSString *)key value:(NSString *)value

Parameters

key

key 值。

value

value 值。

Discussion

MediaPlayer Kit 支持通过 key 和 value 来设置私有选项。一般情况下,你无需知晓私有选项设置,使用 Player 默认的选项设置即可。

Note: 请确保在 open 之前调用该方法。

Declared In

AgoraMediaPlayerKit.h

– changePlaybackSpeed:

改变播放速度

- (void)changePlaybackSpeed:(AgoraMediaPlayerSpeed)speed

Parameters

speed

播放速度,详见 AgoraMediaPlayerSpeed

Discussion

打开 (open) 媒体文件后,你可以调用本方法改变播放速度。

Declared In

AgoraMediaPlayerKit.h

– selectAudioTrack:

选择播放时使用的音轨

- (void)selectAudioTrack:(NSInteger)index

Parameters

index

音轨的 index

Discussion

打开 (open) 媒体文件后,你可以调本方法选择播放时使用的音轨。

调用本方法前,请调用 getStreamByIndex 方法获取当前媒体流的音轨信息 AgoraMediaStreamInfo。 其中的 streamIndex 值即为本方法的 index 值。

Declared In

AgoraMediaPlayerKit.h

– getPlayerSdkVersion

获取 MediaPlayer Kit 版本号

- (NSString *)getPlayerSdkVersion

Return Value

当前使用的 Player 的版本号,如 "1.2.1"

Declared In

AgoraMediaPlayerKit.h

– setLoopCount:

设置循环播放

- (void)setLoopCount:(NSInteger)loopCount

Parameters

loopCount

循环播放的次数。

Discussion

如果你希望循环播放,请调用该方法并设置循环播放次数。

循环播放结束时,Player 会返回 AgoraMediaPlayerStatePlayBackAllLoopsCompleted(6)

Declared In

AgoraMediaPlayerKit.h

– destroy

销毁 AgoraMediaPlayer 实例

- (void)destroy

Discussion

调用该方法后,你将无法再使用 Player 提供的其他 API。如果你需要重新使用 Player, 你需要调用 initWithDelegate 方法,重新创建一个 AgoraMediaPlayer 实例。

Note

  • 该方法为同步调用。为避免死锁,Agora 建议你不要在回调中调用该方法。
  • 如果你需要在销毁后再次创建 AgoraMediaPlayer 实例,请等待本方法执行结束后再创建。

Declared In

AgoraMediaPlayerKit.h

– setExternalSubtitle:

设置外挂字幕(仅适用于 macOS)

- (void)setExternalSubtitle:(NSString *)url

Parameters

url

外接字幕的 URL 地址。支持本地地址和在线地址。

Discussion

调用 open 方法成功打开媒体文件后,你可以调用本方法设置播放器显示外接字幕。

Note: 调用该方法前,请确保已设置为软件解码:

[_mediaPlayerKit setPlayerOptionInt:@"video_decoder_type" value:1];

[_mediaPlayerKit setPlayerOptionString:@"media_format" value:@"mp4"];

Declared In

AgoraMediaPlayerKit.h

– switchSrc:syncPts:

切换正在播放的媒体资源。

- (void)switchSrc:(NSString *)src syncPts:(BOOL)syncPts

Parameters

src

待切换的媒体资源 URL 地址,支持本地和 HTTP、RTMP 和 RTSP 协议的在线媒体流。

syncPts

是否同步切换前后的播放位置(毫秒):

  • true:(默认)同步切换前后的播放位置。MediaPlayer Kit 会在切换后,从切换时的播放位置开始播放媒体资源。

Note: Agora 仅支持在播放点播流时,将 syncPts 设为 true。

  • false: 不同步切换前后的播放位置:

  • 如果媒体资源是点播流,MediaPlayer Kit 会在切换后,从头开始播放媒体资源。

  • 如果媒体资源是直播流,MediaPlayer Kit 会在切换后,从切换时的播放位置开始播放媒体资源。

Discussion

你可以根据当前网络状态调用该方法切换播放的媒体资源。例如,在网络较差时,将播放的媒体资源切换为较低码率的媒体资源地址;在网络较好时,将播放的媒体资源切换为较高码率的媒体资源地址。

调用 switchSrc 后,如果你收到 didOccurEvent 回调报告事件 AgoraMediaPlayerEventSwitchComplete(9),则切换成功;如果你收到 didOccurEvent 回调报告事件 AgoraMediaPlayerEventSwitchError(10),则切换失败。

Note:

  • 请确保在 open 之后调用该方法。
  • 为保证播放正常,请在调用 switchSrc(src, true) 时注意如下:
  • 不要在播放暂停时调用该方法。
  • 不要在切换过程中调用 seekToPosition
  • 确保切换前的播放位置不大于待切换的媒体资源总时长。

Declared In

AgoraMediaPlayerKit.h

– addPreloadSrc:startPos:

预加载媒体资源。

- (void)addPreloadSrc:(NSString *)src startPos:(NSInteger)startPos

Parameters

src

预加载的媒体资源 URL 地址,支持本地和 HTTP、RTMP 和 RTSP 协议的在线媒体流。

startPos

预加载到播放列表后,开始播放时的起始位置(毫秒)。预加载直播流时,将 startPos 设为 0。

Discussion

你可以调用该方法将一个媒体资源预加载到播放列表中。如果需要预加载多个媒体资源,你可以多次调用该方法。

调用 addPreloadSrc 后,如果收到 didPreloadEvent 回调报告事件 AgoraMediaPlayerPreloadEventComplete(9),则预加载成功;如果你收到 didPreloadEvent 回调报告事件 PLAYER_EVENT_SWITCH_ERROR(10),预加载失败。

预加载成功后,如果你想播放媒体资源,请调用 playPreload;如果你想清空播放列表,请调用 stop

Note:

Agora 不支持你预加载重复的媒体资源到播放列表,但支持你将正在播放的媒体资源再次预加载到播放列表。

Declared In

AgoraMediaPlayerKit.h

– playPreload:

播放预加载的媒体资源。

- (void)playPreload:(NSString *)src

Parameters

src

播放列表中的媒体资源 URL 地址,必须与 addPreloadSrc 方法设置的 src 一致,否则无法播放。

Discussion

该方法仅支持播放已预加载到播放列表中的媒体资源。调用该方法后,如果你收到 didChangedToState 回调报告状态 AgoraMediaPlayerStatePlaying(3),播放成功。

如果你想更换播放的预加载媒体资源,你可以再次调用该方法并指定新的媒体资源路径。 如果你想重新播放媒体资源,你需要在播放前调用 addPreloadSrc 重新将该媒体资源预加载到播放列表。 如果你想清空播放列表,请调用 stop

Note:

如果你在播放暂停时调用该方法,该方法会在恢复播放后才生效。

Declared In

AgoraMediaPlayerKit.h