阿里云播放器SDK(ApsaraVideo Player SDK,后续统称“播放器SDK”)是MediaBox音视频SDK的子产品之一,提供直播和点播场景中视频播放功能,支持Web、Android、iOS、Flutter、Windows、macOS等多种平台。通过阅读本文,您可以了解播放器SDK支持的功能。
标准功能
本文以Web、Android和iOS端为例,为您介绍了播放器SDK的标准功能。其中,✔️和❌分别表示支持和不支持该功能。
表 1. 播放协议与格式
功能 | 说明 | Web端 | Android端 | iOS端 |
点播播放 | 支持常见的FLV、HLS、MP4、MP3等点播场景的音视频格式。 | ✔️ | ✔️ | ✔️ |
直播播放 | 支持常见的RTMP、FLV、HLS等直播场景的音视频格式。 | ✔️,仅支持FLV、HLS协议 | ✔️ | ✔️ |
直播时移 | 支持直播时移视频流播放,可设置开始、结束和当前支持时间,支持拖动。 | ✔️ | ✔️ | ✔️ |
H.264编码协议 | 支持播放H.264编码协议的视频流,支持软硬解切换。 | ✔️ | ✔️ | ✔️ |
H.265编码协议 | 支持播放H.265编码协议的视频流,支持软硬解切换。 | ✔️ | ✔️ | |
H.266编码协议 | 支持播放H.266编码协议的视频流。 | ❌ | ✔️ | ✔️ |
超低延时直播RTS | 支持高并发、低卡顿、毫秒级延迟的阿里云超低延时直播RTS。 | ✔️ | ✔️ | ✔️ |
低延时直播 | 支持LL-HLS、DASH协议的低延时流播放。 | 仅支持LL-HLS协议 | ✔️ | ✔️ |
DASH协议 | 支持标准协议的DASH视频流播放,例如:SegmentBase 、SegmentTemplate。 | ❌ | ✔️ | ✔️ |
HDR视频播放 | 支持HDR10/HLG等多种HDR格式。 | ❌ | ✔️ | ✔️ |
URL播放 | 支持在线视频、本地视频以URL的方式播放。 | ✔️ | ✔️ | ✔️ |
VID播放 | 支持VID方式播放,同时对视频下发多个清晰度的播放地址(若有),例如:VidAuth播放、VidSts播放。 | ✔️ | ✔️ | ✔️ |
SEI消息 | 接受读取SEI消息。 | ✔️ | ✔️ | ✔️ |
表 2. 网络协议
功能 | 说明 | Web端 | Android端 | iOS端 |
自定义Header | 请求音视频资源时,自定义HTTP Headers内容。 | ✔️ | ✔️ | ✔️ |
HTTPDNS | 支持标准HTTPDNS,降低DNS劫持风险。 | ❌ | ✔️ | ✔️ |
HTTP/2 | 支持HTTP/2,通过二进制分帧、多路复用、首部压缩等最新的特性,能够大幅度提高Web性能,降低数据交互延迟。 | 取决于浏览器是否支持,详情请参见Can I use http2? | ✔️ | ✔️ |
HTTP/3 | 支持HTTP/3,支持基于QUIC协议进行加速,加速效果更快更优。 | 取决于浏览器是否支持,详情请参见Can I use http3? | ✔️ | ✔️ |
表 3. 播放控制
功能 | 说明 | Web端 | Android端 | iOS端 |
基础控制 | 支持开始、结束、暂停、seek、自动播放等播放控制功能。 | ✔️ | ✔️ | ✔️ |
seek | 支持拖动到指定位置(UI支持手势);支持已经缓冲的视频内容在拖动时不清除缓冲内容并快速拖动。 | ✔️ | ✔️ | ✔️ |
精确seek | 支持精确到帧级别拖动到指定位置。 | 支持毫秒级别的精确seek | ✔️ | ✔️ |
缓存内seek | 支持已经缓存的视频内容在seek时不清除缓存内容并快速seek。 | ❌ | ✔️ | ✔️ |
续播 | 支持设置续播起播时间点。 | ✔️ | ✔️ | ✔️ |
循环播放 | 支持音视频播放结束后自动重播。 | ✔️ | ✔️ | ✔️ |
列表播放 | 支持短视频列表播放功能,提升加载速度。 | ✔️ | ✔️ | ✔️ |
倍速播放 | 支持变速播放,支持音频变速不变调。 | ✔️,0.5~2倍速 | ✔️,0.5~5倍速 | ✔️,0.5~5倍速 |
清晰度(手动)切换 | 支持视频点播的多路清晰度流切换。 | ✔️ | ✔️ | ✔️ |
无缝切换 | 针对阿里云直播流地址,在播放过程中支持无缝切换多个分辨率的直播流,提升用户的播放体验。 | ❌ | ✔️ | ✔️ |
切换音轨 | 支持视频点播的多路音轨流切换。 | ✔️ | ✔️ | ✔️ |
截图 | 支持截取当前播放画面帧并保存为静态图片。 | 部分支持,受平台、播放模式的影响略有差异,详情请参见开启截图功能。 | ✔️ | ✔️ |
锁定屏幕 | 支持锁屏功能,包含锁定旋转和隐藏界面元素。 | ❌ | ✔️ | ✔️ |
表 4. 视频效果
功能 | 说明 | Web端 | Android端 | iOS端 |
填充 | 支持画面填充和画面裁剪两种填充模式。 | ✔️ | ✔️ | ✔️ |
旋转 | 支持0°、90°、180°和270°四个视频画面渲染角度设置。 | ✔️ | ✔️ | ✔️ |
镜像 | 支持无镜像、水平镜像和垂直镜像三种镜像模式设置。 | ✔️ | ✔️ | ✔️ |
亮度调节 | 支持系统的亮度调节(UI支持手势)。 | ❌ | ✔️ | ✔️ |
自定义播放器尺寸 | 支持自定义设置播放器的宽高。 | ✔️ | ✔️ | ✔️ |
画中画(小窗)播放 | 支持切换到画中画以小窗形式播放。 | ✔️ | ✔️ | ✔️,iOS14及其以下版本不支持在App外播放 |
表 5. 音频效果
功能 | 说明 | Web端 | Android端 | iOS端 |
音量调节 | 支持调用系统接口调节观看视频的音量。 | ✔️ | ✔️ | ✔️ |
静音 | 支持开启和关闭静音功能。 | ✔️ | ✔️ | ✔️ |
纯音频播放 | 支持只播放视频文件中的音频和常见的音频文件,例如:MP3、AAC。 | ✔️ | ✔️ | ✔️ |
后台播放 | 支持界面切到后台后继续播放音频。 | ✔️ | ✔️ | ✔️ |
表 6. 播放性能
功能 | 说明 | Web端 | Android端 | iOS端 |
播放失败重试 | 播放失败时自动重试。 | ✔️ | ✔️ | ✔️ |
自动重连 | 支持直播的自动重连功能。 | ✔️ | ✔️ | ✔️ |
本地缓存 | 支持视频播放的同时缓存下载后面的内容到本地,满足短视频场景下的循环播放,节约用户流量。 | ❌ | ✔️ | ✔️ |
预加载 | 对本地缓存功能的升级,提升视频的起播速度。 | ✔️ | ✔️ | ✔️ |
多实例 | 支持在一个界面添加多个播放器同时播放。 | ✔️ | ✔️ | ✔️ |
网络自适应播放多码率视频流 | 支持多码率HLS、DASH的无缝切换。 | 仅支持多码率HLS协议视频流切换 | ✔️ | ✔️ |
动态追帧 | 支持直播的动态追帧,降低延时。 | ✔️ | ✔️ | ✔️ |
表 7. 互动功能
功能 | 说明 | Web端 | Android端 | iOS端 |
字幕 | 支持导入自定义的字幕文件。 | ✔️,支持VTT字幕 | ✔️,支持SRT、SSA、ASS、VTT字幕 | ✔️,支持SRT、SSA、ASS、VTT字幕 |
表 8. 视频安全
功能 | 说明 | Web端 | Android端 | iOS端 |
referer黑白名单 | 支持通过播放请求中携带的referer字段识别请求来源,以黑名单或白名单方式对请求来源进行控制。 | ✔️ | ✔️ | ✔️ |
HLS标准加密 | 支持标准AES-128加密方案。 | ✔️ | ✔️ | ✔️ |
阿里云加密(私有加密) | 支持阿里云加密(私有加密)方案,防止视频泄露和盗链问题。 | ❌ | ✔️ | ✔️ |
安全下载 | 支持通过唯一应用下载视频并进行加密。 | ❌ | ✔️ | ✔️ |
DRM加密 | 支持Widevine、Fairplay的DRM加密方案。 | ✔️ | ✔️ | ✔️ |
表 9. 质量服务
功能 | 说明 | Web端 | Android端 | iOS端 |
日志上报 | 支持上报播放器SDK日志,统计音视频点播、直播相关播放埋点信息。 | ✔️ | ✔️ | ✔️ |
播放异常追溯 | 支持按照指定用户、播放会话对播放历史进行追溯,定位播放异常原因。 | ✔️,免费版支持查询最近3天数据 | ✔️,免费版支持查询最近3天数据 | ✔️,免费版支持查询最近3天数据 |
播放数据大盘 | 支持观测播放量、播放用户数等宏观数据。 | ✔️,免费版支持查询最近3天数据 | ✔️,免费版支持查询最近3天数据 | ✔️,免费版支持查询最近3天数据 |
表 10. 开发支持
功能 | 说明 | Web端 | Android端 | iOS端 |
渲染数据输出 | 支持边渲染边输出PCM和YUV数据。 | ❌ | ✔️ | ✔️ |
事件回调 | 支持对播放状态回调、首帧回调、播放完成或失败回调。 | ✔️ | ✔️ | ✔️ |
解码策略黑名单 | 支持设置硬解码黑名单。 | ✔️ | ✔️ | ✔️ |
网速显示 | 支持播放器实例的实时网速上报。 | 仅支持超低延时直播RTS | ✔️ | ✔️ |
UI组件 | 包含完整UI,您可以根据自身需求选用。 | ✔️ | ✔️ | ✔️ |
增值功能
本文以Web、Android和iOS端为例,为您介绍了播放器SDK的增值功能,您需要登录视频直播、视频点播控制台为您的应用申请试用或购买。其中,✔️和❌分别表示支持和不支持该功能。
功能 | 功能概述 | Web端 | Android端 | iOS端 |
Web播放H.265视频 | 支持在Web浏览器中播放H.265的视频流,相对H.264视频流有效降低带宽消耗,改善播放性能。 | ✔️ | ❌ | ❌ |
投屏 | 支持DLNA协议将视频流投屏至同网接收端,提供常见播放控制功能。 | ❌ | ✔️ | ✔️ |
高级ABR策略 | 相对于普通ABR策略更好地适应多码率HLS或DASH视频流,明显降低卡顿,提升平均播放码率。 | ❌ | ✔️ | ✔️ |
VR播放 | 播放全景视频,支持手势操作、响应陀螺仪、重力感应器。 | ❌ | ✔️ | ✔️ |
端侧超分 | 将低分辨率视频转换为高分辨率视频,以提高视频播放的清晰度,改善播放体验。 在确保视频主观体验的前提下,适应更低码率的视频源,降低视频传输费用。 | ❌ | ✔️ | ✔️ |
端侧锐化 | 突出图像的轮廓和锐化模糊的细节,从而提供更清晰、更锐利的观看效果。 | ❌ | ✔️ | ✔️ |
端侧插帧 | 消除低帧率视频的卡顿感,从而提供丝滑流畅的播放体验。 | ❌ | ✔️ | ✔️ |
音频增强 | 全景声空间音频技术,提供更加沉浸、真实的体验。 | ❌ | ✔️ | ✔️ |
增强型HTTPDNS | 支持阿里云CDN网络精准调度、实时解析生效,有效提高网络性能。 说明 播放器SDK从6.7.0版本开始支持增强型HTTPDNS。6.7.0~6.11.0版本播放器SDK,请先提交Android和iOS播放器SDK增值服务申请表单或联系阿里云商务经理申请开通;6.12.0及以后版本无需申请,默认开启。 | ❌ | ✔️ | ✔️ |