本文介绍了Android播放器SDK从低于4.5.0版本升级至4.5.0版本的步骤及SDK在4.5.0发生的重要变更。
背景信息
升级路径
本文以3.4.10版本为例介绍升级至4.5.0版本的操作步骤。Android播放器SDK4.5.0版本及后续的版本SDK仅类名和方法有变化,版本号有区别。4.5.0升级至5.1.4版本接口变化详情请参见升级Android播放器至5.1.0。低于4.5.0版本直接升级至5.1.4版本暂无参考文档,如有需要请提交工单,获取阿里云技术支持。
升级步骤-本地依赖
如果您采用了本地依赖方式集成Android播放器SDK,升级至4.5.0版本需要替换本地依赖包及gradle依赖包。替换完成后按指引修改代码完成升级。
替换本地依赖包及gradle依赖包。
替换本地依赖包。
将AlivcPlayer-3.4.10.aar、AlivcReporter-1.2.aar、AliyunVodPlayer-3.4.10.aar替换为AliyunPlayer-4.5.0-full.aar。替换完成:
增加阿里云的Maven地址。
在项目的build.gradle文件中,在
buildscript
和allprojects
两处增加阿里Maven地址,示例如下:maven { url "http://maven.aliyun.com/nexus/content/repositories/releases" }
替换gradle依赖包。
将OSS的依赖删除,增加conan的依赖。修改后如下:
集成短视频。
如果集成Android播放器SDK的同时也集成短视频SDK,那么播放器的SDK需要依赖两个包:AliyunPlayer-4.5.0-part和com.aliyun.video.android:AlivcFFmpeg:1.0.0(这个包是为了使用与短视频SDK共通的ffmpeg版本)。
说明如果集成时使用了错误的SDK包,会导致ffmpeg冲突。
- 修改代码。
依赖包替换完成之后,编译工程就会出错。这个时候,需要使用播放器4.5.0版本SDK中的类和方法。此处变化比较大,主要是包名的变化与API的变化。下面是几个需要重点修改的地方:
- 更改创建播放器方式播放器4.5.0版本SDK创建播放器对象类型改为
AliPlayer
,通过AliPlayerFactory
类进行创建。示例如下://定义一个播放器对象 AliPlayer mAliyunVodPlayer; ... //创建播放器对象 mAliyunVodPlayer = AliPlayerFactory.createAliPlayer(getContext().getApplicationContext());
- 修改监听事件播放器3.4.10版本SDK,监听事件都是位于
IAliyunVodPlayer
类下面。播放器4.5.0版本SDK,所有的监听事件都是在IPlayer
类下面。类名基本保持一致,有些有变化。所以替换监听事件需要替换类名。详细变化情况请参见监听事件变化。此处以OnPreparedListener
为例:修改类名后:
- 更改创建播放器方式
- 设置播放源。播放器3.4.10版本SDK通过
prepareAsync
方法直接传值。播放器4.5.0版本SDK改为AliPlayer.setDataSource
方法设置。设置完之后,调用AliPlayer.prepare
方法准备播放源。示例如下:
设置直播时移:通过/** * 设置UrlSource数据源 */ public void setDataSource(UrlSource urlSource); /** * 设置vidSts数据源 */ public void setDataSource(VidSts vidSts); /** * 设置vidAuth数据源 */ public void setDataSource(VidAuth vidAuth); /** * 设置mps数据源 */ public void setDataSource(VidMps vidMps);
AliLiveShiftPlayer.setDataSource
方法设置时移源。示例如下:/** * 设置数据源 */ public void setDataSource(LiveShift liveShift);
说明 如果由AlivcMediaPlayer升级到新版本播放,改用UrlSource播放即可。
升级步骤-gradle依赖
如果您采用了gradle依赖方式集成Android播放器SDK,升级至4.5.0版本需要删除本地依赖并替换gradle依赖包。
删除本地依赖并替换gradle依赖包。
删除本地依赖。
删除AlivcPlayer-3.4.10.aar、AlivcReporter-1.2.aar、AliyunVodPlayer-3.4.10.aar依赖包(删除框中的内容)。
增加阿里云的Maven地址。
在项目的build.gradle文件中,在
buildscript
和allprojects
两处增加阿里云的Maven地址:maven { url "http://maven.aliyun.com/nexus/content/repositories/releases" }
替换gradle依赖包。
修改App的build.gradle文件,
dependencies
节点中增加对aar的引用。示例如下:implementation 'com.aliyun.sdk.android:AliyunPlayer:4.5.0-full' implementation 'com.alivc.conan:AlivcConan:0.9.5'
集成短视频。
如果集成Android播放器SDK的同时也集成短视频SDK,那么播放器的SDK需要依赖两个包:AliyunPlayer-4.5.0-part和com.aliyun.video.android:AlivcFFmpeg:1.0.0(这个包是为了使用与短视频SDK共通的ffmpeg版本)。
说明如果集成时使用了错误的SDK包,会导致ffmpeg冲突。
- 修改代码。
依赖包替换完成之后,编译工程就会出错。这个时候,需要使用播放器4.5.0版本SDK中的类和方法。此处变化比较大,主要是包名的变化与API的变化。下面是几个需要重点修改的地方:
- 更改创建播放器方式播放器4.5.0版本SDK创建播放器对象类型改为
AliPlayer
,通过AliPlayerFactory
类进行创建。示例如下://定义一个播放器对象 AliPlayer mAliyunVodPlayer; ... //创建播放器对象 mAliyunVodPlayer = AliPlayerFactory.createAliPlayer(getContext().getApplicationContext());
- 修改监听事件播放器3.4.10版本SDK,监听事件都是位于
IAliyunVodPlayer
类下面。播放器4.5.0版本SDK,所有的监听事件都是在IPlayer
类下面。类名基本保持一致,有些有变化。所以替换监听事件需要替换类名。详细变化情况请参见监听事件变化。此处以OnPreparedListener
为例:修改类名后:
- 更改创建播放器方式
- 设置播放源。播放器3.4.10版本SDK通过
prepareAsync
方法直接传值。播放器4.5.0版本SDK改为AliPlayer.setDataSource
方法设置。设置完之后,调用AliPlayer.prepare
方法准备播放源。示例如下:
设置直播时移:通过/** * 设置UrlSource数据源 */ public void setDataSource(UrlSource urlSource); /** * 设置vidSts数据源 */ public void setDataSource(VidSts vidSts); /** * 设置vidAuth数据源 */ public void setDataSource(VidAuth vidAuth); /** * 设置mps数据源 */ public void setDataSource(VidMps vidMps);
AliLiveShiftPlayer.setDataSource
方法设置时移源。示例如下:/** * 设置数据源 */ public void setDataSource(LiveShift liveShift);
说明 如果由AlivcMediaPlayer升级到新版本播放,改用UrlSource播放即可。
播放器变化
变化 | 低于4.5.0 | 4.5.0 |
统一播放器 | 提供了两种播放器,分别用于URL播放与VID视频的播放。
| 在SDK4.5.0中,不再区分播放器,统一为AliPlayer端播放器对URL视频和VID视频进行播放。 |
依赖包变化
变化 | 低于4.5.0 | 4.5.0 |
依赖包 | 3个本地依赖和1个gradle依赖:
|
|
混淆配置变化
Android播放器SDK4.5.0版本混淆配置示例如下:
-keep class com.alivc.**{*;}
-keep class com.aliyun.**{*;}
-keep class com.cicada.**{*;}
-dontwarn com.alivc.**
-dontwarn com.aliyun.**
类名与方法变化
Android播放器SDK4.5.0版本,修改了部分类名,增加了新的功能和事件回调。同时,也移除了低于SDK4.5.0版本中的部分接口。
监听事件变化
大部分监听事件替换类名即可。对于有删减或者不同的,需要修改对应的接口实现。下面是两个版本监听事件的对比:
事件名 | 功能 | 变化情况 | 示例代码 |
OnPreparedListener | 准备成功事件 | 无变化 | 不涉及 |
OnSeekCompleteListener | 拖动结束事件 | 无变化 | 不涉及 |
OnCompletionListener | 播放完成事件 | 无变化 | 不涉及 |
OnFirstFrameStartListener | 首帧显示事件 | OnRenderingStartListener |
|
OnStoppedListener | 播放停止事件 | OnStateChangedListener |
|
OnPcmDataListener | PCM音频数据回调事件 | 事件被删除 | 不涉及 |
OnCircleStartListener | 循环播放开始事件 | OnInfoListener |
说明 回调中的InfoBean.getCode() = InfoCode.LoopingStart被回调时,表示循环播放事件。 |
OnLoadingListener | 视频加载事件 | OnLoadingStatusListener |
说明 onLoadingProgress中的netSpeed目前值为0。 |
OnBufferingUpdateListener | 视频缓冲进度事件 | OnInfoListener |
说明 回调中的InfoBean.getCode() = InfoCode.BufferedPosition被回调时,表示缓冲进度事件。通过 |
OnErrorListener | 播放错误事件 | OnErrorListener |
说明 ErrorInfo为错误信息,可以通过 |
OnInfoListener | 播放信息事件 | OnInfoListener |
InfoBean为信息类,可以通过
|
OnVideoSizeChangedListener | 视频画面变化回调 | 无变化 | 不涉及 |
OnChangeQualityListener | 切换清晰度变化 | OnTrackChangedListener |
说明 切换清晰度调用 |
LockPortraitListener | 固定竖屏 | 事件被删除 | 不涉及 |
OnRePlayListener | 重播开始事件 | 事件被删除 | 不涉及 |
OnAutoPlayListener | 自动播放开始事件 | OnInfoListener |
说明 ErrorInfo为错误信息,可以通过 |
OnTimeShiftUpdaterListener | 直播时移变化事件 | 移动到AliLiveshiftPlayer中 | 不涉及 |
OnSeekLiveCompletionListener | 直播时移拖动结束事件 | 移动到AliLiveshiftPlayer中 | 不涉及 |
OnTimeExpiredErrorListener | 请求信息过期事件 | OnErrorListener |
|
OnUrlTimeExpiredListener | URL即将过期事件 | 事件被删除 | 不涉及 |
OnTrackReadyListener | 流获取成功事件 | 新增 | 不涉及 |
OnSubtitleDisplayListener | 字幕显示时间 | 新增 | 不涉及 |
OnSnapShotListener | 截图结果事件 | 新增 | 不涉及 |
主要API变化
以Android播放器SDK3.4.10版本升级到播放器SDK4.5.0版本为例。
低于SDK4.5.0版本升级到SDK4.5.0版本的API变化基本一致。
原方法 | 新方法 | 说明 |
surfaceChanged | redraw | 在surface变化的时候调用 |
getPlayerState | OnStateChangedListener | 改为回调获取播放器状态 |
其他API变化请参见Android播放器SDK 4.5.0。
低于4.5.0版本相关文档
如您需要查看低于4.5.0版本接口的相关内容,请参见Android播放器SDK。找到您所需版本的更新记录,单击历史版本中的示例代码下载链接即可获取对应信息。