全部产品
云市场

播放器3.x.x升级到4.5.0版本指南

更新时间:2019-08-19 16:01:50

4.5.0版本与3.x.x版本有了比较重大的变化和更新。

  • 统一了基础和高级播放器
  • 依赖的Framework不同
  • 类名与方法有变化

播放器的统一

3.x.x的SDK,提供了基础播放器和高级播放器:AlivcMediaPlayerAliyunVodPlayer,分别用于URL播放与VID视频播放。在4.5.0的SDK中,不再区分,统一为AliPlayer去播放URL视频和VID视频。

依赖Framework的不同

3.x.x SDK 的依赖framework有:AliyunPlayerSDK.frameworkAliyunVodPlayerSDK.frameworkAliThirdparty.framework,以及一个bundle:AliyunLanguageSource.bundle
4.5.0 SDK依赖的framework变为:AliyunPlayer.frameworkAliyunMediaDownloader.framework
AlivcConan.frameworkalivcffmpeg.framework

类名与方法变化

4.5.0的SDK,修改了部分类名,增加了新的功能和事件回调。同时,也移除了3.x.xSDK中部分接口。

升级实践

以3.4.10 升级到4.5.0版本为例(3.x.x升级到4.x.x版本基本一致,以高级播放器AliyunVodPlayer升级为例):

1. 集成framework

从xcode的工程设置Embedded Binaries删除原来的几个播放器的framework,然后添加新的播放器的framework进去,具体方式请参考播放器的集成文档

2. 修改代码

第一步进行完之后,编译工程就会出错。这个时候,需要使用4.5.0中的类和方法。这块变化比较大,类名和方法名都发生了改变。
下面是几个需要重点修改的地方:

1.修改引用的头文件

更改framework的头文件引用:

  1. #import <AliyunVodPlayerSDK/AliyunVodPlayerSDK.h>
  2. 更改为
  3. #import <AliyunPlayer/AliyunPlayer.h>

2.更改播放器类名

3.4.10的版本创建的播放器是AliyunVodPlayer的对象,新播放器创建的对象为AliPlayer

  1. self.player = [[AliyunVodPlayer alloc] init];
  2. 更改为
  3. self.player = [[AliPlayer alloc] init];

2.修改delegate回调

3.4.10的版本,delegate是AliyunVodPlayerDelegate类。
4.5.0版本,delegate是AVPDelegate类,一些回调的基本意义是一样,但是名字发生了改变。以onEventCallback为例:

  1. - (void)vodPlayer:(AliyunVodPlayer *)vodPlayer onEventCallback:(AliyunVodPlayerEvent)event ;
  2. 更改为
  3. -(void)onPlayerEvent:(AliPlayer*)player eventType:(AVPEventType)eventType;

事件回调的事件类型基本一致,也有一些小的区别,具体可以参考接口文档。

1.监听事件变化情况如下:

3.x.x的delegate的回调变化

事件名 功能 变化情况
onEventCallback 播放事件 onPlayerEvent
playBackErrorModel 播放错误 onError
willSwitchToQuality 清晰度将要改变 删除
didSwitchToQuality 清晰度切换成功 onTrackChanged
failSwitchToQuality 清晰度切换失败 删除
onCircleStartWithVodPlayer 循环播放 onPlayerEvent中的AVPEventLoopingStart
onTimeExpiredErrorWithVodPlayer 超时错误 删除
vodPlayerPlaybackAddressExpiredWithVideoId 地址将要过期 删除

4.5.0新增加的delegate

事件名 功能
onPlayerEvent:eventWithString 一些播放信息事件
onVideoSizeChanged 视频分辨率发生改变
onCurrentPositionUpdate 播放进度
onBufferedPositionUpdate 缓存进度
onLoadingProgress 缓冲进度
onTrackReady 清晰度准备完成
onSubtitleShow 字幕显示
onSubtitleHide 字幕隐藏
onGetThumbnailSuc 获取缩略图成功
onGetThumbnailFailed 获取缩略图失败
onPlayerStatusChanged 播放状态改变
onCaptureScreen 截屏通知

3.修改播放源的设置

3.4.10版本通过prepareWithVid方法传值并直接prepare。4.5.0改为setSource方法设置,并需要调用prepare来准备。

  1. /**
  2. @brief 使用url方式来播放视频
  3. @param source AVPUrlSource的输入类型
  4. @see AVPUrlSource
  5. */
  6. - (void)setUrlSource:(AVPUrlSource*)source;
  7. /**
  8. @brief 用vid和sts来播放视频
  9. @param source AVPVidStsSource的输入类型
  10. @see AVPVidStsSource
  11. */
  12. - (void)setStsSource:(AVPVidStsSource*)source;
  13. /**
  14. @brief 用vid和MPS信息来播放视频
  15. @param source AVPVidMpsSource的输入类型
  16. @see AVPVidMpsSource
  17. */
  18. - (void)setMpsSource:(AVPVidMpsSource*)source;
  19. /**
  20. @brief 使用vid+playauth方式播放
  21. @param source AVPVidAuthSource的输入类型
  22. @see AVPVidAuthSource
  23. */
  24. - (void)setAuthSource:(AVPVidAuthSource*)source;

直播时移的设置,4.5.0新增类AVPLiveTimeShift来播放,将以前的一些接口移植到了这个类中,使用方式和以前一样。

4.播放音视频信息获取

播放器preparedone之后,需要获取vid的一些基本信息,3.x.x播放器AliyunVodPlayerVideo来获取,而4.5.0播放器则是

  1. if (event == AliyunVodPlayerEventPrepareDone) {
  2. AliyunVodPlayerVideo *videoModel = [self.vodPlayer getAliyunMediaInfo];
  3. }
  4. 变为
  5. case AVPEventPrepareDone:
  6. AVPTrackInfo *videoInfo = [self.player getCurrentTrack:AVPTRACK_TYPE_VIDEO];

TrackInfo包括音视频的码率,播放地址、vid返回的一些信息,具体可以参考接口文档中AVPTrackInfo的描述

5.播放参数设置

3.x.x的播放的一些参数设置是通过直接的接口设置,而4.5.0里面则是封装到了一个config里面,通过GetConfig可以获取到播放器当前的参数配置,通过SetConfig可以修改播放器的一些参数。

设置 功能 变化情况
referer referer配置 AVPConfig中referer
timeout 超时 AVPConfig中networkTimeout
dropBufferDuration 丢帧阈值 AVPConfig中maxDelayTime

同时4.5.0播放器中新增了很多config,方便对播放器进行多方面的控制,具体可以参考接口文档。

6.播放控制接口

播放器控制接口4.5.0基本上没有太多的变化,比如pause、start、stop等,这边要注意的是新增了两个接口,一个是reload,这个是在网络出现问题的时候可以调用reload进行重新网络请求。另一个接口是redraw,这个在窗口发生变化的时候可以调用redraw来强制刷新视图。

3.x.x版本相关文档

基础播放器

高级播放器

基础播放器接口说明

高级播放器接口说明