端侧超分是基于终端的超分模型,在设备本地将视频由低清晰度转换成高清晰度,可以明显改善视频播放质量,同时降低传输成本。本文为您介绍如何在Android或iOS端配置端侧超分功能。
背景信息
随着视频业务的演进,用户对高清、超高清等观看体验的追求在不断提升。部分视频源由于制作、存储、分发限制无法提供高清晰度的版本,无法保证用户的观看体验。传统的云端超高清制作方案对带宽资源有依赖,无法满足弱网等环境的用户需求。
端侧超分功能可以平衡视频主观质量、观看体验和带宽成本,通过在本地将视频由低清晰度转换成高清晰度画质,明显提升视频观看体验的同时不增加带宽传输成本。
功能优势
类目 | 说明 |
性能及功耗 |
|
兼容性 |
|
功能形式 |
|
前提条件
您已获取播放器SDK License授权并购买端侧超分的增值服务。详情请参见管理License。
Android端集成使用
获取端侧超分功能库。
端侧超分的功能库,现需要您提交工单申请或联系阿里云商务申请开通。
集成端侧超分功能库。
加载端侧超分功能库。
端侧超分功能库为动态库,可以通过以下方法加载功能库。
System.loadLibrary(libname);
配置端侧超分功能库。
/** * 设置滤镜配置。在prepare之前调用此方法。如果想更新滤镜配置,则调用updateFilterConfig() * @param filterConfig */ /**** * Set filter config. call this before prepare. If want update filter config, call updateFilterConfig() * @param filterConfig */ abstract public void setFilterConfig(FilterConfig filterConfig); /** * 更新滤镜配置 * @param target * @param options */ /**** * upadate filter config. * @param target * @param options */ abstract public void updateFilterConfig(String target, FilterConfig.FilterOptions options); /** * 开启关闭滤镜 * @param target 如果为空,则对所有滤镜生效 * @param invalid true:开启;false:关闭 */ /**** * disable/enable filter. * @param target if empty , disable all filters. * @param invalid true: enable(default); false: disable */ abstract public void setFilterInvalid(String target, boolean invalid);
使用样例。
//filterConfig内部为json实现,具体的json格式如下 player.setFilterConfig(filterConfig); //设置端侧超分功能有效,target同下面的json中“target”对应的value player.setFilterInvalid(target,false);
[ { "target":"sr", "options":{ //该功能暂不需要具体option } } ]
iOS端集成使用
获取端侧超分功能库。
端侧超分的功能库,现需要您提交工单申请或联系阿里云商务申请开通。
集成端侧超分功能库。
端侧超分功能库为framework形式的动态库,需要在Xcode的frameworks and libraries中添加该功能库。可以通过以下方法添加功能库。
说明下述示例代码以5.5.4.0版本为例,实际版本请根据您的业务情况选择。iOS播放器SDK的发布版本请参见iOS播放器SDK。
pod 'AliPlayerSDK_iOS_NORMAL_SR_FILTER', '5.5.4.0'
使用样例。
// 初始化 AVPFilter* srFilter = [[AVPFilter alloc] initWithTarget:@"normal_sr"]; // 使用这个库,目前target名称必须为normal_sr,不能自定义其他的字符串 AVPFilterOptions* srOptions = [[AVPFilterOptions alloc] init]; [srOptions setOptions:@"path" value:@"xxx"]; // xxx为自定义沙盒相对路径 [srFilter setOptions:srOptions]; [filterConfig addFilter:srFilter]; [self.player setFilterConfig:filterConfig]; // 开始使用 [self.player setFilterInvalid:@"normal_sr" invalid:YES]; // invalid设置YES为开启,NO为关闭