播放器组件

最近更新时间:2022-09-20 05:17:40

功能描述

媒体播放器组件(ARMediaPlayerKit)是一款功能强大的播放器,支持播放本地或在线的媒体资源。通过该播放器,你可以本地播放媒体资源,或将媒体资源同步分享给 anyRTC 频道内的远端用户观看/收听。

使用须知

支持格式

  • 目前支持的音频格式:MP3、WAV等
  • 目前支持的视频格式:AVI、MP4、MKV、FLV等

支持协议

目前支持HTTP、RTMP 和 RTSP 协议的在线媒体流。

本地播放时

必须先创建 RTC 引擎然后使用 ARMediaPlayerKit,因为 ARMediaPlayerKit 播放器与 RTC 的音频路由一致,这种方式避免了同时使用RTC 和ARMediaPlayerKit 播放器声音路由问题。

分享到远端时

播放器的画面会抢占主播摄像头采集的画面。

准备开发环境

前提条件

  • Xcode 10.0 或以上版本
  • iOS 9.0 以上版本的设备

创建 iOS 项目

  1. 打开 Xcode 并点击 Create a new Xcode project

  2. 选择平台类型为 iOS、项目类型为 Single View App,并点击 Next

  3. 输入项目名称(Product Name)、开发团队信息(Team)、组织名称(Organization Name)和语言(Language)等项目信息,并点击 Next

    如果你没有添加过开发团队信息,会看到 Add account… 按钮。点击该按钮并按照屏幕提示登入 Apple ID,完成后即可选择你的 Apple 账户作为开发团队。

  4. 选择项目存储路径,并点击 Create

方法一:使用 CocoaPods 获取 SDK

  1. 开始前确保你已安装 Cocoapods。参考 Getting Started with CocoaPods 安装说明。
  2. 在终端里进入项目根目录,并运行 pod init 命令。项目文件夹下会生成一个 Podfile 文本文件。
  3. 打开 Podfile 文件,修改文件为如下内容。注意将 Your App 替换为你的 Target 名称。
platform :ios, '9.0'
use_frameworks!
pod 'ARtcKit_iOS'
end
  1. 在终端内运行 pod install 命令安装 SDK。成功安装后,Terminal 中会显示 Pod installation complete!,此时项目文件夹下会生成一个 xcworkspace 文件。
  2. 打开新生成的 xcworkspace 文件。

方法二:从官网获取 SDK

  1. 前往 SDK 下载页面,获取最新版的 RTC SDK,然后解压。

  2. 根据你的需求,选择以下一种方法将 ARtcKit.framework 动态库复制到项目的 ./project_name 文件夹下(project_name 为你的项目名称)。

  3. 打开 Xcode,进入 TARGETS > Project Name > General > Frameworks, Libraries, and Embedded Content菜单。

  4. 点击 + > 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报告每帧视频帧的接收

准备播放

  1. 调用 ARMediaPlayer 接口的 setView 方法设置播放器的渲染视图。

  2. 调用 ARMediaPlayer 接口的 setRenderMode 方法设置播放器视图的渲染模式。

  3. 调用 ARMediaPlayer 接口的 open 方法打开媒体资源。媒体资源路径可以为网络路径或本地路径,支持绝对路径和相对路径。

    请收到 didChangedToState 回调报告播放状态为 ARMediaPlayerStateOpenCompleted(2)后再进行下一步操作。

  4. 调用 ARMediaPlayer 接口的 play 方法本地播放该媒体资源。

调节播放设置

调用 ARMediaPlayer 接口的其他方法,你可以实现如下播放设置:

  • 暂停/恢复播放,调节播放进度,调节本地播放音量等。
  • 获取媒体资源总时长,获取播放进度,获取当前播放状态,获取该媒体资源中媒体流的个数和每个媒体流的详细信息。

结束播放

  1. 调用 ARMediaPlayer 接口的 stop 方法停止播放。
  2. setView 方法中 view 赋值为 NULL,释放 view。
  3. 使用 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 {
}