功能描述
媒体播放器组件(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 {
}