如何通过TokenPocket官网下载参加社区活动? Android端播放器SDK进阶功能使用示例
本文介绍Android播放器SDK进阶功能的使用示例,更多功能的支持和使用请参见API说明。
可选:设置监听器。
设置预加载个数。
添加或移除多个播放源。
设置显示View。
设置TextureView,示例如下:
播放视频源。
添加了一个或多个播放源之后并设置自动播放,调用moveTo便可以自动播放某个视频源。示例如下:
播放上一个、下一个视频。
根据vid申请PlayAuth信息,申请成功后再进行MoveTo或MoveToNext等。
可选:使用预渲染实例提升视频切换的顺畅度。
Android播放器SDK从5.5.2.0版本开始提供getPreRenderPlayer和moveToNextWithPrerendered接口,用于提升滑动切换到下一个视频播放时的顺畅度,根据您的SDK集成场景不同,其使用方法有所差异,具体如下:
全新集成5.5.2.0及以后版本
使用PreRenderPlayer来实现。示例代码如下:
从低版本升级至5.5.2.0及以后版本
您需要修改低版本SDK的代码实现,具体如下:
修改渲染View。
低版本的Android播放器SDK全局使用一个渲染View,在每次切换播放源时,先从布局中remove前一个View,再添加下一个View到当前界面上。从5.5.2.0版本开始,支持使用多个渲染View,在RecyclerView.ViewHolder的布局中添加多个View,在切换播放源时,可以预加载下一个播放源,以提升切换的顺畅度。您需要删除低版本的渲染View的代码,并添加新版本添加多个渲染View的代码,示例代码如下:
修改RecyclerView中的item布局的示例代码如下:
修改切换播放源的逻辑。
从Android播放器SDK 5.5.2.0版本开始,在调用moveToNext时,会增加对preRenderPlayer的调用,因此需要单独对渲染View(Surface)进行设置。其中,moveToNext、moveToPre、moveTo的逻辑有所差异。示例代码如下:
修改AlivcQuickPlayer类的示例代码如下:
可选:修改滑动播放的逻辑。
支持通过修改滑动播放的逻辑,实现在滑动切换视频时,当滑动到下一个视频的一半画面出现时,开始播放下一个视频。通过修改PagerLayoutManager类中的代码实现,即当RecyclerView的item出现在屏幕一半时,切换播放源,示例代码如下:
播放带透明度视频功能简介阿里云播放器SDK支持渲染Alpha通道,实现播放透明礼物的动态效果。在直播间等场景中,播放透明礼物动效且不会遮挡直播间内容,明显提升用户观看和互动体验。
使用限制一体化SDK6.8.0及以后版本或播放器SDK6.9.0及以后版本支持透明渲染能力。
功能优势使用带有透明度信息的MP4视频作为礼物特效可以提供更好的动效质量,较小的文件体积,更高的兼容性和更高的开发效率。这使得礼物特效能够更好地展示给用户,提升用户体验。
更好的动效质量:MP4视频可以保留原始的动效质量,包括细节和颜色等,相比于其他格式,如 APN 或IXD,MP4可以更准确地还原设计师创作的动效效果。
较小的文件体积:MP4视频文件相比于其他格式,如APNG或IXD,可以更有效地压缩文件体积,提升加载速度并降低网络带宽消耗。
更高的兼容性:MP4视频是一种通用的视频格式,在各种设备和浏览器中都得到广泛支持, tp官网下载最新版本安装支持在主流设备上播放和观看礼物特效。
更高的开发效率:使用MP4视频作为礼物特效的技术方案相对简单,tp钱包官网下载不需要开发人员去研究和实现复杂的解析和渲染逻辑,开发人员可以专注于其他功能的实现,提高开发效率。
/ 设置Alpha渲染模式 @param alphaRenderMode 镜像模式。见{@link AlphaRenderMode}。 / / Set a alpha render mode @param alphaRenderMode The specified alpha render mode. See {@link AlphaRenderMode}. / abstract public void setAlphaRenderMode(AlphaRenderMode alphaRenderMode);
//--------------View用法------------- // 对于View需要设置透明 //TextureView TextureView aliplayerView; //用于播放的 view aliplayerView.setOpaque(false); //SurfaceView SurfaceView aliplayerView; //用于播放的 view aliplayerView.getHolder().setFormat(PixelFormat.TRANSLUCENT); aliplayerView.setZOrderOnTop(true); //把SurfaceView置于显示窗口的最顶层 //-----------AliPlayer用法----------- //设置alpha模式 aliplayer.setAlphaRenderMode(IPlayer.AlphaRenderMode.RENDER_MODE_ALPHA_AT_RIGHT); //设置alpha模式对应的素材 UrlSource urlSource = new UrlSource(); urlSource.setUri("https://alivc-player.oss-cn-shanghai.aliyuncs.com/video/业务需求样本/alpha通道/alpha_right.mp4"); aliplayer.setDataSource(urlSource); aliplayer.setOnCompletionListener(new IPlayer.OnCompletionListener() { @Override public void onCompletion() { //可选:单实例播放完成后如果有衔接问题,可以清屏 aliplayer.clearScreen(); } } aliplayer.setAutoPlay(true); aliplayer.prepare();外挂字幕
Android播放器SDK支持添加和切换外挂字幕,现已支持SRT、SSA、ASS、VTT这4种格式的字幕。
示例如下:
创建显示字幕的View。
根据不同的字幕格式创建不同的View。
设置字幕相关监听。
添加字幕。
显示或隐藏字幕。
在收到onSubtitleExtAdded回调后,可通过如下方法进行显示或隐藏字幕:
纯音频播放软硬解切换H265自适应播放当前机型包含在云端H265黑名单机型库或者播放H265流硬解失败时,触发自适应降级。具体的降级流程为:若已设置H264备流,自动播放H264备流;若未设置H264备流,则自动降级为H265软解播放。
设置备流示例如下:
// 应用层维护一个Map,存储所有原URL-备URL的键值对,切换时根据原URL在Map中查询备URL AliPlayerGlobalSettings.setAdaptiveDecoderGetBackupURLCallback(new AliPlayerGlobalSettings.OnGetBackupUrlCallback() { @Override public String getBackupUrlCallback(int oriBizScene, int oriCodecType, String original_url) { String kurl = original_url; if (!H265toH264Map.get(kurl).isEmpty()) { return H265toH264Map.get(kurl); } else { return ""; } } });网络自适应切换视频清晰度截图试看
Android播放器SDK通过配合点播服务配置,可以实现试看功能,支持VidSts和VidAuth(视频点播推荐使用此方式)两种播放方式。如何配置和使用试看功能,请参见试看视频。
设置黑名单设置Referer设置UserAgent配置网络重试时间和次数配置缓存和延迟控制Android播放器SDK通过PlayerConfig提供了设置缓存和延迟的控制接口。示例如下:
设置HTTP Header直播RTS降级切换左右声道Android播放器SDK通过player.setOutputAudioChannel方法设置输出声道,如果输入源是双声道,则支持通过下述方法切换为左声道或右声道;如果输入源是单声道,则设置无效。
/ OutputAudioChannel.OUTPUT_AUDIO_CHANNEL_LEFT 切换到左声道播放, OutputAudioChannel.OUTPUT_AUDIO_CHANNEL_RIGHT 切换到右声道播放, OutputAudioChannel.OUTPUT_AUDIO_CHANNEL_NONE 不切换声道,保持输入源声道播放 / player.setOutputAudioChannel();解析音频流
设置监听,可获取音视频流数据。音视频不能是加密流,加密流无法解析。
设置视频背景色Android播放器SDK支持设置播放器渲染的背景色。接口和用法说明如下:
接口示例
/ 设置视频的背景色 @param color ARGB / / Set video background color @param color ARGB / abstract public void setVideoBackgroundColor(int color);
用法说明
//参数为8位16进制数据,8位数据两两为一组,按照顺序分别表示A(alpha 透明度) R(red) G(green) B(blue) //例如0x0000ff00,表示绿色 player.setVideoBackgroundColor(0x0000ff00);vidAuth设置指定播放域名
通过vidAuth方式可以指定vid对应的域名等字段,支持的字段详情请参见GetPlayInfo请求参数。接口及用法说明如下:
接口示例
/ 设置播放参数 @param playConfig 播放参数 / public void setPlayConfig(VidPlayerConfigGen playConfig);
用法说明
通过其中的VidPlayerConfigGen接口的addPlayerConfig添加playDomain字段。
vidAuth = new VidAuth(); VidPlayerConfigGen configGen = new VidPlayerConfigGen(); //增加playDomain字段,可以添加的字段参考 //https://help.aliyun.com/zh/vod/developer-reference/api-vod-2017-03-21-getplayinfo?spm=a2c4g.11186623.0.0.2bec2e44eqeDgx#api-detail-35 configGen.addPlayerConfig("playDomain", "com.xxx.xxx"); vidAuth.setPlayConfig(configGen);性能预渲染
Android播放器SDK支持在起播之前快速渲染第一帧。
示例如下:
player.setOption(ALLOW_PRE_RENDER, 1);本地缓存
Android播放器SDK提供了本地缓存的功能,能够让用户重复播放视频时,提高起播速度、提高seek速度、减少卡顿,也能达到节省流量的目的。
开启本地缓存
开启或关闭单个URL的本地缓存
使用默认缓存路径
大缓存通过设置数据的最大缓冲区时长可以在播放视频时通过缓存视频数据到内存中,从而提高播放性能和观看体验。当最大缓冲区时长设置过大时,会造成缓冲区对内存的消耗。通过启用大缓存,可以将视频数据缓存到文件中,从而降低内存的占用,进一步提高播放器性能。
当mMaxBufferDuration设置超过50000 ms时,通过开启本地缓存触发大缓存功能自动启用。操作流程如下:
开启全局本地缓存。
开启URL的本地缓存。
开启大缓存。
AliPlayerGlobalSettings.enableBufferToLocalCache(true);
预加载Android播放器SDK提供预加载功能,是对本地缓存功能的升级,通过设置视频缓存的内存占用大小,更能提升视频的起播速度。
开启本地缓存功能,详细操作请参见本地缓存。
获取AliMediaLoader实例。
配置AliMediaLoader。
配置回调,并开始加载。
可选:删除加载文件。
动态预加载动态预加载策略,支持集成方既可以控制当前正在播放视频的缓存,又可以控制预加载的个数和缓存,满足业务方对播放体验与成本开销之间取得平衡的诉求。
多码率HLS视频预加载在listPlayer+多码率HLS视频播放场景下,支持集成方预加载与当前播放清晰度一致的流,并且可以根据业务情况选择预加载模式。
获取下载速度网络特性HTTPDNSHTTPDNS是通过DNS解析技术将域名解析请求发送到特定的HTTPDNS服务器,以获取更快、更稳定的域名解析结果,降低DNS劫持风险。
阿里云播放器SDK提供增强型HTTPDNS功能,专为阿里云CDN域名提供HTTPDNS服务,支持阿里云CDN网络精准调度、实时解析生效,有效提高网络性能。
增强型HTTPDNS使用示例增强型HTTPDNS仅为阿里云CDN域名提供HTTPDNS服务,请确保您配置的域名为阿里云CDN域名且已完成域名配置可正常使用。视频点播中添加和配置CDN域名请参见添加加速域名。更多有关CDN域名的信息请参见阿里云CDN。
//打开增强型httpdns AliPlayerGlobalSettings.enableEnhancedHttpDns(true); //可选,增加httpdns预解析域名 DomainProcessor.getInstance().addPreResolveDomain("player.alicdn.com");HTTP/2 HTTP预建连TCP
针对HTTP的视频播放请求(非HTTPS),通过提前建立TCP连接能够显著改善用户体验,降低网络连接耗时,确保播放的即时性与连续性,同时优化网络和系统资源的使用效率。使用方式如下:
// domain格式为host[:port],port可选,用分号(;)隔开多个域名 // 全局设置 // 全量接口每次设置后使用当前的字符串为准(多-新增,少-删除),字符串空为停止预建连 AliPlayerGlobalSettings.setOption(AliPlayerGlobalSettings.SET_PRE_CONNECT_DOMAIN, "domain1;domain2");视频下载
Android播放器SDK提供了点播服务视频的下载功能,允许用户通过阿里云播放器将视频缓存至本地观看。同时,提供了普通下载和安全下载两种下载方式。
普通下载
下载后的视频数据未经过阿里云加密,用户可以用第三方播放器播放。
安全下载
下载后的视频数据经过阿里云加密。第三方播放器无法播放。仅支持使用阿里云的播放器进行播放。
使用说明仅VidSts和VidAuth方式支持视频下载功能。
使用播放器的视频下载功能,需要在点播控制台开启并配置下载模式,详细操作请参见离线下载。
视频下载支持断点续传。
操作步骤可选:配置安全下载的加密校验文件。仅安全下载需要配置,普通下载无需配置。
如果设置为安全下载方式,则需要将在点播控制台生成的密钥文件配置到播放器SDK中,用于视频下载和播放的解密验证,密钥文件的生成请参见开启安全下载。
建议在Application中配置一次即可,示例如下:
PrivateService.initService(getApplicationContext(), "encryptedApp.dat所在的文件路径"); //建议将encryptedApp.dat加密校验文件存放到手机中后,此处设置加密校验文件的手机本地文件路径
创建并设置下载器。
设置监听事件。
下载器提供了多个事件监听。示例如下:
准备下载源。
准备成功后,选择下载项并开始下载。
(可选)更新下载源。
下载成功或失败后,释放下载器。
可选:删除下载的文件。
后续操作下载的视频可以使用阿里云播放器进行播放。具体方法如下:
下载完成后获取视频文件的绝对路径。
通过点播UrlSource方式设置绝对路径进行播放。
视频加密播放点播视频支持HLS标准加密、阿里云私有加密和DRM加密,直播视频仅支持DRM加密。加密播放请参见视频加密播放。
Native RTS播放Android播放器SDK集成Native RTS SDK实现Native端低延时直播功能,详情请参见阿里云播放器SDK集成Native RTS SDK实现说明(Android端)。
异常处理使用阿里云播放器播放视频发生异常时,可借助单点探查功能快速定位问题,详细内容,请参见单点追查。
相关文档API说明
错误码查询
Android播放器常见问题