功能描述
媒体播放器组件(ARMediaPlayerKit)是一款功能强大的播放器,支持播放本地或在线的媒体资源。通过该播放器,你可以本地播放媒体资源,或将媒体资源同步分享给 anyRTC 频道内的远端用户观看/收听。
使用须知
支持格式
- 目前支持的音频格式:MP3、WAV等
 - 目前支持的视频格式:AVI、MP4、MKV、FLV等
 
支持协议
目前支持HTTP、RTMP 和 RTSP 协议的在线媒体流。
本地播放时
必须先创建 RTC 引擎然后使用  ARMediaPlayerKit,因为 ARMediaPlayerKit 播放器与 RTC 的音频路由一致,这种方式避免了同时使用RTC 和ARMediaPlayerKit 播放器声音路由问题。
分享到远端时
播放器的画面会抢占主播摄像头采集的画面。
准备开发环境
前提条件
- Xcode 10.0 或以上版本
 - iOS 9.0 以上版本的设备
 
创建 iOS 项目
- 
打开 Xcode 并点击 Create a new Xcode project。
 - 
选择平台类型为 iOS、项目类型为 Single View App,并点击 Next。
 - 
输入项目名称(Product Name)、开发团队信息(Team)、组织名称(Organization Name)和语言(Language)等项目信息,并点击 Next。
如果你没有添加过开发团队信息,会看到 Add account… 按钮。点击该按钮并按照屏幕提示登入 Apple ID,完成后即可选择你的 Apple 账户作为开发团队。
 - 
选择项目存储路径,并点击 Create。
 
方法一:使用 CocoaPods 获取 SDK
- 开始前确保你已安装 Cocoapods。参考 Getting Started with CocoaPods 安装说明。
 - 在终端里进入项目根目录,并运行 
pod init命令。项目文件夹下会生成一个Podfile文本文件。 - 打开 
Podfile文件,修改文件为如下内容。注意将Your App替换为你的 Target 名称。 
platform :ios, '9.0'
use_frameworks!
pod 'ARtcKit_iOS'
end
- 在终端内运行 
pod install命令安装 SDK。成功安装后,Terminal 中会显示Pod installation complete!,此时项目文件夹下会生成一个xcworkspace文件。 - 打开新生成的 
xcworkspace文件。 
方法二:从官网获取 SDK
- 
前往
SDK 下载页面,获取最新版的 RTC SDK,然后解压。 - 
根据你的需求,选择以下一种方法将
ARtcKit.framework动态库复制到项目的./project_name文件夹下(project_name为你的项目名称)。 - 
打开 Xcode,进入 TARGETS > Project Name > General > Frameworks, Libraries, and Embedded Content菜单。
 - 
点击 + > Add Other… > Add Files 添加
ARtcKit.framework动态库,并确保添加的动态库 Embed 属性设置为 Embed & Sign。 添加完成后,项目会自动链接所需系统库。 
- 根据 Apple 官方要求,app 的 Extension 中不允许包含动态库。如果项目中的 Extension 需要集成 SDK,则添加动态库时需将文件状态改为 Do Not Embed。
 
实现方法
本地播放媒体资源
集成 RTC SDK 后,参考如下步骤实现本地播放功能。
创建一个播放器实例
创建一个 ARMediaPlayer 实例。
如需同时播放不同的媒体资源,你可以创建多个实例。
事件回调
| 回调 | 描述 | 
|---|---|
| didChangedToPosition | 报告当前播放进度 | 
| didChangedToState | 报告播放状态改变 | 
| didOccurEvent | 报告定位播放状态 | 
| didReceiveData | 报告媒体附属信息(metadata)的接收 | 
| didReceiveAudioFrame | 报告每帧音频帧的接收 | 
| didReceiveVideoFrame | 报告每帧视频帧的接收 | 
准备播放
- 
调用
ARMediaPlayer接口的setView方法设置播放器的渲染视图。 - 
调用
ARMediaPlayer接口的setRenderMode方法设置播放器视图的渲染模式。 - 
调用
ARMediaPlayer接口的open方法打开媒体资源。媒体资源路径可以为网络路径或本地路径,支持绝对路径和相对路径。请收到
didChangedToState回调报告播放状态为ARMediaPlayerStateOpenCompleted(2)后再进行下一步操作。 - 
调用
ARMediaPlayer接口的play方法本地播放该媒体资源。 
调节播放设置
调用 ARMediaPlayer 接口的其他方法,你可以实现如下播放设置:
- 暂停/恢复播放,调节播放进度,调节本地播放音量等。
 - 获取媒体资源总时长,获取播放进度,获取当前播放状态,获取该媒体资源中媒体流的个数和每个媒体流的详细信息。
 
结束播放
- 调用 
ARMediaPlayer接口的stop方法停止播放。 - 将 
setView方法中view赋值为 NULL,释放 view。 - 使用 iOS ARC 内存管理机制释放 
ARMediaPlayer实例。 
示例代码
_mediaPlayerKit = [[ARMediaPlayer alloc] initWithDelegate:self];
[_mediaPlayerKit setView:self.containerView];
[_mediaPlayerKit open:url startPos:0];
[_mediaPlayerKit play];
[_mediaPlayerKit stop];
[_mediaPlayerKit seekToPosition:value];
[_mediaPlayerKit adjustVolume:volume];
//MARK: - ARMediaPlayerDelegate
//报告播放器状态改变
- (void)rtcMediaPlayer:(ARMediaPlayer *_Nonnull)playerKit
       didChangedToState:(ARMediaPlayerState)state
                   error:(ARMediaPlayerError)error {
}
//报告当前播放进度
- (void)rtcMediaPlayer:(ARMediaPlayer *_Nonnull)playerKit
    didChangedToPosition:(NSInteger)position {
}
//报告定位播放的结果
- (void)rtcMediaPlayer:(ARMediaPlayer *_Nonnull)playerKit
          didOccurEvent:(ARMediaPlayerEvent)event {
}
//报告已获取媒体附属信息
- (void)rtcMediaPlayer:(ARMediaPlayer *_Nonnull)playerKit
            metaDataType:(ARMediaPlayerMetaDataType) type
          didReceiveData:(NSString *)data
                  length:(NSInteger)length {
}

