通过阅读本文,您可以快速创建并使用iOS播放器。

前提条件

您在创建和使用iOS播放器之前,需要集成最新版的iOS播放器SDK。具体操作,请参见集成文档

创建与使用流程

创建使用流程图
  1. 创建播放器。
    通过AliPlayer类创建播放器。
    AliPlayer *player = [[AliPlayer alloc] init];
  2. 设置代理。
    播放器提供了Delegate回调,例如onPlayerEventonError等回调事件。示例如下:
    @interface SimplePlayerViewController ()<AVPDelegate>
    @end
    - (void)viewDidLoad {
        self.player = [[AliPlayer alloc] init];
        self.player.playerView = self.avpPlayerView.playerView;
        self.player.delegate = self;
        //...
    }
    /**
     @brief 错误代理回调
     @param player 播放器player指针
     @param errorModel 播放器错误描述,参考AliVcPlayerErrorModel
     */
    - (void)onError:(AliPlayer*)player errorModel:(AVPErrorModel *)errorModel {
        //提示错误,及stop播放
    }
    /**
     @brief 播放器事件回调
     @param player 播放器player指针
     @param eventType 播放器事件类型,@see AVPEventType
     */
    -(void)onPlayerEvent:(AliPlayer*)player eventType:(AVPEventType)eventType {
        switch (eventType) {
            case AVPEventPrepareDone: {
                // 准备完成
            }
                break;
            case AVPEventAutoPlayStart:
                // 自动播放开始事件
                break;
            case AVPEventFirstRenderedStart:
                // 首帧显示
                break;
            case AVPEventCompletion:
                // 播放完成
                break;
            case AVPEventLoadingStart:
                // 缓冲开始
                break;
            case AVPEventLoadingEnd:
                // 缓冲完成
                break;
            case AVPEventSeekEnd:
                // 跳转完成
                break;
            case AVPEventLoopingStart:
                // 循环播放开始
                break;
            default:
                break;
        }
    }
    /**
     @brief 视频当前播放位置回调
     @param player 播放器player指针
     @param position 视频当前播放位置
     */
    - (void)onCurrentPositionUpdate:(AliPlayer*)player position:(int64_t)position {
        // 更新进度条
    }
    /**
     @brief 视频缓存位置回调
     @param player 播放器player指针
     @param position 视频当前缓存位置
     */
    - (void)onBufferedPositionUpdate:(AliPlayer*)player position:(int64_t)position {
        // 更新缓冲进度
    }
    /**
     @brief 获取track信息回调
     @param player 播放器player指针
     @param info track流信息数组 参考AVPTrackInfo
     */
    - (void)onTrackReady:(AliPlayer*)player info:(NSArray<AVPTrackInfo*>*)info {
        // 获取多码率信息
    }
    /**
     @brief 字幕显示回调
     @param player 播放器player指针
     @param index 字幕显示的索引号
     @param subtitle 字幕显示的字符串
     */
    - (void)onSubtitleShow:(AliPlayer*)player index:(int)index subtitle:(NSString *)subtitle {
        // 获取字幕进行显示
    }
    /**
     @brief 字幕隐藏回调
     @param player 播放器player指针
     @param index 字幕显示的索引号
     */
    - (void)onSubtitleHide:(AliPlayer*)player index:(int)index {
        // 隐藏字幕
    }
    /**
     @brief 获取截图回调
     @param player 播放器player指针
     @param image 图像
     */
    - (void)onCaptureScreen:(AliPlayer *)player image:(UIImage *)image {
        // 预览,保存截图
    }
    /**
     @brief track切换完成回调
     @param player 播放器player指针
     @param info 切换后的信息 参考AVPTrackInfo
     */
    - (void)onTrackChanged:(AliPlayer*)player info:(AVPTrackInfo*)info {
        // 切换码率结果通知
    }
  3. 创建DataSource,准备播放。
    播放器支持4种播放源:
    • AVPVidStsSource播放
    • AVPVidAuthSource播放
    • AVPVidMpsSource播放
    • AVPUrlSource播放
    说明 AVPUrlSource是直接通过URL进行播放,其余的三种是通过Vid进行播放,点播用户推荐使用AVPVidAuthSource。AVPVidMpsSource仅限MPS用户使用。
    以VidSts举例,示例如下:
     //创建VidSts
        AVPVidStsSource *source = [[AVPVidStsSource alloc] init];
        source.region = self.接入区域;
        source.vid = self.视频vid;
        source.securityToken = self.安全token;
        source.accessKeySecret = self.临时akSecret;
        source.accessKeyId = self.临时akId;
         //设置播放源
        [self.player setStsSource:source]
  4. 设置显示View。
    如果播放源有画面,需要设置View到播放器中,用来显示画面。示例如下:
    self.player.playerView = self.avpPlayerView.playerView;//用户显示的view
  5. 开始准备播放。
    [self.player prepare];
  6. 准备成功。
    调用prepare方法成功之后,会回调-(void)onPlayerEvent:(AliPlayer*)player eventType:(AVPEventType)eventType接口,eventType为AVPEventPrepareDone
    说明 如果准备失败则会回调- (void)onError:(AliPlayer*)player errorModel:(AVPErrorModel *)errorModel接口。
  7. 开始播放。
    通过调用start方法开始播放视频。
    [self.player start];
  8. 暂停播放。
    通过调用pause方法暂停播放视频。暂停之后可以调用start方法继续播放视频。
    [self.player pause];
  9. 停止播放。
    通过调用stop方法停止播放视频。
    [self.player stop];; //此方法在任何时机都可以调用。尤其在发生onError事件时
  10. 释放播放器。
    当不需要使用播放器实例时,需要调用destroy方法释放播放器内存。释放之后,播放器实例不可继续使用。如果需要使用播放器,需要重新创建播放器。
    [self.player destroy];
    self.player = nil;