本文为您介绍了播放器3.x.x版本SDK升级到播放器4.5.0版本SDK的相关说明、注意事项以及操作步骤。
统一播放器
播放器3.x.x版本的SDK,提供了基础播放器和高级播放器:
AlivcMediaPlayer
AliyunVodPlayer
分别用于URL播放与VID视频播放。在播放器4.5.0版本的SDK中,不再区分,统一为AliPlayer去播放URL视频和VID视频。
依赖Framework的不同
播放器3.x.x版本SDK的依赖framework:
AliyunPlayerSDK.framework
AliyunVodPlayerSDK.framework
AliThirdparty.framework
以及一个bundle:AliyunLanguageSource.bundle
播放器4.5.0版本SDK依赖的framework变为:
AliyunPlayer.framework
AliyunMediaDownloader.framework
AlivcConan.framework和alivcffmpeg.framework
类名与方法变化
播放器4.5.0版本SDK,修改了部分类名,增加了新的功能和事件回调。同时,也移除了播放器3.x.x版本SDK中部分接口。
升级实践
以播放器3.4.10版本SDK升级到播放器4.5.0版本SDK为例。
播放器3.x.x版本SDK升级到播放器4.x.x版SDK本基本一致,以高级播放器AliyunVodPlayer升级为例。
集成framework
从xcode的工程设置Embedded Binaries删除原来的几个播放器的framework,然后添加新的播放器的framework进去,具体方式请参见集成文档。
修改代码
在进行集成framework后,编译工程就会出错。需要使用播放器4.5.0版本SDK中的类和方法。这块变化比较大,类名和方法名都发生了改变。下面是几个需要重点修改的地方:
修改引用的头文件:更改framework的头文件引用,示例如下:
#import <AliyunVodPlayerSDK/AliyunVodPlayerSDK.h> 更改为 #import <AliyunPlayer/AliyunPlayer.h>
更改播放器类名:播放器3.4.10版本SDK创建的播放器是AliyunVodPlayer的对象,新播放器创建的对象为AliPlayer,示例如下:
self.player = [[AliyunVodPlayer alloc] init]; 更改为 self.player = [[AliPlayer alloc] init];
修改delegate回调:播放器3.4.10版本SDK,delegate是
AliyunVodPlayerDelegate
类。播放器4.5.0版本SDK,delegate是AVPDelegate
类,部分回调的基本意义不变,但是名字发生了改变。以onEventCallback
为例,示例如下:- (void)vodPlayer:(AliyunVodPlayer *)vodPlayer onEventCallback:(AliyunVodPlayerEvent)event ; 更改为 -(void)onPlayerEvent:(AliPlayer*)player eventType:(AVPEventType)eventType;
说明事件回调的事件类型基本一致,部分有些许区别,具体请参见接口说明。
监听事件变化情况
播放器3.x.x版本SDK的delegate的回调变化
事件名
功能
变化情况
onEventCallback
播放事件
onPlayerEvent
playBackErrorModel
播放错误
onError
willSwitchToQuality
清晰度将要改变
删除
didSwitchToQuality
清晰度切换成功
onTrackChanged
failSwitchToQuality
清晰度切换失败
删除
onCircleStartWithVodPlayer
循环播放
onPlayerEvent中的AVPEventLoopingStart
onTimeExpiredErrorWithVodPlayer
超时错误
删除
vodPlayerPlaybackAddressExpiredWithVideoId
地址将要过期
删除
播放器4.5.0版本SDK新增加的delegate。
事件名
功能
onPlayerEvent:eventWithString
一些播放信息事件
onVideoSizeChanged
视频分辨率发生改变
onCurrentPositionUpdate
播放进度
onBufferedPositionUpdate
缓存进度
onLoadingProgress
缓冲进度
onTrackReady
清晰度准备完成
onSubtitleShow
字幕显示
onSubtitleHide
字幕隐藏
onGetThumbnailSuc
获取缩略图成功
onGetThumbnailFailed
获取缩略图失败
onPlayerStatusChanged
播放状态改变
onCaptureScreen
截屏通知
修改播放源的设置
播放器3.4.10版本SDK通过
prepareWithVid
方法传值并直接prepare。播放器4.5.0版本SDK改为setSource
方法设置,并需要调用prepare来准备。示例如下:/** @brief 使用url方式来播放视频 @param source AVPUrlSource的输入类型 @see AVPUrlSource */ - (void)setUrlSource:(AVPUrlSource*)source; /** @brief 用vid和sts来播放视频 @param source AVPVidStsSource的输入类型 @see AVPVidStsSource */ - (void)setStsSource:(AVPVidStsSource*)source; /** @brief 用vid和MPS信息来播放视频 @param source AVPVidMpsSource的输入类型 @see AVPVidMpsSource */ - (void)setMpsSource:(AVPVidMpsSource*)source; /** @brief 使用vid+playauth方式播放 @param source AVPVidAuthSource的输入类型 @see AVPVidAuthSource */ - (void)setAuthSource:(AVPVidAuthSource*)source;
说明直播时的移植设置,4.5.0新增类AVPLiveTimeShift来播放,将以前的一些接口移植到了这个类中,使用方式同3.x.x版本一样。
播放音视频信息获取
播放器preparedone之后,需要获取vid的一些基本信息,播放器3.x.x版本SDK需要AliyunVodPlayerVideo来获取,播放器4.5.0版本SDK,示例如下:
if (event == AliyunVodPlayerEventPrepareDone) { AliyunVodPlayerVideo *videoModel = [self.vodPlayer getAliyunMediaInfo]; } 变为 case AVPEventPrepareDone: AVPTrackInfo *videoInfo = [self.player getCurrentTrack:AVPTRACK_TYPE_VIDEO];
说明TrackInfo包括音视频的码率,播放地址、vid返回的一些信息,请参见接口说明AVPTrackInfo的描述。
播放参数设置
播放器3.x.x版本SDK的一些播放参数设置,是直接通过接口进行设置,而播放器4.5.0版本SDK里面则是封装到了一个
config
里面,通过GetConfig可以获取到播放器当前的参数配置,通过SetConfig可以修改播放器的一些参数。设置
功能
变化情况
referer
referer配置
AVPConfig中referer
timeout
超时
AVPConfig中networkTimeout
dropBufferDuration
丢帧阈值
AVPConfig中maxDelayTime
说明播放器4.5.0版本SDK中新增了很多config,方便对播放器进行多方面的控制,请参见接口说明。
播放控制接口
播放器4.5.0版本SDK,控制接口基本上没有太多的变化,比如pause、start、stop等。
新增了两个接口:
reload:在网络出现问题的时候可以调用reload进行重新网络请求。
redraw:在窗口发生变化的时可以调用redraw来强制刷新视图。
在文档使用中是否遇到以下问题
更多建议
匿名提交