播放器SDK功能详情 =============================== 阿里云播放器SDK(ApsaraVideo Player SDK,后续统称"播放器SDK")是MediaBox音视频SDK的子产品之一,提供直播和点播场景中视频播放功能,支持Web、Android、iOS、Flutter、HarmonyOS、Windows、macOS等多种平台。通过阅读本文,您可以了解播放器SDK支持的功能。 **重要** 1. 播放器SDK移动端已于2025年2月14日(7.0.0版本开始)开启正式收费,您可以选择[免费试用](https://free.aliyun.com/?spm=5176.28414104.nav-v2-dropdown-menu-3.d_main_2.1412175eJjiTUj&scm=20140722.M_10513603._.V_1&product=1405&crowd=enterprise)或通过[音视频终端SDK购买页](https://common-buy.aliyun.com/?commodityCode=ice_sdk_public_cn "")购买正式版,同时还有更优惠的组合购买套餐供您选择,详情请参见[播放器SDK计费](t1989015.md#a67e3ec974jsh)。购买后授权操作指引[接入播放器License](t2355407.md#150c40a00eehv)。 2. 购买视频点播、视频直播、智能媒体服务的资源达到一定金额时,可获赠播放器SDK标准版或专业版一年License授权。更多信息,请参见[播放器SDK计费](t1989015.md#a67e3ec974jsh)。 3. 新购买的播放器SDK Web端标准版License仅支持2.29.1及以上版本,新购买的播放器SDK移动端专业版License仅支持7.0.0及以上版本,在购买前请确认您应用内接入的播放器SDK版本号。 **重要** 1. 播放器SDK移动端已于2025年2月14日(7.0.0版本开始)在标准版基础上增加了专业版区分,获取专业版请联系商务。获取后授权操作指引[接入播放器License](t2355407.md#150c40a00eehv)。 2. 购买视频点播、视频直播、智能媒体服务的资源达到一定金额时,可获赠播放器SDK专业版一年License授权。更多信息,请参见[播放器SDK计费](t1989015.md#a67e3ec974jsh)。 3. 新获取的播放器SDK移动端专业版License仅支持7.0.0及以上版本,在获取前请确认您应用内接入的播放器SDK版本号。 **标准功能** ------------------------- 本文以Web、Android、iOS、Flutter和HarmonyOS端为例,为您介绍了播放器SDK的标准功能。其中,✔️和❌分别表示支持和不支持该功能, **---** 表示该端无需拥有或并不具备该项功能。 ### **播放协议与格式** |------------|-------------------------------------------------------------------|----------------------------------------------------------------------------------|----------------------------------------------------------------------------------|-----------------|-----------------|-----------------------------------------------------------------------| | **功能** | **说明** | **Android端** | **iOS端** | **Flutter端** | **HarmonyOS端** | **Web端** | | 点播播放 | 支持常见的FLV、HLS、MP4、MP3等点播场景的音视频格式。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️,部分移动端不支持FLV格式。 | | 直播播放 | 支持常见的RTMP、FLV、HLS等直播场景的音视频格式。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️,不支持RTMP协议,部分移动端不支持FLV格式。 | | 直播时移 | 支持直播时移视频流播放,可设置开始、结束和当前支持时间,支持拖动。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | H.264编码协议 | 支持播放H.264编码协议的视频流,支持软硬解切换。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️,Web端软硬解取决于浏览器设置 | | H.265编码协议 | 支持播放H.265编码协议的视频流,支持软硬解切换。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️,Web端软硬解取决于浏览器设置,需申请后方可使用,详见[增值功能](#80e124c04aqf0)。 | | H.266编码协议 | 支持播放H.266编码协议的视频流。 | ✔️, **(仅专业版支持,需集成** [H.266解码插件](t1959843.md#5e0e6e990f929) **)** | ✔️, **(仅专业版支持,需集成** [H.266解码插件](t1959837.md#22ac7377ebae9) **)** | ❌ | ❌ | ✔️,Web端软硬解取决于浏览器设置,需申请后方可使用,详见[增值功能](#80e124c04aqf0)。 | | H.265自适应播放 | 当播放H265流硬解失败且已设置H264备流时,实现自动降级播放H264备流;若未设置H264备流,则自动降级为H265软解播放。 | ✔️ **(仅专业版支持)** | ✔️ **(仅专业版支持)** | ✔️ **(仅专业版支持)** | ❌ | ❌ | | 超低延时直播RTS | 支持高并发、低卡顿、毫秒级延迟的阿里云超低延时直播RTS。 | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | | 低延时直播 | 支持LL-HLS、DASH协议的低延时流播放。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | DASH协议 | 支持标准协议的DASH视频流播放,例如:SegmentBase 、SegmentTemplate。 | ✔️ **(仅专业版支持)** | ✔️ **(仅专业版支持)** | ✔️ **(仅专业版支持)** | ✔️ **(仅专业版支持)** | ✔️ | | Quic加速 | 支持 Quic 传输协议,有效提升视频传输效率 | ✔️ | ✔️ | ✔️ | ✔️ | **---** | | HDR视频播放 | 支持HDR10/HLG等多种HDR格式。 | ✔️ | ✔️ | ✔️ | ❌ | ✔️,取决于浏览器是否支持 | | URL播放 | 支持在线视频、本地视频以URL的方式播放。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | VID播放 | 支持VID方式播放,同时对视频下发多个清晰度的播放地址(若有),例如:VidAuth播放、VidSts播放。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | SEI消息 | 接受读取SEI消息。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ### **网络协议** |------------|--------------------------------------------------------------------------------|--------------|----------|--------------|----------------|---------------------------------------------------------------------------------------| | **功能** | **说明** | **Android端** | **iOS端** | **Flutter端** | **HarmonyOS端** | **Web端** | | 自定义Header | 请求音视频资源时,自定义HTTP Headers内容。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️,MP4 不支持,HLS、DASH 部分支持 | | 云域名HTTPDNS | 通过HTTP协议向DNS服务器发送域名解析请求,代替传统的Local DNS解析方式,以避免域名劫持、跨网访问问题及由此导致的播放失败。(只支持阿里云域名) | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | | HTTP/2 | 支持HTTP/2,通过二进制分帧、多路复用、首部压缩等最新的特性,能够大幅度提高Web性能,降低数据交互延迟。 | ✔️ | ✔️ | ✔️ | ✔️ | 取决于浏览器是否支持,详情请参见[Can I use http2?](https://caniuse.com/?search=http2) | | HTTP/3 | 支持HTTP/3,支持基于QUIC协议进行加速,加速效果更快更优。 | ✔️ | ✔️ | ✔️ | ✔️ | 取决于浏览器是否支持,详情请参见[Can I use http3?](https://caniuse.com/?search=http3) | ### **播放控制** |-----------|-----------------------------------------------------------|-----------------|-----------------|-----------------|-----------------|--------------------| | **功能** | **说明** | **Android端** | **iOS端** | **Flutter端** | **HarmonyOS端** | **Web端** | | 基础控制 | 支持开始、结束、暂停、seek、自动播放等播放控制功能。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | seek | 支持拖动到指定位置(UI支持手势);支持已经缓冲的视频内容在拖动时不清除缓冲内容并快速拖动。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | 精确seek | 支持精确到帧级别拖动到指定位置。 | ✔️ | ✔️ | ✔️ | ✔️ | 支持毫秒级别的精确seek | | 缓存内seek | 支持已经缓存的视频内容在seek时不清除缓存内容并快速seek。 | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | | 续播 | 支持设置续播起播时间点。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | 循环播放 | 支持音视频播放结束后自动重播。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | 列表播放 | 支持短视频列表播放功能,提升加载速度。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | 倍速播放 | 支持变速播放,支持音频变速不变调。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | 清晰度(手动)切换 | 支持视频点播的多路清晰度流切换。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | 无缝切换 | 针对阿里云直播流地址,在播放过程中支持无缝切换多个分辨率的直播流(switchStream),提升用户的播放体验。 | ✔️ | ✔️ | ✔️ | ❌ | ❌,支持HLS和Dash的无缝切换。 | | 切换音轨 | 支持视频点播的多路音轨流切换。 | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | | 截图 | 支持截取当前播放画面帧并保存为静态图片。 | ✔️ | ✔️ | ✔️ | ✔️ | **---** | | 锁定屏幕 | 支持锁屏功能,包含锁定旋转和隐藏界面元素。 | ✔️ | ✔️ | ✔️ | ✔️ | **---** | | 外挂字幕 | 支持导入自定义的字幕文件。Web端支持VTT字幕,移动端支持SRT、SSA、ASS、VTT字幕。 | ✔️ **(仅专业版支持)** | ✔️ **(仅专业版支持)** | ✔️ **(仅专业版支持)** | ✔️ **(仅专业版支持)** | ✔️,支持VTT字幕 | ### **视频效果** |------------|---------------------------------|--------------|----------|--------------|----------------|----------| | **功能** | **说明** | **Android端** | **iOS端** | **Flutter端** | **HarmonyOS端** | **Web端** | | 填充 | 支持画面填充和画面裁剪两种填充模式。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | 旋转 | 支持0°、90°、180°和270°四个视频画面渲染角度设置。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | 镜像 | 支持无镜像、水平镜像和垂直镜像三种镜像模式设置。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | 缩略图预览(雪碧图) | 支持进度条缩略图预览。 | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | | 亮度调节 | 支持系统的亮度调节(UI支持手势)。 | ✔️ | ✔️ | ✔️ | ✔️ | **---** | | 自定义播放器尺寸 | 支持自定义设置播放器的宽高。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | 画中画(小窗)播放 | 支持切换到画中画以小窗形式播放。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ### **音频效果** |--------|-----------------------------------|--------------|----------|--------------|----------------|----------| | **功能** | **说明** | **Android端** | **iOS端** | **Flutter端** | **HarmonyOS端** | **Web端** | | 音量调节 | 支持调用系统接口调节观看视频的音量。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | 静音 | 支持开启和关闭静音功能。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | 纯音频播放 | 支持只播放视频文件中的音频和常见的音频文件,例如:MP3、AAC。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | 双声道音频 | 支持播放双声道音频 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | 多音轨 | 支持播放含多音轨的视频文件,播放时可切换音轨,如英文切换中文 | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | | 后台播放 | 支持界面切到后台后继续播放音频。 | ✔️ | ✔️ | ✔️ | ✔️ | **---** | ### **播放性能** |---------------|------------------------------------------------------|-----------------|-----------------|-----------------|-----------------|----------| | **功能** | **说明** | **Android端** | **iOS端** | **Flutter端** | **HarmonyOS端** | **Web端** | | 播放失败重试 | 播放失败时自动重试。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | 自动重连 | 支持直播的自动重连功能。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | 本地缓存 | 支持视频播放的同时缓存下载后面的内容到本地,满足短视频场景下的循环播放,节约用户流量。 | ✔️ | ✔️ | ✔️ | ✔️ | **---** | | 预加载 | 通过滑动窗口策略动态控制视频预加载,显著提升秒开率和播放流畅度,即使快速滑动也能保持顺畅体验。 | ✔️ **(仅专业版支持)** | ✔️ **(仅专业版支持)** | ✔️ **(仅专业版支持)** | ✔️ **(仅专业版支持)** | ❌ | | 预渲染 | 在后台提前渲染后续视频的首帧,减少黑屏的出现,让播放更加丝滑。 | ✔️ **(仅专业版支持)** | ✔️ **(仅专业版支持)** | ✔️ **(仅专业版支持)** | ❌ | ❌ | | 场景化多实例Demo | 提供针对短剧等热门场景的场景化Demo,包含完整源码,具有集成易用性高、交互体验好、技术指标领先等优势。 | ✔️ **(仅专业版支持)** | ✔️ **(仅专业版支持)** | ✔️ **(仅专业版支持)** | ❌ | ❌ | | 多实例 | 支持在一个界面添加多个播放器同时播放。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | 网络自适应播放多码率视频流 | 支持多码率HLS、DASH的无缝切换。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | 动态追帧 | 支持直播的动态追帧,降低延时。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | 高级ABR策略 | 相对于普通ABR策略更好地适应多码率HLS或DASH视频流,明显降低卡顿,提升平均播放码率。 | ✔️ **(仅专业版支持)** | ✔️ **(仅专业版支持)** | ✔️ **(仅专业版支持)** | ✔️ **(仅专业版支持)** | ❌ | ### **互动功能** |--------|---------------|------------------------|------------------------|------------------------|----------------|------------| | **功能** | **说明** | **Android端** | **iOS端** | **Flutter端** | **HarmonyOS端** | **Web端** | | 字幕 | 支持导入自定义的字幕文件。 | ✔️,支持SRT、SSA、ASS、VTT字幕 | ✔️,支持SRT、SSA、ASS、VTT字幕 | ✔️,支持SRT、SSA、ASS、VTT字幕 | ❌,仅支持字幕文本解析 | ✔️,支持VTT字幕 | ### **视频安全** |----------------------|---------------------------------------------------------------|--------------|----------|--------------|----------------|---------------------------------------------------------------------------| | **功能** | **说明** | **Android端** | **iOS端** | **Flutter端** | **HarmonyOS端** | **Web端** | | referer黑白名单 | 支持通过播放请求中携带的referer字段识别请求来源,以黑名单或白名单方式对请求来源进行控制。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | HLS标准加密 | 支持标准AES-128加密方案。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | 阿里云加密(私有加密) | 支持阿里云加密(私有加密)方案,即HLS格式(URL后缀为.m3u8)和MP4格式视频的私有加密,防止视频泄露和盗链问题。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️,部分浏览器支持,详情请参见[功能适配说明](t1959849.md#section-903-srj-rxg) | | 阿里云视频加密(License私有加密) | 可通过加密视频URL直接播放,相较于阿里云视频加密(私有加密),可实现更快起播,适合跨地域的播放业务。 | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | | 安全下载 | 支持通过唯一应用下载视频并进行加密。 | ✔️ | ✔️ | ✔️ | ✔️ | **---** | | 商业DRM | 支持Widevine、Fairplay的DRM加密方案。 | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | ### **质量服务** |--------|----------------------------------|------------------|------------------|------------------|------------------|------------------| | **功能** | **说明** | **Android端** | **iOS端** | **Flutter端** | **HarmonyOS端** | **Web端** | | 日志上报 | 支持上报播放器SDK日志,统计音视频点播、直播相关播放埋点信息。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | 播放异常追溯 | 支持按照指定用户、播放会话对播放历史进行追溯,定位播放异常原因。 | ✔️,免费版支持查询最近3天数据 | ✔️,免费版支持查询最近3天数据 | ✔️,免费版支持查询最近3天数据 | ✔️,免费版支持查询最近3天数据 | ✔️,免费版支持查询最近3天数据 | | 播放数据大盘 | 支持观测播放量、播放用户数等宏观数据。 | ✔️,免费版支持查询最近3天数据 | ✔️,免费版支持查询最近3天数据 | ✔️,免费版支持查询最近3天数据 | ✔️,免费版支持查询最近3天数据 | ✔️,免费版支持查询最近3天数据 | ### **开发支持** |---------|---------------------------|--------------|----------|--------------|----------------|--------------| | **功能** | **说明** | **Android端** | **iOS端** | **Flutter端** | **HarmonyOS端** | **Web端** | | 渲染数据输出 | 支持边渲染边输出PCM和YUV数据。 | ✔️ | ✔️ | ✔️ | ❌ | ❌ | | 事件回调 | 支持对播放状态回调、首帧回调、播放完成或失败回调。 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | 解码策略黑名单 | 提供不支持硬件解码的机型列表,以及优化支持。 | ✔️ | ✔️ | ✔️ | ❌ | **---** | | 网速显示 | 支持播放器实例的实时网速上报。 | ✔️ | ✔️ | ✔️ | ✔️ | 仅支持超低延时直播RTS | | UI组件 | 包含完整UI,您可以根据自身需求选用。 | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | **增值功能** ------------------------- 本文以Web、Android、iOS、Flutter和HarmonyOS端为例,为您介绍了播放器SDK的增值功能。如需使用,请先[提交工单](https://smartservice.console.aliyun.com/service/create-ticket?product=vod)为您的应用申请试用或购买增值服务。如需使用,请先[提交工单](https://workorder-intl.console.aliyun.com/?spm=5176.12672711.top-nav.ditem-sub.3cd51fa3WvRsjz#/ticket/add/?productId=1270),申请开通增值服务。其中,✔️和❌分别表示支持和不支持该功能。 |--------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------|----------|--------------|----------------|----------| | **功能** | **功能概述** | **Android端** | **iOS端** | **Flutter端** | **HarmonyOS端** | **Web端** | | Web播放H.265/H.266视频 | 支持播放H.265编码协议的视频流,支持软硬解切换,详情请参见[进阶功能](t2193650.md#section-j4v-zwt-641)。 **说明** Web播放器SDK如需播放H.265视频,请先[提交工单](https://smartservice.console.aliyun.com/service/create-ticket?product=vod)[提交工单](https://workorder-intl.console.aliyun.com/?spm=5176.12672711.top-nav.ditem-sub.3cd51fa3WvRsjz#/ticket/add/?productId=1270)或联系阿里云商务经理申请开通。 | ❌ | ❌ | ❌ | ❌ | ✔️ | | 端侧超分 | 将低分辨率视频转换为高分辨率视频,以提高视频播放的清晰度,改善播放体验。 在确保视频主观体验的前提下,适应更低码率的视频源,降低视频传输费用。 | ✔️ | ✔️ | ❌ | ❌ | ❌ | | 端侧锐化 | 突出图像的轮廓和锐化模糊的细节,从而提供更清晰、更锐利的观看效果。 | ✔️ | ✔️ | ✔️ | ❌ | ❌ | | 端侧插帧 | 消除低帧率视频的卡顿感,从而提供丝滑流畅的播放体验。 | ✔️ | ✔️ | ✔️ | ❌ | ❌ | | 音频增强 | 全景声空间音频技术,提供更加沉浸、真实的体验。 | ✔️ | ✔️ | ✔️ | ❌ | ❌ | 播放器SDK简介 ============================= 阿里云播放器SDK(ApsaraVideo Player SDK,以下简称播放器SDK)是阿里云自研的全端音视频播放工具,为音视频播放提供稳定、流畅、丰富的服务。配合视频点播服务,播放器SDK能够为客户提供云端协同的优异播放体验,以及多场景的解决方案,满足客户的业务需求。播放器SDK具有集成便捷、全端覆盖、播放性能优秀等特点,助力您的业务快速腾飞。 客户价值 ------------------------- 通过集成播放器SDK,您能够更好地连接视频点播服务,打造完善的音视频点播业务闭环。 * 优异性能:播放器SDK稳定支撑海量播放,结合最佳实践综合使用网络优化、预加载、本地缓存等技术实现首屏秒开、极低卡顿率,为用户提供流畅的播放体验。 * 全端覆盖:播放器SDK支持Web、Android、iOS、Flutter、HarmonyOS NEXT平台,有效支撑多屏播放的业务场景,满足客户多样需求。播放器SDK在不同平台下提供统一的接口设计,显性降低开发者跨平台集成的工作量。 * 消费数据:播放器SDK提供详实的播放数据埋点,可视化的数据看板,帮您把握音视频消费的宏观数据、洞察用户需求。详情请参见[播放数据统计](t1959287.md#title-ghd-rip-8ph)。 核心优势 ------------------------- * 稳定流畅的播放体验 播放器SDK质量稳定可靠,轻松支撑过亿每日播放vv(video view)、秒开率大于95%、百秒卡顿时长小于100 ms。综合播放策略、设备适配软硬解方案确保播放流畅性。 * 全平台覆盖一次性集成 播放器SDK支持Web、Android、iOS、Flutter、HarmonyOS NEXT平台,有效支撑多屏播放的业务场景,满足客户多样需求。播放器SDK在不同平台下提供统一的接口设计,显性降低开发者跨平台集成的工作量。 * 丰富多样的播放玩法 播放器SDK提供DASH伪直播、防遮弹幕、ASS字幕、端侧画质增强等多种功能,为客户提供多场景的解决方案,满足客户的业务需求。 * 复合视频安全方案支持 视频点播提供标准加密、阿里云视频加密(私有加密)和DRM加密方案,播放器SDK支持上述方案的加密解码,有效解决恶意下载扩散等侵权问题。 * 完善的数据服务体系 通过播放器SDK埋点,我们提供全盘宏观统计、实时质量监控。针对播放异常,我们提供用户级和播放会话(video view)级的全链路追溯能力,快速定位异常原因,避免负体验影响扩散。 * 直播点播一体服务 播放器SDK同时支持常见的视频直播、视频点播功能,一次集成多场景使用。 使用场景 ------------------------- * 短视频 播放器SDK搭配网络优化、预加载、本地缓存等复合最佳实践实现首屏秒开,为您提供流畅的播放体验。 * 长视频 播放器SDK提供多码率自适应、变速不变调、端侧画质增强等功能,结合云端服务为长视频观影提供进度条缩略图、防遮弹幕、ASS字幕等多样玩法,配合多重安全策略确保视频安全。 * 在线教育 播放器SDK全端覆盖充分满足您的业务需求,现已支持移动端(Android、iOS、HarmonyOS NEXT)和跨端方案(Web、Flutter);支持多种加密方案实现有效的版权保护,包含标准加密、阿里云视频加密(私有加密)和DRM加密,您可以按需选择。 * 直播与直播转点播 播放器SDK同时支持视频直播、音视频点播常见协议,无缝对接直播服务,支持直播时移、伪直播、直播录制视频回看,帮助您实现音视频业务闭环。 License说明 ------------------------------ 1. 播放器SDK移动端已于2025年2月14日(7.0.0版本开始)开启正式收费,您可以选择[免费试用](t2846867.md#acf0f633059s3)或[获取播放器SDK License](t2846867.md#a492d8b9cb51x),同时还有更优惠的组合购买套餐供您选择。购买后授权操作指引[接入播放器License](t2355407.md#150c40a00eehv)。 2. 购买视频点播、视频直播、智能媒体服务的资源达到一定金额时,可获赠播放器SDK标准版或专业版一年License授权。更多信息,请参见[播放器SDK计费](t1989015.md#a67e3ec974jsh)。 3. 新购买的播放器SDK Web端标准版License仅支持2.29.1及以上版本,新购买的播放器SDK移动端专业版License仅支持7.0.0及以上版本,在购买前请确认您应用内接入的播放器SDK版本号。 License说明 -------------------------- 1. 播放器SDK移动端已于2025年2月14日(7.0.0版本开始)在标准版基础上增加了专业版区分,获取专业版请联系商务。获取后授权操作指引[接入播放器License](t2355407.md#150c40a00eehv)。 2. 购买视频点播、视频直播、智能媒体服务的资源达到一定金额时,可获赠播放器SDK专业版一年License授权。更多信息,请参见[播放器SDK计费](t1989015.md#a67e3ec974jsh)。 3. 新获取的播放器SDK移动端专业版License仅支持7.0.0及以上版本,在获取前请确认您应用内接入的播放器SDK版本号。 **版本状态划分及技术支持策略** ---------------------------------- 为了持续优化用户体验,阿里云播放器会不断迭代版本,带来新的功能、性能提升以及问题修复。在迭代过程中,我们会尽量保持原有API的兼容性,因此推荐您及时更新播放器到最新版本,以获得更好的体验。 根据发布时间,我们将阿里云播放器的版本分为 **推荐** 、 **支持** 、 **不推荐** 以及 **不支持** 四个状态,我们提供的技术支持服务将根据播放器版本的状态有所差异。 播放器SDK的各版本请参见[下载播放器SDK](t2190718.md#title-1t4-go4-yqb),版本状态的划分及技术支持策略说明如下: |---------------------------------|--------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | **版本状态** | **划分标准** | **说明** | | 推荐 RECOMMENDED | 最新发布的版本 | * 版本包含最新的功能特性和问题修复,我们推荐所有客户尽可能升级。 * **我们会对最新版本提供全面的技术支持** 。 | | 支持 SUPPORTED | 距离最新版本发布6个月以内的版本 | * 版本包含了近期的新功能和主要问题修复。 * 我们会对这些版本提供技术支持。 | | 不推荐 DEPRECATED | 距离最新版本发布6\~12个月的版本 | * 版本可能包含过时的功能或者潜在的问题,且随着用户普遍的浏览器版本升级,可能会产生未知问题。 * 我们会对这些版本提供技术支持,但不保证问题排查的效率和准确性。我们强烈建议您升级到【推荐】的版本,因为除了新的特性和问题修复,新版本还会包含问题诊断系统的优化,可以大大提升开发者自主解决问题或者我们技术支持的效率。 | | 不支持 UNSUPPORTED | 距离最新版本发布超过12个月的版本 | * 版本的功能极大可能已过时、且没有针对最新的浏览器环境进行优化,我们不建议在生产环境继续使用这些版本。 * 除非存在严重问题,否则我们不会对此状态的版本提供技术支持,您需要尽快升级至【推荐】的版本。 | 相关文档 ------------------------- * 如需了解更多播放器SDK功能,请参见[播放器SDK功能详情](t2152614.md#title-e2w-dib-izd)。 * 如需下载播放器SDK,请参见[下载播放器SDK](t2190718.md#title-1t4-go4-yqb)。 * 如需了解接入License相关功能,请参见[License管理](t2225391.md#)。 * 如需集成播放器SDK,请根据您的实际业务需要选择播放器SDK类型。详细信息如下: * [Web播放器快速接入](t1959851.md#title-v1q-lp4-5pv) * [Android播放器快速接入](t1959844.md#title-lr3-5xj-9rt) * [iOS播放器快速接入](t1959838.md#title-lr3-5xj-9rt) * [Flutter播放器快速接入](t2024540.md#title-ha9-cwl-fvv) * [Harmony播放器快速接入](t2608158.md#) 相关文档 --------------------- * 如需了解更多播放器SDK功能,请参见[播放器SDK功能详情](t2152614.md#title-e2w-dib-izd)。 * 如需下载播放器SDK,请参见[下载播放器SDK](t2190718.md#title-1t4-go4-yqb)。 * 如需了解接入License相关功能,请参见[License管理](t2225391.md#)。 * 如需集成播放器SDK,请根据您的实际业务需要选择播放器SDK类型。详细信息如下: * [Web播放器快速接入](t1959851.md#title-v1q-lp4-5pv) * [Android播放器快速接入](t1959844.md#title-lr3-5xj-9rt) * [iOS播放器快速接入](t1959838.md#title-lr3-5xj-9rt) * [Flutter播放器快速接入](t2024540.md#title-ha9-cwl-fvv) 播放质量服务介绍 ========================= 如果您的应用使用阿里云播放器SDK播放视频,您可以通过播放质量监控服务了解您应用的播放质量及用户观看情况。播放质量监控基于阿里云播放器SDK上报的埋点数据提供播放失败率、秒开率、卡顿率等指标供您快速了解视频播放质量情况。 **工作原理** ------------------------- 播放质量监控服务依赖于阿里云播放器SDK上报的埋点数据,埋点逻辑如下图所示: ![播放质量监控.png](../images/p750465.png) 前提条件 --------------------- 使用播放质量监控功能之前,您需要做如下准备: * 仅支持下述版本的阿里云播放器SDK使用播放质量监控功能:5.4.9.2及以上版本的Android播放器SDK或iOS播放器SDK、2.16.0及以上版本的Web播放器SDK。立即[下载播放器SDK](t2190718.md#title-1t4-go4-yqb)。 * Android播放器SDK或iOS播放器SDK需要获取有效License,详情请参见[管理License](t2355406.md#88468ea136tdj);Web播放器SDK需要集成License使用,申请和接入License的方法请参见[Aliplayer API说明](t1959853.md#title-for-o19-97l)中的[license](t1959853.md#f804e5b9cajuq)属性。 * 请确保阿里云播放器SDK的日志上报功能已开启,正常情况下,阿里云播放器SDK的日志上报功能为默认开启的。 * **可选:** 建议在创建播放器时,透传traceId,后续可通过[单点追查](t2181635.md#title-unl-1ys-ziz)定位到具体的用户或设备,分析其播放行为,快速定位播放异常等问题。透传方式请参见[Android播放器基础功能](t2104111.md#title-crt-m4x-a38)、[iOS播放器基础功能](t2116234.md#title-fik-lva-vsi)、[Web播放器接口说明](t1959853.md#title-for-o19-97l)。 **说明** 使用限制:仅支持查询最近3日内的播放数据,单次查询时间段暂不支持跨日。 **查看指标趋势** --------------------------- 1. 登录[视频点播控制台](https://vod.console.aliyun.com/)[视频点播控制台](https://vod.console.alibabacloud.com/)。 2. 在左侧导航栏选择 **数据中心** \> **播放质量监控(新版)** 。 3. 在 **指标趋势** 页签下,根据页面提示设置查询条件。![image](../images/p992740.png) 查询条件说明如下: **说明** 1. 请确认 **通用配置** 中的License区域,即业务运营区域,默认中国内地及港澳台。 2. 在应用列表选择 **示例Demo** 可以直接查看数据, **示例Demo** 播放数据为预置演示数据。 |----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | **条件内容** | **说明** | | 应用 | 在下拉列表中搜索或直接选择该账号下的应用。 | | 端类型 | Web或Native端。 | | 系统类型 | 在下拉列表中选择系统类型(默认展示全量数据),对应关系如下: * Web端:包含Android、iOS、Harmony、Windows、MacOs、Linux。 * Native端:包含Android、iOS、Harmony。 | | 指标选择 | 在下拉列表中选择想要查看的数据指标。包含播放质量QoS、播放体验QoE模块全部23项指标。默认选择秒开率、首帧耗时、播放失败率、播放量等8项指标。 | | 时间范围 | 支持环比功能。可自定义设置时间范围,也可直接选择近7天、近14天和近30天。 **说明** 默认时间范围为过去7天。支持选择最近一年的数据。单次查询的时间范围不可超过1个月。 | | 聚合粒度 | 选择或者自定义的时间范围不同,可选择的聚合粒度不同: * 查询时间在3天内:可选择的粒度为5分钟、1 小时和1天。 * 查询时间在3-7天内:可选择的粒度为1小时、1天。 * 查询时间在7天以上:可选择的粒度为1天。 | 4. 点击 **查询** 按钮后,将以卡片形式展示已选指标的实时数据、环比数据及数据对比。也可单击任一卡片,对应数据将以图表形式直观展现在卡片模块下方。![image](../images/p991604.png) **查看云监控** -------------------------- **说明** * 您最多可连续查看最近30天的监控数据。 * 本文以查看音视频应用的监控数据为例说明,查看点播域名的监控数据操作步骤与之类似,请在 **视频点播** 页面中查看。 1. 登录[云监控控制台](https://cloudmonitornext.console.aliyun.com/)[云监控控制台](https://cloudmonitor.console.alibabacloud.com/)。 ![image](../images/p855747.png) 2. 在左侧导航栏,选择 **云资源监控 \> 云产品监控** 。 ![image](../images/p855749.png) 3. 在 **云产品监控** 页面,选择 **媒体服务 \> 视频点播-播放质量** ,进入到 **视频点播-播放质量** 的应用列表页面。![image](../images/p855752.png) **说明** 查看服务质量以及播放质量,需设置点播域名和创建报警规则,详情请查看[创建报警规则](t111649.md#)。 4. 在应用列表页面,单击目标应用的名称或单击目标应用 **操作** 列的 **监控图表** ,进入到监控图表页面。 您可以按小时、天等不同时间周期筛选查询各指标数据,最多可连续查看最近30天的监控数据。![image](../images/p855754.png) **相关文档** ------------------------- 更多关于云监控的详细信息,请参见[什么是云监控](t6120.md#)。 播放质量服务介绍 ========================= 如果您的应用使用阿里云播放器SDK播放视频,您可以通过播放质量监控服务了解应用的播放质量及用户观看情况。该服务基于阿里云播放器SDK上报的埋点数据,提供播放失败率、秒开率、卡顿率等指标,帮助您快速了解视频播放质量。本文将介绍如何通过云监控对点播域名及播放器的播放质量进行监控或视频点播控制台进行质量查看。 **工作原理** ------------------------- 播放质量监控服务依赖于阿里云播放器SDK上报的埋点数据,埋点逻辑如下图所示: ![播放质量监控.png](../images/p750465.png) 前提条件 ------------------------- 使用播放质量监控功能之前,您需要做如下准备: * 仅支持下述版本的阿里云播放器SDK使用播放质量监控功能:5.4.9.2及以上版本的Android播放器SDK或iOS播放器SDK、2.16.0及以上版本的Web播放器SDK。最新版播放器SDK下载请参见[SDK简介](t1959787.md#section-v53-2oj-xfd)。 * Android播放器SDK或iOS播放器SDK需要获取有效License,详情请参见[获取License](t2227754.md#title-rh4-lgu-cbc);Web播放器SDK需要申请开通播放质量监控增值服务后,再接入License,申请和接入License的方法请参见[Aliplayer API说明](t1959853.md#title-for-o19-97l)中的`license`属性。 * 请确保阿里云播放器SDK的日志上报功能已开启,正常情况下,阿里云播放器SDK的日志上报功能为默认开启的。 * **可选:** 建议在创建播放器时,透传traceId,后续可通过[单点追查](t2181635.md#title-unl-1ys-ziz)定位到具体的用户或设备,分析其播放行为,快速定位播放异常等问题。透传方式请参见[Android播放器基础功能](t2104111.md#title-crt-m4x-a38)、[iOS播放器基础功能](t2116234.md#title-fik-lva-vsi)、[Web播放器接口说明](t1959853.md#title-for-o19-97l)。 **说明** 使用限制:仅支持查询最近3日内的播放数据,单次查询时间段暂不支持跨日。 控制台操作步骤 ---------------------------- 1. 登录[视频点播控制台](https://vod.console.aliyun.com/)。 2. 在左侧导航栏选择 **数据中心** \> **播放质量监控** ,进入播放质量监控页面。 3. 查看各维度指标数据。 ![播放质量监控1.png](../images/p750928.png) 支持按以下维度筛选查询数据: * 支持按终端类型、系统类型、分辨率、网络类型等维度筛选查询数据。 * 支持查询近1小时至近3日内的自定义时段数据。 * 通过单击 **新增过滤条件** ,支持按SDK版本、视频格式、是否硬解、运营商、域名、省份设置过滤条件进行查询数据,并可将常用的过滤规则保存下来供后续直接选用。 **主要指标** ------------------------- ### **QoS指标** QoS指标可以了解当前应用的播放服务质量。 |-----------|---------------------------------|-------------------------------------------------------------------------------------------------------| | **指标** | **计算方法** | **说明** | | 播放量(次数) | 视频播放的总次数。对调用播放器SDK进行播放行为进行计数。 | 从应用首次调用阿里云播放器SDK进行播放(`prepare`)则记为一次播放。其他场景下不会记为播放,例如:暂停后重新调用`play`进行播放、循环播放模式下第二次及之后的播放都不会被记为新的一次播放。 | | 实际播放量(次数) | 实际播放量=视频播放的总次数-播放失败的总次数-起播跳失的次数 | 一般情况下"起播跳失"的占比极低,可以忽略。 | | 首帧时间(毫秒) | 用户从调用阿里云播放器SDK发起播放请求到首帧完成播放的时间。 | 若未起播,则没有首帧时间。 | ### **QoE指标** QoE指标可以了解当前应用的用户观看情况。 |-----------|---------------------------------|----------------------------------------------------------| | **指标** | **计算方法** | **说明** | | 访问用户数(人) | 对唯一用户标识(阿里云播放器SDK会生成uuid)进行排重计数 | 在当前时间段内,观看视频的用户总数,即应用调用阿里云播放器SDK的活跃用户数量。移动端根据设备ID识别独立用户。 | | 人均播放次数(次) | 人均播放次数=播放量÷访问用户数 | - | | 平均视频时长(秒) | AVG(视频时长) | 用户播放的所有视频的平均视频时长。 | **查看云监控** -------------------------- **说明** * 您最多可连续查看最近30天的监控数据。 * 本文以查看音视频应用的监控数据为例说明,查看点播域名的监控数据操作步骤与之类似,请在 **视频点播** 页面中查看。 1. 登录[云监控控制台](https://cloudmonitornext.console.aliyun.com/)[云监控控制台](https://partners-intl.console.aliyun.com/#/cloudmonitor)。 ![image](../images/p855747.png) 2. 在左侧导航栏,选择 **云资源监控** \> **云产品监控** 。 ![image](../images/p855749.png) 3. 在 **云产品监控** 页面,选择 **视频服务** \> **视频点播-播放质量** ,进入到 **视频点播-播放质量** 的应用列表页面。![image](../images/p855752.png) **说明** 查看服务质量以及播放质量,需设置点播域名和创建报警规则,详情请查看[创建报警规则](t2475232.md#806aad203cej0)。 4. 在应用列表页面,单击目标应用的名称或单击目标应用 **操作** 列的 **监控图表** ,进入到监控图表页面。 您可以按小时、天等不同时间周期筛选查询各指标数据,最多可连续查看最近30天的监控数据。![image](../images/p855754.png) **相关文档** ------------------------- 更多关于云监控的详细信息,请参见[什么是云监控](t6120.md#)。 单点追查 ========================= 当使用阿里云播放器SDK播放视频发生异常时,可借助单点追查功能针对具体某个用户或某次播放会话的异常播放行为进行全链路追踪,以便您能快速诊断问题原因,可有效改善播放体验治理效率。 前提条件 ------------------------- 使用单点追查功能之前,您需要作如下准备: * 仅支持下述版本的阿里云播放器SDK使用单点追查功能:5.4.9.2及以上版本的Android播放器SDK或iOS播放器SDK、2.16.0及以上版本的Web播放器SDK。立即[下载播放器SDK](t2190718.md#title-1t4-go4-yqb)。 * Android、iOS、Web播放器SDK需要获取有效License,详情请参见[获取License](t2227754.md#title-rh4-lgu-cbc)。 * 请确保阿里云播放器SDK的埋点日志上报功能已开启,正常情况下,阿里云播放器SDK的埋点日志上报功能为默认开启的。 * 务必要在创建播放器时就透传traceId,用于识别用户身份,否则将无法使用单点追查功能。透传方式请参见[Android播放器基础功能](t2104111.md#title-crt-m4x-a38)、[iOS播放器基础功能](t2116234.md#title-fik-lva-vsi)、[Web播放器接口说明](t1959853.md#title-for-o19-97l)。 **重要** 系统播放器、第三方(非阿里云)播放器、阿里云播放器非Android或iOS端或Web端均不支持单点追查功能。 使用限制 ------------------------- * 当前仅支持查询最新10000条会话,超出部分则不会在控制台显示。 * 仅支持查询最近3日内的播放数据。 操作步骤 ------------------------- 1. 登录[视频点播控制台](https://vod.console.aliyun.com/)[视频点播控制台](https://vod.console.alibabacloud.com/)。 2. 在点播控制台左侧导航栏的 **数据中心** 区域,单击 **单点追查** ,进入单点追查页面。 3. 查询播放会话记录。 ![单点追查](../images/p518128.png) * 在 **请输入客户追踪号** 的输入框中,输入创建播放器时透传的用于标识用户的traceId,精确查询某个用户或某台设备的播放会话记录。 * 通过时间(最近3日内)、播放类型(点播和直播)、状态(播放完成、播放中、播放异常)等筛选查询播放会话记录。 4. 单击 **查看详情** ,查看播放会话的详细信息。 ![播放详情](../images/p518129.png) **相关文档** ------------------------- 更多关于使用阿里云播放器SDK的常见问题及修复建议,请参见[播放器SDK常见问题](~~442222~~)。 使用流程 ========================= 本文为您介绍播放器SDK的使用流程,包含基本流程、STS播放流程、PlayAuth播放流程、安全下载流程,通过阅读本文您将了解使用视频点播服务时各节点的操作流程。 基本流程 ------------------------- 播放器SDK提供了很多点播和直播的业务功能,请参见[播放器SDK简介](t1959833.md#title-wye-7ar-fhx)。![流程](../images/p178405.png) 1. 通过点播服务和直播服务获取视频ID或播放地址。 2. 集成播放器SDK框架(请参见[ios播放器集成文档](t1959838.md#multiTask935)[Android播放器集成文档](t1959844.md#multiTask1859))。 3. 调用播放器的Vid+STS或URL等播放接口即可播放视频或观看直播。 STS的播放流程 ----------------------------- 1. 用户App获取STS凭证。 2. 服务端下发STS凭证。 3. 用户上传视频并获取vid。 4. 服务端获取STS凭证。 5. 将STS凭证下发给客户端。 6. 完成视频播放。 ![流程](../images/p178406.png) **重要** AppServer为用户App的服务端,需要用户使用服务端API或SDK自行开发。 PlayAuth的播放流程 ---------------------------------- 1. 用户App获取上传凭证。 2. 服务端下发上传凭证。 3. 用户上传视频并获取vid。 4. 服务端获取播放凭证。 5. 将播放凭证下发给客户端。 6. 完成视频播放。 ![流程](../images/p178407.png) **重要** AppServer为用户App的服务端,需要用户使用服务端API或SDK自行开发。 安全下载流程 --------------------------- 1. 生成并下载加密私钥文件,请参见[离线下载](t1959254.md#multiTask832)。 2. 在SDK内集成并调用`setEncrptyFile/setSecretImagePath`设置加密私钥文件路径,请参见[安全文件获取问题](t1959945.md#title-79p-gmh-mub)。 ![流程](../images/p178408.png) **说明** 用户使用安全下载后,必须从[点播控制台](https://account.aliyun.com/login/login.htm?oauth_callback=https%3A%2F%2Fvod.console.aliyun.com%2F%3Fspm%3D5176.8413026.J_2349663800.2.3dc011cfeVYJhB#/overview)下载密钥文件并集成在SDK里面。这样下载的视频不论是否是加密流,在本地都会存储为加密视频。如果使用普通下载,则无论是否是加密流,在本地都会存储为非加密视频,可以用任意播放器观看。 使用阿里云播放器播放 =============================== 视频点播提供了阿里云播放器SDK,支持直接通过播放地址播放,也支持通过播放凭证自动获取播放地址播放。 **简介** ----------------------- 阿里云播放器SDK(ApsaraVideo for Player SDK)是阿里视频云端到云到端服务的重要一环。除了支持点播和直播的基础播放功能外,还深度融合视频云业务,如支持视频的加密播放、安全下载、清晰度切换等业务场景。为用户提供简单、快速、安全、稳定的视频播放服务。更多阿里云播放器的特色功能、核心优势、不同版本及使用场景等介绍,请参见[播放器SDK简介](t1959833.md#title-wye-7ar-fhx)。 使用阿里云播放器播放视频发生异常时,可借助单点探查功能快速定位问题,详细内容,请参见[单点追查](t2181635.md#title-unl-1ys-ziz)。 现提供六种终端的播放器SDK: |-----------|--------------------------------------------------------------------------|-----------------------------------------------------------|-----------------------------------------------------------| | **终端** | **简介** | **说明文档** | **下载地址** | | Web | 包括Flash和HTML5,可以分别集成到PC的浏览器和移动端的浏览器中。开发语言JavaScript。 | [快速接入](t1959851.md#title-v1q-lp4-5pv) | [SDK下载](t1959787.md#title-9us-jlk-grj) | | iOS | 提供了SDK及Demo,可以集成到iOS系统的App中。开发语言Object-C。 | [集成SDK](t1959838.md#title-lr3-5xj-9rt) | [SDK下载](t1959787.md#title-9us-jlk-grj) | | Android | 提供了SDK及Demo,可以集成到Android系统的App中。开发语言Java。 | [集成SDK](t1959844.md#title-lr3-5xj-9rt) | [SDK下载](t1959787.md#title-9us-jlk-grj) | | Flutter | 提供了源码以及Demo,可以快速在Flutter项目中集成并使用 Android、iOS端播放器。开发语言Dart、Java、Object-C。 | [集成SDK](t2024540.md#title-ha9-cwl-fvv) | [SDK下载](t1959787.md#title-9us-jlk-grj) | | HarmonyOS | 提供了SDK及Demo,可以集成到HarmonyOS NEXT的App中。开发语言ArkTs。 | [集成SDK](t2608158.md#) | [SDK下载](t1959787.md#title-9us-jlk-grj) | | Windows | **说明** Windows播放器SDK的获取,请联系阿里云商务申请下载。 ||| 基础概念 ========================= 短视频SDK是阿里云开源的一款播放器组件,拥有视频强大的播放功能,支持视频录制、视频合拍、视频拼接等能力。本文介绍短视频SDK中涉及的一些基本概念,以便于您更好地理解短视频SDK。 License ---------------------------- 短视频SDK服务需要开通License,开通方式请参见[获取短视频SDK License](t2092717.md#title-sw7-urf-fta)。 **说明** 开通License后,请确保提交package/bundle id和Android Studio/XCode中对应配置保持一致。 视频分辨率 -------------------------- 视频分辨率指的是视频横向和纵向上的有效像素,理论上视频分辨率越高,图像越清晰。但分辨率越高也意味着文件越大,处理越耗时。移动端考虑到不同设备性能差异,建议设置分辨率720P及以下。常见的视频分辨率如下: |---------|------------|------------|------------| | **清晰度** | **1:1** | **3:4** | **9:16** | | 480P | 480\*480 | 640\*480 | 853\*480 | | 540P | 540\*540 | 720\*540 | 960\*540 | | 720P | 720\*720 | 960\*720 | 1280\*720 | | 1080P | 1080\*1080 | 1440\*1080 | 1920\*1080 | **说明** 不要直接使用屏幕像素值作为视频分辨率。 码率 ----------------------- 码率又叫比特率,指的是每秒传送的比特(bit)数。单位为bps(Bit Per Second)。压缩视频的时候给这个视频指定码率参数,用以告诉视频编码器期望的压缩后视频的大小。在一定范围内,码率越高,视频越清晰,文件也越大。建议码率: |---------|------------------| | **清晰度** | **建议码率** | | 480P | 1000000\~2000000 | | 540P | 2000000\~3000000 | | 720P | 2000000\~4000000 | | 1080P | 2000000\~6000000 | 帧率 ----------------------- 视频帧率指的是每秒钟显示的图像帧数,单位Frame per Second(fps)。帧率越高,图像越流畅,文件也越大。建议视频帧率:25\~30。 关键帧 ------------------------ 帧是组成视频图像的基本单位,视频文件是由多个连续的帧组成。关键帧也叫I帧,它是帧间压缩编码里的重要帧,解码时仅用I帧的数据就可重构完整图像,I帧不需要参考其他画面而生成。关键帧可以做为随机访问(seek)的参考点,可以当成图像。 GOP ------------------------ Group of Picture(以下简称GOP)顾名思义就是有一组帧组成的一个序列。一个GOP由关键帧开始,后面跟随者一组B帧和P帧。GOP过小,会导致I帧的比例增高,压缩比降低。GOP过大,会导致随机访问(seek)更耗时,同时,会导致倒播卡顿(倒播需要解码一个GOP才能播放视频帧)。SDK中GOP默认值为5,建议GOP值为5\~30。 **说明** 编辑模块实现视频倒播功能,如果导入视频GOP过大,需要先转码处理。 填充模式 ------------------------- 当素材图片或视频的分辨率长宽比与导出视频分辨率长宽比不一致时,会涉及填充模式的选择。 SDK支持两种填充模式: |----------|---------------------------| | **填充模式** | **处理方法** | | 裁剪模式 | 保持长宽比,裁剪图片,只显示中间区域。 | | 缩放模式 | 保持长宽比,使图片能完整显示,上下或左右填充颜色。 | 编码方式 ------------------------- 编码方式有以下两种: |----------|----------------------------------------------------------------| | **编码方式** | **编码详情** | | 软编 | 使用CPU进行编码。软编可以配置的参数更丰富,同等码率下生成的视频更清晰;但是编码速度比较慢,CPU负载高,手机更容易发热。 | | 硬编 | 使用非CPU硬件进行编码。硬编编码速度更快,CPU负载低;但清晰度比软编略差,部分安卓设备上可能存在适配性问题。 | 资源说明 ------------------------- SDK资源主要包括人脸识别模型资源、滤镜资源和动效滤镜资源。SDK资源可以保存到网络端,也可以直接打包到apk中。考虑到SDK下载包的大小,建议您将SDK资源保存到网络端,在启动App时下载。 **说明** SDK不支持assets流,如果是打包到apk中,启动后必须将资源拷贝到SD Card中。资源文件及使用说明可以在SDK下载包中获取。 支持格式 ------------------------- |--------|-------------| | **类型** | **格式** | | 视频 | MP4、MOV、FLV | | 音频 | MP3、AAC、PCM | | 图片 | JPG、PNG、GIF | 视频合拍 ------------------------- 视频合拍从产品功能层面看,就是两路视频(一路来自样本视频,一路来自设备摄像头采集),按照指定的布局模式(左右分屏,上下分屏,画中画等)进行合成,合成出来的视频每一帧画面将会同时包含两路视频的画面,而合拍视频的音频部分则采用样本视频的音频。以下为范例视图,实际上SDK内部支持开发者自己组织布局,关于如何布局将在后面讲述。 ![合拍功能](../images/p180476.png) 多源录制 ------------------------- 多源录制可以支持View录制、摄像头录制等多种视频采集源按需组合的合拍录制。从产品功能层面看,就是多个画面数据来源(例如View录制采集的画面数据、摄像头采集的画面数据),按照指定的布局模式(左右分屏、上下分屏、画中画等)进行合成,合成出来的视频每一帧画面将会同时包含上述画面数据来源。以下为范例视图,实际上可支持开发者自己组织布局,关于如何布局将在后面讲述。![多源录制 ](../images/p345154.png) 轨道 ----------------------- * 在上述视频合拍概念中提及的两路视频在SDK中被抽象为两个轨道:A轨道和B轨道,A轨道放设备采集的视频,B轨道放样本视频,用轨道抽象有利于开发者理解轨道布局的概念。 * 在上述多源录制中提及的多路画面数据来源在SDK中被抽象为多个轨道,如A轨道放摄像头采集画面,B轨道放View录制采集画面,用轨道抽象有利于开发者理解轨道布局的概念。 轨道布局 ------------------------- 轨道布局是轨道的属性之一,用来描述该轨道的视频画面,在合拍生成的视频中如何"摆放",轨道布局在一个归一化的坐标系中,从两个纬度来描述轨道布局信息,分别是中心点的坐标和轨道size(即宽高信息)。 * 视频合拍的轨道布局如下图所示:![视频合拍](../images/p213140.jpg) 在该布局画面中,轨道A和轨道B的画面各占一半,因此,两个轨道的宽度均为0.5,而高度则都为1.0,而轨道A的中心点坐标:(0.25,0.5),轨道B的中心点坐标:(0.75,0.5)。 轨道布局在视频合拍接口中主要涉及两个核心类: * AliyunMixTrackLayoutParam类是用于描述上述提到的中心点和宽高信息。 * AliyunMixRecorderDisplayParam类里面除了包含AliyunMixTrackLayoutParam布局信息,还包含了displayMode和layoutLevel。displayMode描述了该轨道的视频在宽高比与轨道宽高不一致时采用填充还是裁剪模式;layoutLevel用来描述布局层级,值越大布局越靠前,假如两个轨道有相互覆盖的地方,则layoutLevel大的轨道在布局上层,将覆盖layoutLevel小的轨道。 * 多源录制的轨道布局如下图所示:![多源录制-轨道布局 ](../images/p345155.png) 在该布局画面中,轨道A和轨道B的画面各占一半,因此,两个轨道的宽度均为0.5,而高度则都为1.0,而轨道A的中心点坐标:(0.25,0.5),轨道B的中心点坐标:(0.75,0.5)。 轨道布局在多源录制接口中主要涉及AliyunLayoutParam类:此类除了描述上述提到的中心点和宽高信息,还包含了displayMode和layoutLevel。displayMode描述了该轨道的画面数据在宽高比与轨道宽高不一致时采用填充还是裁剪模式;layoutLevel用来描述布局层级,值越大布局越靠前,假如两个轨道有相互覆盖的地方,则layoutLevel大的轨道在布局上层,将覆盖layoutLevel小的轨道。 基础概念 ========================= iOS短视频SDK 是阿里云支持的一款播放器组件,拥有视频强大的播放功能,支持视频录制、视频合拍、视频拼接等能力。 版本信息 ------------------------- 短视频SDK提供了AliyunVideoSDKInfo类获取SDK版本的信息,您可以通过下列接口获取SDK版本信息,帮助我们更快速的定位问题。 | **操作项** | **操作实例** | |-----------------------|----------------------------------------------------------------------------| | 获取版本号 | ```plaintext + (NSString *)version; ``` | | 获取alivc commit id | ```plaintext + (NSString *)alivcCommitId; ``` | | 获取mediacore commit id | ```plaintext + (NSString *)mediaCoreCommitId; ``` | | 获取video sdk commid id | ```plaintext + (NSString *)videoSDKCommitId; ``` | | 获取build id | ```plaintext + (NSString *)videoSDKBuildId; ``` | | 控制台打印版本信息 | ```plaintext + (void)printSDKInfo; ``` | **说明** 另外,在AliyunVideoSDKInfo.h头文件注释中也注明了版本信息。 License ---------------------------- 短视频SDK服务需要开通License,开通方式请参见[获取短视频SDK License](t2092717.md#title-sw7-urf-fta)。 **说明** 开通License后,请确保提交的bundle id和XCode中对应配置保持一致。 TaskPath ----------------------------- TaskPath是文件夹路径,SDK的多个模块需要传入taskPath完成初始化。接口调用过程中生成的配置文件和临时文件都会存放到taskPath中,模块间配置传递也通过taskPath完成。taskPath的生成和删除由开发者维护。 视频分辨率 -------------------------- 视频分辨率指的是视频横向和纵向上的有效像素,理论上视频分辨率越高,图像越清晰。但分辨率越高也意味着文件越大,处理越耗时。移动端考虑到不同设备性能差异,建议设置分辨率720p及以下。常见的视频分辨率如下: | **清晰度** | **1:1** | **3:4** | **9:16** | |---------|------------|------------|------------| | 480p | 480\*480 | 480\*640 | 480\*848 | | 540p | 540\*540 | 540\*720 | 540\*960 | | 720p | 720\*720 | 720\*960 | 720\*1280 | | 1080p | 1080\*1080 | 1080\*1440 | 1080\*1920 | * 录制模块可以通过AliyunIRecorder的初始化方法`- (instancetype)initWithDelegate:(id)delegate videoSize:(CGSize)videoSize;`设置videoSize作为录制视频分辨率。 * 裁剪模块可以通过AliyunCrop的outputSize属性设置裁剪视频分辨率。 * 编辑模块可以通过AliyunImporter的初始化方法`- (instancetype)initWithPath:(NSString *)taskPath outputSize:(CGSize)outputSize;`设置outputSize作为编辑导出视频分辨率。 **说明** 不要直接使用屏幕像素值作为视频分辨率。 视频旋转角度 --------------------------- 视频文件可以带有旋转角度信息,SDK也支持为录制的视频设置旋转角度。横屏录制的场景下可以通过AliyunIRecorder的cameraRotate属性设置摄像头,录制后的视频会相应带有旋转角度。 码率 ----------------------- 码率又叫比特率,指的是每秒传送的比特(bit)数。单位为bps(Bit Per Second)。压缩视频的时候给这个视频指定码率参数,用以告诉视频编码器期望的压缩后视频的大小。在一定范围内,码率越高,视频越清晰,文件也越大。建议码率: | **清晰度** | **建议码率** | |---------|-----------------| | 480P | 1000000-2000000 | | 540P | 2000000-3000000 | | 720P | 2000000-4000000 | | 1080 | 2000000-6000000 | * **录制模块** 可以通过AliyunIRecorder的bitrate属性设置码率。 * **裁剪模块** 可以通过AliyunCrop的bitrate属性设置码率。 * **编辑模块** 可以通过AliyunImporter的`- (void)setVideoParam:(AliyunVideoParam *)videoParam;`方法,创建AliyunVideoParam并设置其bitrate属性设置码率。 帧率 ----------------------- 视频帧率指的是每秒钟显示的图像帧数,单位fps(Frame per Second)。帧率越高,图像越流畅,文件也越大。建议视频帧率:25-30。 * **录制模块** 可以通过AliyunIRecorder的recordFps属性设置帧率。 * **裁剪模块** 可以通过AliyunCrop的fps属性设置帧率。 * **编辑模块** 可以通过AliyunImporter的`- (void)setVideoParam:(AliyunVideoParam *)videoParam;`方法,创建AliyunVideoParam并设置其fps属性设置帧率。 关键帧 ------------------------ 帧是组成视频图像的基本单位,视频文件是由多个连续的帧组成。关键帧也叫I帧,它是帧间压缩编码里的重要帧,解码时仅用I帧的数据就可重构完整图像,I帧不需要参考其他画面而生成。关键帧可以做为随机访问(seek)的参考点,可以当成图像。 GOP ------------------------ Group of Picture(以下简称GOP)顾名思义就是有一组帧组成的一个序列。一个GOP由关键帧开始,后面跟随者一组B帧和P帧。GOP过小,会导致I帧的比例增高,压缩比降低。GOP过大,会导致随机访问(seek)更耗时,同时,会导致倒播卡顿(倒播需要解码一个GOP才能播放视频帧)。SDK中GOP默认值为5,建议GOP值为5-30。 * **录制模块** 可以通过AliyunIRecorder的GOP属性设置GOP。 * **裁剪模块** 可以通过AliyunCrop的gop属性设置GOP。 * **编辑模块** 可以通过AliyunImporter的`- (void)setVideoParam:(AliyunVideoParam *)videoParam;`方法,创建AliyunVideoParam并设置其gop属性设置GOP。 **说明** 编辑模块实现视频倒播功能,如果导入视频GOP过大,需要先转码处理。 填充模式 ------------------------- 当素材图片或视频的分辨率长宽比与导出视频分辨率长宽比不一致时,会涉及填充模式的选择。 SDK支持两种填充模式: | **填充模式** | **处理方法** | |----------|---------------------------| | 裁剪模式 | 保持长宽比,裁剪图片,只显示中间区域。 | | 缩放模式 | 保持长宽比,使图片能完整显示,上下或左右填充颜色。 | * **裁剪模块** 可以通过AliyunCrop的cropMode属性设置填充模式。 * **编辑模块** 可以通过AliyunImporter中`- (void)setVideoParam:(AliyunVideoParam *)videoParam;`方法,创建AliyunVideoParam并设置其scaleMode属性设置填充模式。 编码方式 ------------------------- 编码方式有以下两种: | **编码方式** | **编码详情** | |----------|----------------------------------------------------------------| | 软编 | 使用CPU进行编码。软编可以配置的参数更丰富,同等码率下生成的视频更清晰;但是编码速度比较慢,CPU负载高,手机更容易发热。 | | 硬编 | 使用非CPU硬件进行编码。硬编编码速度更快,CPU负载低;但清晰度比软编略差,部分安卓设备上可能存在适配性问题。 | 支持格式 ------------------------- | **类型** | **格式** | |--------|-------------| | 视频 | MP4、MOV、FLV | | 音频 | MP3、AAC、PCM | | 图片 | JPG、PNG、GIF | 产品介绍 ===================== 阿里云视频点播提供了一款集视频录制、裁剪、编辑、拼接和上传等功能于一体的短视频SDK。本文将介绍阿里云短视频SDK的核心优势、应用场景以及由License控制的功能特性。 什么是短视频SDK -------------------------- 阿里云短视频SDK是一款集短视频录制、裁剪、编辑和上传等功能于一体的开发者工具。该SDK不仅提供了易用、稳定和统一的接口,还附带开源的产品级UI界面。开发者可以根据自身业务需求实现短视频相关功能,并基于开源的UI界面进行界面定制,从而实现个性化的二次开发。 License ---------------------------- 短视频SDK服务需要开通License,开通方式请参见[获取短视频SDK License](t2092717.md#title-sw7-urf-fta)。 **说明** 开通License后,请确保提交package/bundle id和Android Studio/XCode中对应配置保持一致。 核心优势 ------------------------- * 快速接入,成本经济 阿里云短视频SDK提供产品级解决方案,最快可在2小时内完成接入,显著节省了自行开发所需的人力和物力成本,助力快速实现App的短视频功能。 * 接口简单,开放性强 SDK接口设计简单易用,具备高度开放性。专业版(UI开源)允许开发者根据业务需求自由定制UI,满足个性化需求。 * 功能齐备,应用广泛 阿里云短视频SDK功能全面,支持断点录制、实时滤镜、高效美颜(兼容阿里云美颜特效SDK和FaceUnity美颜贴纸SDK)、人脸贴图等多种功能。还支持本地视频导入、压缩裁剪,并可为视频添加主题模板、动图、字幕、音乐等高级特效。 * 迭代打磨,稳定可靠 经过1000+应用的商用验证,阿里云短视频SDK技术稳定可靠,能够满足各种复杂场景的需求。 * 智能制作,高效成片 基于AE制作高品质视频模板,只需提交素材即可一键生成同款视频,低门槛、高质量地快速创意成片,使视频制作变得更加高效便捷。 应用场景 ------------------------- 适用于娱乐,社交,亲子,教育,新闻资讯等行业的短视频拍摄制作、多样互动玩法的场景。 功能特性 ------------------------- 本节仅介绍短视频SDK所提供的主要功能总述,更多更详细的功能分类及介绍,请参见[功能列表](t1959865.md#section-5km-tsc-ob6)。 * 界面 提供默认UI,并提供完整的UI交互源码,可自定义UI。 * 视频录制 支持多种合拍模式、断点录制、回删、点击拍摄、长按拍摄、普通美颜、实时滤镜、闪光灯、实时水印、摄像头切换、分辨率设定、自带人脸库实现人脸贴图、多路混音和变速等功能。同时专业版支持对接第三方人脸AR能力实现高级美颜、美肌能力。 * 视频编辑 支持视频裁剪、添加音乐、多路拼接等基础编辑功能,同时支持在编辑界面添加滤镜(包括静态滤镜和动效滤镜)、转场、字幕(含普通字幕和气泡字幕)、贴图(支持动态和静态)、音频变声和涂鸦(支持画笔粗细调整,颜色调整和撤销)等特效编辑功能。 * 动图 支持在编辑界面添加动图,可在任意时间点添加并支持时间调整。 * 剪同款 支持通过AE制作模板,移动端本地套用模板生成同款视频。支持选择本地视频、图片、编辑文本,指定模板一键合成。 * 字幕 支持在编辑界面添加普通字幕、气泡字幕、花字及翻转字幕。 * 草稿箱 支持编辑后生成草稿,或从草稿箱中编辑视频,并提供了草稿列表,草稿云同步等功能。 **License版本** 短视频SDK根据提供的功能不同,分为基础版、标准版和专业版,各版本由License控制。使用短视频SDK的前提是获取License授权,更多信息请参考[获取短视频SDK License](t2092717.md#title-sw7-urf-fta)。 功能列表 ------------------------- 下表介绍短视频SDK所提供的详细功能及基础版、标准版、专业版的支持情况。表格中的 **✓** 表示支持, **×** 表示不支持。 |------------|--------|------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------|------------------| | **功能点** || **功能说明** | **基础版** | **标准版** | **专业版** | **专业版购买页所属模块说明** | | 界面 | 默认UI | SDK包含一套默认的UI,布局、交互、界面可二次开发。 | ✓ | ✓ | ✓ | 专业版免费赠送。 | | 界面 | 自定义UI | 提供完整的UI交互源码,用户可自定义UI界面。支持替换图标和背景颜色,或完全自定义。 | ✓ | ✓ | ✓ | 专业版免费赠送。 | | 视频录制 | 分辨率与屏比 | 支持高清、标清、超高清拍摄,支持16:9、4:3、1:1多种屏比拍摄。 | ✓ | ✓ | ✓ | 对应的 **录制模块** 。 | | 视频录制 | 清晰度 | 可设定帧率、质量等级,或自定义GOP、码率生成不同清晰度的视频。 | ✓ | ✓ | ✓ | 对应的 **录制模块** 。 | | 视频录制 | 多段录制 | 支持断点拍摄和连续拍摄。 | ✓ | ✓ | ✓ | 对应的 **录制模块** 。 | | 视频录制 | 自定义时长 | 自定义最长和最短拍摄时长。 | ✓ | ✓ | ✓ | 对应的 **录制模块** 。 | | 视频录制 | 变速 | 支持慢速和快速录制。 | ✓ | ✓ | ✓ | 对应的 **录制模块** 。 | | 视频录制 | 拍摄控制 | 拍摄可控制:切画幅、切摄像头、手电筒、曝光度、焦距、对焦。 | ✓ | ✓ | ✓ | 对应的 **录制模块** 。 | | 视频录制 | 拍照 | 拍摄支持抓取当前采集画面并保存为图片。 | ✓ | ✓ | ✓ | 对应的 **录制模块** 。 | | 视频录制 | 背景音乐 | 支持录制界面添加音乐,音乐资源由第三方提供,有额外费用。 | ✓ | ✓ | ✓ | 对应的 **录制模块** 。 | | 视频录制 | 实时水印 | 支持在录制时添加水印。 | ✓ | ✓ | ✓ | 对应的 **录制模块** 。 | | 视频录制 | 实时滤镜 | 拍摄预览时可实时切换滤镜,支持自定义滤镜。 | ✓ | ✓ | ✓ | 对应的 **录制模块** 。 | | 视频录制 | 实时特效 | 拍摄预览时可设置抖动、分屏等常见特效,支持自定义特效。 | ✓ | ✓ | ✓ | 对应的 **录制模块** 。 | | 视频录制 | 人脸贴纸 | 拍摄内置人脸识别功能,在人脸上覆盖贴纸挂件等效果。 | × | × | ✓ | 对应的 **录制模块** 。 | | 视频录制 | 人脸识别接口 | 拍摄支持对接第三方人脸,进行人脸贴纸操作。 | × | × | ✓ | 对应的 **录制模块** 。 | | 视频录制 | 自定义渲染 | 采集数据可通过回调进行自定义渲染。 | ✓ | ✓ | ✓ | 对应的 **录制模块** 。 | | 视频录制 | 基础美颜 | 拍摄实时美颜,平滑无极调整强度。 | ✓ | ✓ | ✓ | 对应的 **录制模块** 。 | | 视频录制 | 高级美颜 | 录制支持引入第三方美颜(支持阿里云[美颜特效SDK](t2066390.md#concept-2066390)和FaceUnity美颜贴纸SDK,有额外费用),包含磨皮、红润、美白,大眼瘦脸等效果。 | × | × | ✓ | 对应的 **录制模块** 。 | | 视频录制 | 视频合拍 | 和已生成的视频进行合拍,实现双画面。 | × | ✓ | ✓ | 对应的 **录制模块** 。 | | 视频录制 | 多路混音 | 支持在录制过程中多路音频实时混音。 | × | ✓ | ✓ | 对应的 **录制模块** 。 | | 视频录制 | 回声消除 | 支持在录制过程中录制源回声消除。 | × | ✓ | ✓ | 对应的 **录制模块** 。 | | 视频录制 | 音频降噪 | 支持在录制过程中实时降噪。 | × | ✓ | ✓ | 对应的 **录制模块** 。 | | 视频录制 | View录制 | 指定View进行录制,生成视频。 | × | ✓ | ✓ | 对应的 **录制模块** 。 | | 视频录制 | 多源录制 | 摄像头拍摄、View录制,本地视频进行实时合成录制,生成视频。 | × | ✓ | ✓ | 对应的 **录制模块** 。 | | 视频编辑(基础编辑) | 视频导入 | 支持本地视频快速导入后编辑。 | ✓ | ✓ | ✓ | 对应的 **导入模块** 。 | | 视频编辑(基础编辑) | 照片裁剪 | 支持照片画面大小的裁剪,同时支持画面填充和画面裁剪。 | ✓ | ✓ | ✓ | 对应的 **导入模块** 。 | | 视频编辑(基础编辑) | 视频裁剪 | 支持视频画面大小和时长裁剪,同时支持画面填充和画面裁剪。 | ✓ | ✓ | ✓ | 对应的 **导入模块** 。 | | 视频编辑(基础编辑) | 原比例裁剪 | 支持保持原始视频比例裁剪视频时长,更加快速。 | ✓ | ✓ | ✓ | 对应的 **导入模块** 。 | | 视频编辑(基础编辑) | 视频转码 | 可设置编码、码率、GOP、帧率生成不同压缩比的视频。 | ✓ | ✓ | ✓ | 对应的 **导入模块** 。 | | 视频编辑(基础编辑) | 按帧预览 | 移动时间线时,在预览窗口显示基准游标停留的帧图像。 | × | ✓ | ✓ | 对应的 **导入模块** 。 | | 视频编辑(基础编辑) | 视频截图 | 基于当前时间线,渲染当前画面并保存图片。 | × | ✓ | ✓ | 对应的 **导入模块** 。 | | 视频编辑(基础编辑) | 多路拼接 | 支持导入多路视频或图片,进行前后拼接,生成1个视频文件。 | × | ✓ | ✓ | 对应的 **导入模块** 。 | | 视频编辑(基础编辑) | 多路混排 | 支持导入多路视频,指定位置与大小,生成具有多个画面的视频文件。 | × | ✓ | ✓ | 对应的 **导入模块** 。 | | 视频编辑(基础编辑) | 画中画 | 支持在主轨视频上叠加视频,生成带有画中画效果的视频文件。 | × | ✓ | ✓ | 对应的 **导入模块** 。 | | 视频编辑(基础编辑) | 背景音乐 | 支持将音乐合成到视频中,不受时间特效影响。音乐资源由第三方提供,有额外费用。 | × | ✓ | ✓ | 对应的 **导入模块** 。 | | 视频编辑(基础编辑) | 本地配音 | 支持本地音频合成到视频中,支持快速、慢速等时间特效调节。 | × | ✓ | ✓ | 对应的 **导入模块** 。 | | 视频编辑(特效编辑) | 时间特效 | 支持对视频进行快速、慢速、倒放、反复操作。 | × | ✓ | ✓ | 专业版免费赠送。 | | 视频编辑(特效编辑) | 画面调节 | 在编辑界面,调整画面的亮度、白平衡、锐度、暗角、对比度等。 | × | ✓ | ✓ | 专业版免费赠送。 | | 视频编辑(特效编辑) | 静态滤镜 | 在编辑界面添加lut滤镜或着色器脚本滤镜,实时切换滤镜。 | × | ✓ | ✓ | 专业版免费赠送。 | | 视频编辑(特效编辑) | 特效滤镜 | 在编辑界面添加灵魂出窍,幻影等特效滤镜。 | × | ✓ | ✓ | 专业版免费赠送。 | | 视频编辑(特效编辑) | 转场 | 支持视频和照片间添加移动、淡入淡出、百叶窗等效果。 | × | ✓ | ✓ | 专业版免费赠送。 | | 视频编辑(特效编辑) | 帧动画 | 支持视频及画面上的挂件(贴纸、字幕等)进行位移、缩放等动画,支持自定义动画。 | × | ✓ | ✓ | 专业版免费赠送。 | | 视频编辑(特效编辑) | 静态贴纸 | 在编辑界面添加静态图片,可在任意时间点添加并支持时间调整。 | × | ✓ | ✓ | 专业版免费赠送。 | | 视频编辑(特效编辑) | 涂鸦 | 支持画笔样式、尺寸和颜色调整。 | × | ✓ | ✓ | 专业版免费赠送。 | | 视频编辑(特效编辑) | 片尾水印 | 支持在视频末尾添加片尾水印效果,可定义持续时间。 | × | ✓ | ✓ | 专业版免费赠送。 | | 视频编辑(特效编辑) | 自定义渲染 | 解码的帧数据可通过回调进行自定义渲染。 | × | ✓ | ✓ | 专业版免费赠送。 | | 视频编辑(特效编辑) | 音频降噪 | 支持对音频进行降噪处理。 | × | ✓ | ✓ | 专业版免费赠送。 | | 视频编辑(特效编辑) | 音频淡入淡出 | 支持对音频进行淡入淡出处理。 | × | ✓ | ✓ | 专业版免费赠送。 | | 视频编辑(特效编辑) | 音频静音 | 支持消除当前视频的原音和音乐声音。 | × | ✓ | ✓ | 专业版免费赠送。 | | 视频编辑(特效编辑) | 音频变声 | 在编辑界面将视频原音变成萝莉、大叔音等。 | × | ✓ | ✓ | 专业版免费赠送。 | | 动图贴纸 | 动图贴纸 | 在编辑界面添加图片序列(动图),可在任意时间点添加并支持时间调整。 | × | × | ✓ | 对应的 **动图贴纸** 。 | | 主题模板 | MV | 在编辑界面添加MV效果,切换MV。 | × | × | ✓ | 对应的 **MV** 。 | | 主题模板 | 剪同款 | 引导客户选择相应的视频或图片,编辑文本,并根据设计好的AE视频模板进行视频合成。 | × | × | ✓ | 对应的 **剪同款** 。 | | 字幕 | 普通字幕 | 可添加多个字幕,可以设定字幕的位置、大小、角度、颜色、字体,以及每个字幕的开始和结束的时间。 | × | × | ✓ | 对应的 **字幕** 。 | | 字幕 | 气泡字幕 | 为文字增加背景图,支持动画背景,设定文字边框。 | × | × | ✓ | 对应的 **字幕** 。 | | 字幕 | 花字 | 带有艺术效果的多种色彩的文字样式。 | × | × | ✓ | 对应的 **字幕** 。 | | 字幕 | 翻转字幕 | 组合动画,可根据模板控制文字的出入时间点及动画效果。 | × | × | ✓ | 对应的 **字幕** 。 | | 草稿箱 | 草稿 | 录制或编辑后生成草稿,下次可直接进入编辑。 | × | ✓ | ✓ | 专业版免费赠送。 | | 草稿箱 | 草稿列表 | 可加入到草稿列表。 | × | ✓ | ✓ | 专业版免费赠送。 | | 草稿箱 | 草稿云同步 | 支持草稿上传与下载。 | × | ✓ | ✓ | 专业版免费赠送。 | | 其他 | 相册选择 | 支持从相册过滤视频,也支持视频时长过滤。 | ✓ | ✓ | ✓ | 专业版免费赠送。 | | 其他 | 缩略图 | 支持指定时间点进行抽帧,生成缩略图,支持快速模式。 | ✓ | ✓ | ✓ | 专业版免费赠送。 | | 其他 | 视频信息 | 提取视频常用信息,包括分辨率、帧率、编码格式等。 | ✓ | ✓ | ✓ | 专业版免费赠送。 | | 其他 | 上传到点播 | 视频点播支持媒资管理、云端转码、内容审核等功能。 | ✓ **说明** 基础版支持集成上传SDK将视频上传到视频点播。 | ✓ **说明** 标准版支持集成上传SDK将视频上传到视频点播。 | ✓ **说明** 专业版支持集成上传SDK将视频上传到视频点播,同时在编辑合成的场景下,封装了上传的核心类用于视频上传。 | 专业版免费赠送。 | | 其他 | 专家支持 | 短视频SDK技术支持。 | [提交工单](https://smartservice.console.aliyun.com/service/create-ticket?product=vod)[提交工单](https://workorder-intl.console.aliyun.com/?spm=5176.12672711.top-nav.ditem-sub.3cd51fa3WvRsjz#/ticket/add/?productId=1270) | [提交工单](https://smartservice.console.aliyun.com/service/create-ticket?product=vod)[提交工单](https://workorder-intl.console.aliyun.com/?spm=5176.12672711.top-nav.ditem-sub.3cd51fa3WvRsjz#/ticket/add/?productId=1270) | 钉钉群 | 专业版免费赠送。 | 常见咨询类问题 ---------------------------- 如果您在使用短视频过程中有任何问题或疑问,可以咨询阿里云视频云专为短视频SDK打造的[智能客服](https://h5.m.taobao.com/alicare/meebot.html?appKey=zjrE3jzzba&type=dingding_channel)机器人。 播放器SDK =========================== 阿里云播放器SDK(ApsaraVideo Player SDK,以下简称播放器SDK)是音视频终端SDK的子产品之一,本文为您介绍播放器SDK的核心优势及详细功能说明。 产品简介 ------------------------- 播放器SDK提供直播、点播场景的音视频播放能力,结合阿里云视频直播、视频点播或智能媒体服务使用,可以获得全面、稳定、流畅的音视频播放体验。播放器SDK具有集成便捷、全端覆盖、播放性能优秀等特点,满足客户对音视频播放的主流需求,提升开发效率和业务体验。 核心优势 ------------------------- 稳定可靠 播放器SDK质量稳定可靠,轻松支撑过亿每日播放vv(video view);对中低端设备、大屏设备覆盖率高。 优异性能 播放器SDK播放性能优异,综合运用预加载、网络优化和自适应等策略确保清晰流畅的播放体验;秒开率大于85%,百秒卡顿时长小于100 ms。 视频安全 播放器SDK支持商业DRM、AES-128标准加密、阿里云视频加密(私有加密)等加密方案,配合阿里云视频直播、视频点播的URL鉴权、访问限制、溯源水印等功能形成完整的安全方案,提升长视频、在线教培等场景的版权安全水平,有效降低恶意下载扩散等侵权风险。 数据支持 播放器SDK提供全链路数据统计、实时质量监控和轻便的数据分析工具,帮助业务高效洞察消费质量。针对播放异常,我们提供用户及和播放会话(video view)级的全链路追溯能力,快速定位异常原因,避免负体验影响扩散。 集成便捷 播放器SDK的接口设计简单易用,提供产品级Demo源码供业务方复用;Demo包含Native App端的短视频、信息流、长视频业务场景,节省自行开发人力、周期,加速业务上线效率。 全平台覆盖 播放器SDK支持Web、Android、iOS、Flutter、Windows、macOS和Linux等平台,有效支撑多屏播放的业务场景,满足客户多样需求。播放器SDK在不同平台下提供统一的接口设计,显著降低开发者跨平台集成的工作量。 功能列表 ------------------------- 播放器SDK在各端上都提供丰富的音视频点播、直播功能,主要平台支持的功能列表如下: **说明** 目前列表只覆盖Web、Android和iOS。 | **分类** | **功能点** | **功能说明** | **Web播放器SDK** | **Android播放器SDK** | **iOS播放器SDK** | |-----------|---------------|--------------------------------------------------------|------------------------------------------------------------------------------------------------|----------------------------------|----------------------------------| | 支持协议 | 音视频格式 | 支持FLV、HLS、MP4、MP3、RTMP等常见的音视频点播、直播格式。 | ✓ | ✓ | ✓ | | 支持协议 | HLS协议 | 支持HLS、多码率HLS、标准AES-128加密HLS视频流播放。 | ✓ | ✓ | ✓ | | 支持协议 | DASH协议 | 支持标准协议的DASH视频流播放,例如:SegmentBase 、SegmentTemplate。 | × | ✓ | ✓ | | 支持协议 | URL播放 | 支持在线视频、本地视频以URL的方式播放。例如:UrlSource播放。 | ✓ | ✓ | ✓ | | 支持协议 | Vid播放 | 支持Vid方式播放,同时对视频下发多个清晰度的播放地址(若有)。例如:VidAuth播放、VidSts播放。 | ✓ | ✓ | ✓ | | 支持协议 | 完整UI | SDK包含完整UI,集成方可以根据自身需求选用。 | ✓ | ✓ | ✓ | | 基础功能-播放控制 | 基础控制 | 支持开始、结束、暂停、seek、自动播放等播放控制功能。 | ✓ | ✓ | ✓ | | 基础功能-播放控制 | seek | 支持拖动到指定位置(UI支持手势);支持已经缓冲的视频内容在拖动时不清除缓冲内容并快速拖动。 | ✓ | ✓ | ✓ | | 基础功能-播放控制 | 精确seek | 支持精确到帧级别拖动到指定位置。 | ✓ | ✓ | ✓ | | 基础功能-播放控制 | 续播 | 支持设置续播起播时间点。 | ✓ | ✓ | ✓ | | 基础功能-播放控制 | 循环播放 | 支持音视频播放结束后自动重播。 | ✓ | ✓ | ✓ | | 基础功能-播放控制 | 列表播放 | 支持(短视频)列表播放功能,提升加载速度。 | ✓ | ✓ | ✓ | | 基础功能-播放控制 | 倍速播放 | 支持变速播放,支持音频变速不变调。 | ✓ **说明** 支持的倍速范围为0.5\~2倍。 | ✓ **说明** 支持的倍速范围为0.5\~5倍。 | ✓ **说明** 支持的倍速范围为0.5\~5倍。 | | 基础功能-播放控制 | 清晰度(手动)切换 | 支持视频点播的多路清晰度流切换。 | ✓ | ✓ | ✓ | | 基础功能-播放控制 | 截图 | 支持截取当前播放画面帧并保存为静态图片。 | 部分支持 **说明** 受平台、播放模式的影响略有差异。 | ✓ | ✓ | | 基础功能-播放控制 | 渲染数据输出 | 支持边渲染边输出PCM和YUV数据。 | × | ✓ | ✓ | | 基础功能-播放控制 | 事件回调 | 支持对播放状态回调、首帧回调、播放完成或失败回调。 | ✓ | ✓ | ✓ | | 基础功能-显示效果 | 填充 | 支持画面填充和画面裁剪两种填充模式。 | ✓ | ✓ | ✓ | | 基础功能-显示效果 | 旋转 | 支持0°、90°、180°和270°四个视频画面渲染角度设置。 | ✓ | ✓ | ✓ | | 基础功能-显示效果 | 镜像 | 支持无镜像、水平镜像和垂直镜像三种镜像模式设置。 | ✓ | ✓ | ✓ | | 基础功能-显示效果 | 亮度调节 | 支持系统的亮度调节(UI支持手势)。 | ✓ | ✓ | ✓ | | 基础功能-显示效果 | 自定义播放器尺寸 | 支持自定义设置播放器的宽高。 | ✓ | ✓ | ✓ | | 基础功能-显示效果 | HDR视频播放 | 支持HDR10/HLG等多种HDR格式;支持根据机型画像精确判断是否支持HDR及规格实现精确选流。 | × | ✓ | ✓ | | 基础功能-显示效果 | 画中画(小窗)播放 | 支持切换到画中画以小窗形式播放。 | ✓ | ✓ | 部分支持 **说明** 不支持在集成的App外画中画播放。 | | 基础功能-音量效果 | 音量调节 | 支持播放视频时调节系统音量。 | ✓ **说明** 支持软件音量0\~1倍调节。 | ✓ **说明** 支持软件音量0\~2倍放大。 | ✓ **说明** 支持软件音量0\~2倍放大。 | | 基础功能-音量效果 | 静音 | 支持开启和关闭静音功能。 | ✓ | ✓ | ✓ | | 基础功能-音量效果 | 纯音频播放 | 支持只播放视频文件中的音频和常见的音频文件,例如:MP3、AAC。 | ✓ | ✓ | ✓ | | 基础功能-音量效果 | 后台播放 | 支持界面切到后台后继续播放音频。 | ✓ | ✓ | ✓ | | 进阶功能-播放性能 | 播放失败重试 | 播放失败时自动重试。 | ✓ | ✓ | ✓ | | 进阶功能-播放性能 | HTTP 2.0 | 支持HTTP 2.0协议。 | 部分支持 **说明** 取决于浏览器是否支持。更多信息,请参见[HTTP 2](https://caniuse.com/?search=http2)。 | ✓ | ✓ | | 进阶功能-播放性能 | HTTPDNS | 支持HTTPDNS,实现域名防劫持、精准调度、实时解析生效。 | × | ✓ | ✓ | | 进阶功能-播放性能 | 本地缓存 | 支持视频播放的同时缓存下载后面的内容到本地,满足短视频场景下的循环播放,节约用户流量。 | × | ✓ | ✓ | | 进阶功能-播放性能 | 预加载 | 对本地缓存功能的升级,提升视频的起播速度。 | × | ✓ | ✓ | | 进阶功能-播放性能 | 软硬解切换 | 支持H.264和H.265的硬解码、软解码功能,并支持切换。 | 部分支持 **说明** Web播放器SDK不支持H.265。 | ✓ | ✓ | | 进阶功能-播放性能 | 解码策略黑名单 | 支持设置硬解码黑名单。 | ✓ | ✓ | ✓ | | 进阶功能-播放性能 | 网络自适应播放多码率视频流 | 支持多码率HLS、DASH的无缝切换。 | ✓ | ✓ | ✓ | | 进阶功能-播放性能 | 网速显示 | 支持播放器实例的实时网速上报。 | × | ✓ | ✓ | | 进阶功能-互动功能 | 字幕 | 支持导入自定义的字幕文件。 | ✓ **说明** 目前仅支持WebVTT格式的字幕。 | ✓ **说明** 支持SRT、SSA、ASS、VTT格式的字幕。 | ✓ **说明** 支持SRT、SSA、ASS、VTT格式的字幕。 | | 进阶功能-互动功能 | 弹幕 | 支持弹幕、防遮弹幕。 | ✓ | ✓ | ✓ | | 进阶功能-视频安全 | HLS标准加密 | 支持标准AES-128加密方案。 | ✓ | ✓ | ✓ | | 进阶功能-视频安全 | 阿里云加密(私有加密) | 支持阿里云加密(私有加密)方案,防止视频泄露和盗链问题。 | 部分支持 **说明** Web播放器SDK在iOS平台不支持私有加密。 | ✓ | ✓ | | 进阶功能-视频安全 | 安全下载 | 支持通过唯一应用下载视频并进行加密。 | 部分支持 **说明** Web播放器SDK在iOS平台不支持安全下载。 | ✓ | ✓ | | 进阶功能-视频安全 | DRM加密 | 支持Widevine、Fairplay等DRM加密方案。 | ✓ | ✓ | ✓ | | 数据服务 | 日志上报 | 支持上报播放器SDK日志,统计音视频点播、直播相关播放埋点信息。 | ✓ | ✓ | ✓ | | 数据服务 | 播放数据大盘 | 支持观测播放量、播放用户数等宏观数据。 | ✓ | ✓ | ✓ | | 数据服务 | 播放异常追溯 | 支持按照指定用户、播放会话对播放历史进行追溯,定位播放异常原因。 | × | ✓ | ✓ | | 直播功能 | 低延时直播 | 支持LHLS、DASH的低延时流播放。 | ✓ | ✓ | ✓ | | 直播功能 | **超低延时直播** | 支持阿里云RTS超低延时播放。 | ✓ | ✓ | ✓ | | 直播功能 | 自动重连 | 支持直播的自动重连功能。 | ✓ | ✓ | ✓ | | 直播功能 | 动态追帧 | 支持直播的动态追帧,降低延时。 | ✓ | ✓ | ✓ | 投屏 =================== 投屏是视频平台App中用户最常使用的功能之一,通过投屏,用户可以将移动设备上的内容分享给更多人观看,同时也可以享受更大屏幕的视觉效果。本文为您介绍如何在阿里云Android播放器和iOS播放器中集成投屏插件SDK。 **使用说明** ------------------------- * 在集成投屏插件SDK之前,您需要先开通投屏增值服务。开通地址请参见[播放器SDK开通申请](https://yida.alibaba-inc.com/o/aliplayerlic#/)。 * 投屏功能是阿里云播放器SDK中的一个独立功能,使用投屏前需要先集成阿里云播放器SDK,再集成投屏插件SDK。播放器SDK集成请参见[播放器SDK简介](t1959833.md#title-wye-7ar-fhx)。 * 投屏功能支持在AliPlayer的URL、 VidAuth或VidSts三种播放方式下使用。 **说明** * 低延时直播流(ARTC协议)、加密视频源和本地视频源不支持投屏。 * 其他非常见协议与格式,例如:DASH、H266、HDR、杜比音效、特殊声道、高码率、高FPS等,能否投屏需要看大屏端的设备支持情况。 **Android端集成投屏插件SDK** -------------------------------------- ### **步骤一:集成投屏插件** 1. 在项目级build.gradle项目文件中添加阿里云Maven仓库。 ```java maven { url "http://maven.aliyun.com/nexus/content/repositories/releases" } ``` 2. 在应用级build.gradle项目文件下,添加投屏插件SDK和播放器SDK的依赖。 投屏插件SDK版本号无需修改,播放器SDK版本号请根据实际情况进行修改,播放器的版本号请参见[Android SDK发布历史](t1959789.md#title-h55-54i-37k)。 ```java //投屏插件SDK implementation 'com.aliyun.sdk.android:AliyunPlayerScreenProjection:1.0.2' //投屏插件SDK依赖的子SDK implementation 'com.alibaba:fastjson:1.2.62' //播放器SDK版本必须为5.5.6.0及以上 implementation 'com.aliyun.sdk.android:AliyunPlayer:5.5.6.0-full' ``` 3. 混淆配置。 ```java -keepclasseswithmembers class com.youku.multiscreen.MultiScreen{*;} -keepclasseswithmembers class com.yunos.tvhelper.support.biz.ut.Ut.** {*;} -keepclasseswithmembers class com.youku.multiscreen.Client{*;} -keepclasseswithmembers class com.youku.multiscreen.callback.** {*;} -keepclasseswithmembers class com.yunos.** {*;} -keepclasseswithmembers class com.tmalltv.** {*;} -keep class * extends com.yunos.lego.LegoBundle -keep class * extends com.yunos.tvhelper.youku.dlna.biz.cb.DlnaCb -keep class * extends com.yunos.tvhelper.youku.remotechannel.api.RchannelPublic$IRchannel -keepclasseswithmembers class com.ta.utdid2.** { *;} -keepclasseswithmembers class com.ta.audid.** {*;} -keepclasseswithmembers class com.ut.device.** { *;} -keepclasseswithmembers class com.ut.mini.** {*;} -keep public class com.alibaba.mtl.log.model.LogField {public *;} -keepclasseswithmembers public class com.alibaba.analytics.core.model.LogField{*;} -keepclasseswithmembers class com.ut.mini.exposure.TrackerFrameLayout$ExposureEntity{*;} -keep class com.alibaba.fastjson.** {*;} -keep class com.aliyun.player.aliplayerscreenprojection.** {*;} ``` ### **步骤二:设置播放器** 1. 设置`UserData`。 **说明** UserData必须设置。当创建多个播放器时,投屏插件SDK会根据不同的UserData区分对应的播放器及视频资源。 ```java //创建播放器 AliPlayer aliPlayer = AliPlayerFactory.createAliPlayer(context); //设置 UserData String userData = "自定义UserData"; aliPlayer.setUserData(userData); ``` 2. 打开投屏开关。 ```java PlayerConfig playConfig = aliPlayer.getPlayConfig(); //默认是关闭的 playConfig.mEnableProjection = true; aliPlayer.setConfig(playConfig); ``` 3. 设置播放源并prepare。 ```java //设置播放器prepare,完成监听 aliPlayer.setOnPreparedListener(() -> { //收到prepare完成的回调后,可以执行投屏相关的操作 }); //设置播放源,可以设置URL、VidSts、VidAuth aliPlayer.setDataSource(); aliPlayer.prepare(); ``` ### **步骤三:使用投屏** 1. 初始化。 1. 投屏日志开关设置。 默认为关闭状态,如果遇见投屏插件SDK的问题,可以使用该接口打开投屏插件SDK的日志,方便问题排查。 ```java AliPlayerScreenProjectionHelper.enableLog(true); ``` 2. 创建投屏相关对象。 ```java //投屏设备相关对象 Device deviceDelegate = AliPlayerScreenProjectionHelper.createDeviceDelegate(context); //投屏操作相关对象 Projection projectDelegate = AliPlayerScreenProjectionHelper.createProjectDelegate(context); ``` 2. 投屏设备对象的使用。 1. 注册/反注册监听。 ```java //注册监听 deviceDelegate.registerDeviceListener(new AliPlayerScreenProjectDevListener() { //开始搜索投屏设备回调 @Override public void onDevSearchStart() {} //搜索投屏设备完成回调 @Override public void onDevSearchStop() {} }); //反注册监听 deviceDelegate.unRegisterDeviceListener(); ``` 2. 搜索设备。 ```java deviceDelegate.searchDevices(); ``` 3. 获取设备列表。可以在搜索完成的回调里调用。 ```java deviceDelegate.getDevicesList(); ``` 4. 选择设备。 ```java deviceDelegate.selectDevice(dev); ``` 3. 投屏控制对象的使用。 1. 注册/反注册监听。 ```java //注册监听 projectDelegate.registerProListener(new AliPlayerScreenProjectProListener() { //当前播放进度回调 @Override public void onProgressUpdate(int i) {} //投屏状态改变回调 @Override public void onStateChanged(AliPlayerScreenProjectProState aliPlayerScreenProjectProState) {} }); //反注册监听 projectDelegate.unRegisterProListener(); ``` 2. 设置时长。 Android投屏插件SDK必须要设置`duration`,否则会导致播放进度回调异常。 ```java //时长可以通过播放器接口获取,在播放器准备完成后,调用 player.getDuration() 获取视频时长。 projectDelegate.setDuration((int) mDuration); ``` 3. 开始投屏。 **说明** 在执行开始投屏前,需检查以下设置项是否配置正常: * 入参UserData有在播放器SDK设置UserData对应。 * 播放器SDK的License需要有投屏服务权限,并打开投屏开关。 * 必须在对应UserData的播放器SDK监听的setOnPreparedListener事件回调后才能进行。 ```java projectDelegate.start(userData); ``` 4. 退出投屏。 ```java projectDelegate.stop(); ``` 5. 投屏相关操作。 ```java //暂停投屏 projectDelegate.pause(); //恢复投屏 projectDelegate.play(); //seek projectDelegate.seek(progress); //获取音量 projectDelegate.getVolume(); //设置音量[0,100] projectDelegate.setVolume(int volume); ``` iOS端集成投屏插件SDK ------------------------------ ### **步骤一:集成投屏插件** 1. 采用pod方式集成投屏插件SDK。 ```java pod 'AliPlayerScreenProjectionSDK_iOS', '1.0.0' ``` 2. 集成播放器SDK。 集成投屏插件SDK时,必须同时集成5.5.6.0及以上版本的播放器SDK,投屏插件SDK不能独立进行投屏系列操作。播放器SDK版本号说明请参见[iOS SDK发布历史](t1959790.md#title-3wq-4r4-z10)。 播放器SDK可以使用pod方式集成,也可以本地集成,具体集成方式说明请参见[集成SDK](t1959838.md#title-lr3-5xj-9rt)。下文以pod方式集成为例进行说明。 ```java pod 'AliPlayerSDK_iOS', '<版本号>' ``` ### **步骤二:设置播放器** 1. 设置`UserData`。 **说明** UserData必须设置。当创建多个播放器时,投屏插件SDK会根据不同的UserData区分对应的播放器以及视频资源。UserData没有格式要求,建议设置能区分的唯一标识字符串。 ```java //创建播放器 AliPlayer *aliPlayer = [[AliPlayer alloc] init]; //设置UserData [aliPlayer setUserData:@""]; ``` 2. 打开投屏开关。 ```java AVPConfig *playerConfig = [aliPlayer getConfig]; //默认是关闭的 playerConfig.enableProjection = YES; [aliPlayer setConfig:playerConfig]; ``` 3. 设置播放源并prepare。 ```java //设置播放源,可以设置Url、VidSts、VidAuth。以Url为例: AVPUrlSource *urlSource = [[AVPUrlSource alloc] urlWithString:]; [aliPlayer setUrlSource:urlSource]; // 设置播放器 aliPlayer.delegate = self; // 调用准备播放 aliPlayer.prepare(); // 监听播放器事件回调,prepare完成时可以进行投屏操作 -(void)onPlayerEvent:(AliPlayer*)player eventType:(AVPEventType)eventType { switch (eventType) { case AVPEventPrepareDone: { // 投屏相关操作 } break; } } ``` ### **步骤三:使用投屏** 1. 初始化。 1. 打开/关闭投屏SDK的log日志,默认为关闭。如果遇见投屏插件SDK的问题,可以使用该接口打开投屏SDK的日志,方便问题排查。 ```java [AliPlayerScreenProjectionHelper enableLog:YES]; ``` 2. 创建投屏相关对象。 ```java // 调用create方法,自动创建好投屏设备对象实例helper.device、投屏控制对象实例helper.projection AliPlayerScreenProjectionHelper *helper = [AliPlayerScreenProjectionHelper create]; ``` 2. 投屏设备对象的使用。 1. 注册监听。 ```java // 设置监听。同时会注册设备状态监听相关回调(AliPlayerScreenProjectDevListener)、错误相关回调(AliPlayerScreenProjectErrorListener)。 [helper.device setDelegate:self]; // 实现监听设备状态监听相关回调 /** @brief 设备添加回调 @param dev 新添加的设备 */ - (void)onAdded:(AliPlayerScreenProjectDev *)dev {} /** @brief 设备移除回调 @param dev 被移除的设备 */ - (void)onRemoved:(AliPlayerScreenProjectDev *)dev {} /** @brief 开始搜索回调 */ - (void)onSearchStart {} /** @brief 停止搜索 */ - (void)onSearchStop {} ``` 2. 搜索设备。 ```java [helper.device searchDevices]; ``` 3. 刷新搜索列表。 在执行开始搜索后,监听设备添加回调`onAdded:`,有设备回调回来,即可将此设备放到保存的设备列表中进行刷新UI。 ```java // 保存的设备列表 NSMutableArray devLists = [NSMutableArray array]; - (void)onAdded:(AliPlayerScreenProjectDev *)dev { [devLists addObject:dev]; // 刷新UITableView等搜索设备列表UI。以UITableView为例: [tableView reloadData] } ``` 4. 选择设备。 ```java AliPlayerScreenProjectDev *dev = xxxx; // xxxx 获取到的某个搜索的设备 [helper.device selectDevice:dev] ``` 5. 停止搜索设备。 退出投屏相关页面。不使用搜索的相关逻辑后,建议调用停止搜索设备。 ```java [helper.device stopSearchDevices]; ``` 6. 获取设备列表。 可以直接获取当前时间点的搜索到的设备列表。 ```java NSArray *devicesList = [helper.device getDevicesList]; ``` 3. 投屏控制对象的使用。 1. 注册监听。 ```java //设置监听。同时会注册投屏状态相关回调(AliPlayerScreenProjectProListener)、错误相关回调(AliPlayerScreenProjectErrorListener)。 [helper.projection setDelegate:self]; // 实现监听投屏状态相关回调 /** @brief 投屏进度更新回调 @param position 投屏当前进度 @param duration 投屏总时长 */ - (void)onProgressUpdate:(NSInteger)position duration:(NSInteger)duration {} /** @brief 投屏状态改变回调 @param state 投屏当前状态 */ - (void)onStateChanged:(AliPlayerScreenProjectProState)state {} ``` 2. 开始投屏。 **说明** 在执行开始投屏前,需检查以下设置项是否配置正常: * 入参UserData有在播放器SDK设置UserData对应。 * 播放器SDK的License需要有投屏服务权限,并打开投屏开关。 * 必须在对应UserData的播放器SDK监听的`AVPEventPrepareDone`事件回调后才能进行。 ```java [helper.projection start:""]; ``` 3. 退出投屏。 ```java [helper.projection stop]; ``` 4. 投屏相关操作。 ```java // 暂停投屏 [helper.projection pause]; // 继续投屏 [helper.projection play]; // seek NSInteger progress = 10; // 10代表指定的投屏seek位置是10秒的位置 [helper.projection seek:progress]; // 获取当前音量 NSInteger currentVolume = [helper.projection getVolume]; //设置音量,范围[0 ~ 100] NSInteger volume = 50; [helper.projection setVolume:volume]; ``` **错误相关** ------------------------- ### **错误回调** #### **Android** ```java //设置设备错误监听 deviceDelegate.setErrorListener(aliPlayerScreenProjectErrorEnum -> {}); //设置投屏错误监听 projectDelegate.setErrorListener(aliPlayerScreenProjectErrorEnum -> {}); ``` #### **iOS** 参考上文的投屏设备对象的使用和投屏控制对象的使用中的注册回调方法实现,示例如下: ```java /** @brief 报错监听回调 @param error 报错信息 */ - (void)onError:(AliPlayerScreenProjectError *)error {} ``` ### **错误码说明** |-----------------------------------------------------|------------|----------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | **错误信息** | **错误码** | **含义** | **处理建议** | | AliPlayerScreenProjectErrorCodeDevSelectDevice | 0x20000001 | 投屏选择设备为空 | 检查选择设备方法的设备是否是已搜索设备中的一个。 | | AliPlayerScreenProjectErrorCodeProSetPlayerUserData | 0x20010000 | 投屏设置playerUserData为空 | 检查投屏插件SDK开始投屏方法的UserData是否是空,同时保证UserData参数值同播放器SDK设置UserData是否一致。 | | AliPlayerScreenProjectErrorCodeProInvalidState | 0x20010001 | 投屏异常状态 | * 确保播放器SDK的License正常,有投屏服务权限。 * 确保播放器SDK打开投屏开关。 * 确保播放器SDK设备的播放源不是文档中排除的情况。 | | AliPlayerScreenProjectErrorCodeProStart | 0x20012002 | 开始投屏失败 | 建议重新执行开始投屏,或先调用下结束投屏再调用开始投屏。 | | AliPlayerScreenProjectErrorCodeProPlay | 0x20012003 | 继续投屏失败 | 检查当前是否在暂停投屏状态。 | | AliPlayerScreenProjectErrorCodeProPause | 0x20012004 | 暂停投屏失败 | 检查当前是否在投屏中状态。 | | AliPlayerScreenProjectErrorCodeProStop | 0x20012005 | 结束投屏失败 | 检查当前是否在投屏中调用结束投屏方法。 | | AliPlayerScreenProjectErrorCodeProSetVolume | 0x20012006 | 设置音量失败 | 检查投屏大屏设备音量组件是否正常,正常情况下请重新执行设置音量方法,保持设置音量值范围为0到100,建议为整数。 | | AliPlayerScreenProjectErrorCodeProGetVolume | 0x20012007 | 获取音量失败 | 检查投屏大屏设备音量组件是否正常,正常情况下请重新执行获取音频方法。 | 离线下载 ========================= 视频点播服务针对移动端的使用场景,提供了离线下载功能。您可以根据业务需要,通过启用下载功能,允许终端用户将视频缓存至本地进行观看。 **下载模式** ------------------------- 视频点播服务针对移动端的使用场景,提供了视频下载功能。视频下载分为安全下载和普通下载两种方式,具体区别如下: * 安全下载(推荐):允许用户通过移动端阿里云播放器将视频缓存至本地观看,但下载到本地的视频文件会使用生成的密钥文件进行加密,仅支持使用阿里云播放器进行解密播放;使用第三方播放器或未经解密,都将无法观看视频。 * 普通下载:允许用户通过移动端阿里云播放器将视频缓存至本地观看,且下载到本地的视频文件未经加密,可拷贝,也可使用任意播放器播放,请谨慎使用。 安全下载可确保下载的视频为加密视频,且仅能通过预先绑定的App(通过在点播控制台生成密钥文件时填写APP唯一标识进行App绑定)进行播放。相比普通下载更加安全可靠,适用于需要保护视频版权的使用场景,非特殊场景下,都推荐您使用安全下载方式。 使用限制 ------------------------- 离线下载功能集成在阿里云播放器SDK内,使用离线下载功能需要集成阿里云播放器SDK,并完成相关代码配置。目前除阿里云Web播放器SDK未提供离线下载功能,其余端的播放器SDK都支持离线下载功能,相关配置方法请参见: * [Android播放器SDK视频下载配置](t1959843.md#section-tb7-g14-nv0) * [iOS播放器SDK视频下载配置](t1959837.md#section-leg-6s0-jls) * [HarmonyOS播放器SDK视频下载配置](t2842825.md#p-lyw-x1s-x4p) * [Flutter播放器SDK视频下载配置](t2024541.md#section-t56-wnf-dl3) **开启离线下载** --------------------------- ### **开启普通下载** 开启普通下载后,允许用户通过移动端阿里云播放器将视频缓存至本地观看,且 **下载到本地的视频文件未经加密** ,可拷贝,也可使用任意播放器播放, **请谨慎使用** 。 1. 登录[视频点播控制台](https://vod.console.aliyun.com/)[视频点播控制台](https://vod.console.alibabacloud.com/)。 2. 在点播控制台左侧导航栏选择 **配置管理** \> **分发加速配置** \> **下载设置** ,进入下载设置页面。 3. 开启下载功能的开关(已开启的情况下,可单击 **修改配置** ),并选择 **下载方式** 为 **普通下载** 后,单击 **确定** 。 ### **开启安全下载** 开启安全下载后,允许用户通过移动端阿里云播放器将视频缓存至本地观看,但下载到本地的视频文件会使用生成的密钥文件进行加解密, **仅支持使用阿里云播放器进行解密播放** ;使用第三方播放器或未经解密,都将无法观看视频。 1. 登录[视频点播控制台](https://vod.console.aliyun.com/)[视频点播控制台](https://vod.console.alibabacloud.com/)。 2. 在点播控制台左侧导航栏选择 **配置管理** \> **分发加速配置** \> **下载设置** ,进入下载设置页面。 3. 开启下载功能的开关(已开启的情况下,可单击 **修改配置** ),并选择 **下载方式** 为 **安全下载** 后,单击 **确定** 。 4. 在 **获取密钥** 区域,输入APP唯一标识和离线解密私钥后,单击 **生成密钥并下载** 。 设置了安全下载后,离线下载的视频需要使用密钥解密后才能播放。 离线视频加密私钥是一个二进制文件,根据您输入的App唯一标识和离线解密私钥采用私有算法生成并提供下载。下载后需安全保存在客户端应用中,在离线视频下载和播放过程中供播放器SDK使用。 **说明** 可多次生成密钥用于不同的客户端。 |----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | **参数名称** | **参数说明** | | APP唯一标识 | * Android:keystore文件的SHA-1值,获取到的SHA-1应为带冒号的字符串。 * iOS:App Bundle ID值。 * 鸿蒙:应用包名,即工程中app.json5文件中bundleName字段对应值。 * Windows:数字签名证书的序列号。 APP唯一标识的获取方式,请参见[获取APP唯一标识](#f2c689a032do5)。 | | 离线解密私钥 | 自定义加密私钥字符串,长度为16\~32个字符,由英文字符和数字自由组合,且必须同时包含大写字母、小写字母和数字。 | 5. 将生成的密钥文件保存到客户端应用中,并配置该密钥文件到阿里云播放器SDK中。 相关配置方法,请参见: * [Android播放器SDK视频下载配置](t1959843.md#section-tb7-g14-nv0) * [iOS播放器SDK视频下载配置](t1959837.md#section-leg-6s0-jls) * [HarmonyOS播放器SDK视频下载配置](t2842825.md#p-lyw-x1s-x4p) * [Flutter播放器SDK视频下载配置](t2024541.md#section-t56-wnf-dl3) #### **获取APP唯一标识** ##### **Android端** Android应用的签名信息,为keystore文件的SHA-1值,您可以通过Android Studio的signingReport功能生成签名报告获取签名信息。 ##### **iOS端** iOS应用的Bundle ID。 **鸿蒙端** 鸿蒙应用的包名,即工程中app.json5文件中bundleName字段对应值。 **开启视频禁用离线** ----------------------------- 当开启上述离线下载功能后,您可以通过对指定视频开启禁用离线,以限制该视频无法通过阿里云播放器进行离线下载。 **说明** * 仅当视频状态处于 **正常** 状态时,您才可以设置禁用离线。 * 开启该功能后,只能禁止视频无法通过阿里云播放器下载,无法阻止通过其他浏览器或第三方播放器的下载行为。 1. 登录[视频点播控制台](https://vod.console.aliyun.com/)[视频点播控制台](https://vod.console.alibabacloud.com/)。 2. 在左侧导航栏选择 **媒资库** \> **音/视频** ,进入到音视频列表页面。 3. 在目标视频所在行的操作列,单击 **更多** ,选择 **禁用离线** 。 4. 在弹出框中单击 **确定** 。 相关文档 ------------------------- 更多更完整的下载视频点播中媒体资源的相关信息,请参见[下载媒体文件](t1959352.md#title-ul3-c4b-j2w)。 端侧超分 ========================= 端侧超分是基于终端的超分模型,在设备本地将视频由低清晰度转换成高清晰度,可以明显改善视频播放质量,同时降低传输成本。本文为您介绍如何在Android或iOS端配置端侧超分功能。 背景信息 ------------------------- 随着视频业务的演进,用户对高清、超高清等观看体验的追求在不断提升。部分视频源由于制作、存储、分发限制无法提供高清晰度的版本,无法保证用户的观看体验。传统的云端超高清制作方案对带宽资源有依赖,无法满足弱网等环境的用户需求。 端侧超分功能可以平衡视频主观质量、观看体验和带宽成本,通过在本地将视频由低清晰度转换成高清晰度画质,明显提升视频观看体验的同时不增加带宽传输成本。 功能优势 ------------------------- |--------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | **类目** | **说明** | | 性能及功耗 | * 处理高效:单帧视频处理时间在20ms以内,可支持30fps的视频实时超分,可适用于直播、点播等各种视频播放场景。 * 功能强大:支持多种分辨率视频的处理,最高支持分辨率为540P视频的实时处理,可将分辨率为540P的视频处理至分辨率为1080P。 * 功耗低:电量消耗因机型、芯片和处理视频分辨率而有所差异,功耗最低可低至每小时50mA到100mA。 | | 兼容性 | * 机型适配:适配绝大多数当前主流机型。 * 平台支持:支持Android和iOS平台。 | | 功能形式 | * 插件形式,灵活易接:端侧超分功能以插件的形式进行接入,主流播放器库对端侧超分功能无任何依赖,可自由的进行插件替换和功能升级,集成方式灵活。 * 功能库占用空间小:Android的算法库增量为408 KB,iOS的算法库增量为730 KB。 | **前提条件** ------------------------- 您已获取播放器SDK License授权并购买端侧超分的增值服务。详情请参见[管理License](t2355406.md#0d3013700eswx)。 Android端集成使用 --------------------------------- 1. 获取端侧超分功能库。 端侧超分的功能库,现需要您[提交工单](https://smartservice.console.aliyun.com/service/create-ticket?product=vod)[提交工单](https://workorder-intl.console.aliyun.com/?spm=5176.12672711.top-nav.ditem-sub.3cd51fa3WvRsjz#/ticket/add/?productId=1270)申请或联系阿里云商务申请开通。 2. 集成端侧超分功能库。 1. 加载端侧超分功能库。 端侧超分功能库为动态库,可以通过以下方法加载功能库。 ```java System.loadLibrary(libname); ``` 2. 配置端侧超分功能库。 ```java /** * 设置滤镜配置。在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); ``` 3. 使用样例。 ```java //filterConfig内部为json实现,具体的json格式如下 player.setFilterConfig(filterConfig); //设置端侧超分功能有效,target同下面的json中"target"对应的value player.setFilterInvalid(target,false); ``` ```java [ { "target":"sr", "options":{ //该功能暂不需要具体option } } ] ``` iOS端集成使用 ----------------------------- 1. 获取端侧超分功能库。 端侧超分的功能库,现需要您[提交工单](https://smartservice.console.aliyun.com/service/create-ticket?product=vod)[提交工单](https://workorder-intl.console.aliyun.com/?spm=5176.12672711.top-nav.ditem-sub.3cd51fa3WvRsjz#/ticket/add/?productId=1270)申请或联系阿里云商务申请开通。 2. 集成端侧超分功能库。 端侧超分功能库为framework形式的动态库,需要在Xcode的frameworks and libraries中添加该功能库。可以通过以下方法添加功能库。 **说明** 下述示例代码以5.5.4.0版本为例,实际版本请根据您的业务情况选择。iOS播放器SDK的发布版本请参见[iOS SDK发布历史](t1959790.md#multiTask3969)。 ```objectc pod 'AliPlayerSDK_iOS_NORMAL_SR_FILTER', '5.5.4.0' ``` 3. 使用样例。 ```objectc // 初始化 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为关闭 ``` RTS播放 ========================== 您可以阅读本文,了解播放器集成RTS SDK播放RTS的操作步骤。 集成RTS SDK ------------------------------ 目前播放器支持RTS SDK播放RTS,集成播放器步骤请参见[集成iOS播放器](t1959838.md#multiTask935)。 下面为您介绍集成RTS SDK播放RTS流的操作步骤: 1. 添加Framework到项目中。 添加framework有以下两种方式: * 下载,将RtsSDK.framework文件和artcSource.framework添加到General里的Embedded Binaries栏目。 * 支持pod导入,动态将framework导入的方式。新增的artcSource.framework和RtsSDK.framework用以支持RTS。 2. 设置播放器最大缓冲延迟等。 播放器SDK通过AVPConfig提供了MaxDelayTime等参数设置播放直播流最大延迟缓存的接口。RTS场景下,建议的参数设置值如下: ```plaintext //先获取配置 AVPConfig *config = [self.player getConfig]; //设置最大延迟为1000,延迟控制交由RTS控制 config.maxDelayTime = 1000; //设置播放器启播缓存为10ms,数据控制由RTS控制 config.highBufferDuration = 10; config.startBufferDuration = 10; //其他设置 //... //设置配置给播放器 [self.player setConfig:config]; ``` RTS播放 ========================== 您可以阅读本文,了解播放器集成RTS SDK播放RTS的操作步骤。 集成RTS SDK ------------------------------ 目前播放器支持RTS SDK播放RTS,集成播放器步骤请参见[集成Android播放器](t1959844.md#multiTask1859)。 下面为您介绍集成RTS SDK播放RTS流的操作步骤: 1. 在项目中添加RTS SDK依赖。 添加RTS SDK依赖有以下两种方式: * 下载,将RTS SDK的aar文件添加到项目的libs目录下,添加到gradle依赖中即可。 * 支持Maven依赖,具体操作,请参见[Android端](t2174807.md#task-2174807)。 2. Load低延迟so库。 在使用播放器的Activity内加入,示例如下: ```plaintext static { System.loadLibrary("RtsSDK"); } ``` 3. 设置播放器最大缓冲延迟等。 播放器SDK通过PlayerConfig提供了MaxDelayTime等设置播放直播流最大延迟缓存的接口。RTS场景下,建议的参数设置值如下: ```plaintext //先获取配置 PlayerConfig config = mAliyunVodPlayer.getConfig(); //设置播放器最大缓存为1000 config.mMaxDelayTime = 1000; //设置播放器启播缓存为10ms,数据控制由RTS控制 config.mHighBufferDuration = 10; config.mStartBufferDuration = 10; //其他设置 //.... //设置配置给播放器 mAliyunVodPlayer.setConfig(config); ``` 视频加密 ===================== 本文介绍了阿里云视频加密功能。视频加密是一种用于保护视频内容安全的技术手段,旨在防止视频被非法下载、盗链或二次分发。通过加密技术,即使视频文件被下载到本地,也无法直接播放或传播,从而有效保护视频版权和内容安全。 **视频点播支持多种加密方式,主要包括以下三种:** |----------|----------------------------------------------------------------|---------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | **加密类型** | **原理** | **适用场景** | **限制说明** | | 阿里云私有加密 | 采用阿里云自研的私有加密算法,对视频数据进行加密处理。每个媒体文件拥有独立的加密密钥,避免单一密钥泄露导致的大范围安全问题。 | 适合对安全性要求较高的场景,如在线教育、财经金融、行业培训等。 | 1. 仅支持阿里云播放器SDK解密播放。 2. MP4格式视频仅支持iOS/Android平台的Native播放器SDK播放。 3. Web播放器SDK支持主流移动端浏览器播放私有加密视频。 | | HLS标准加密 | 基于AES-128加密算法,对视频内容进行加密。密钥通过信封加密技术管理,确保密钥的安全性。 | 适合需要广泛兼容性但对安全性要求相对较低的场景。 | 1. 密钥容易被窃取,安全性较私有加密低。 2. 需要较高的技术门槛,包括自建密钥管理和令牌颁发服务。 | | 商业DRM加密 | 基于苹果Fairplay和谷歌Widevine等商业数字版权管理(DRM)技术,提供高安全级别的加密保护。 | 适合对版权保护要求极高的场景,如独播剧、付费内容等。 | 1. 使用成本较高,需按License调用次数收费。 2. 集成复杂度较高。 | **视频加密覆盖多个终端,兼容性详情如下:** |-----------------------------------------------------------------------------------|-----------------|---------------|----------------------------------------|---------------------------------------|-----------------|-------------|------------------------------------------------------|----------------------------------------------------------------------------------------| | **终端** | **播放方式** | **私有加密(HLS)** | **License私有加密(HLS)** | **License私有加密(MP4)** | **私有加密(直播FLV)** | **HLS标准加密** | **阿里云DRM加密** | **三方DRM加密** | | Web端 | 点播UrlSource | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ | | Web端 | 点播VidAuth | ✔️ | ❌ | ❌ | ❌ | ✔️ | ❌ | ❌ | | Web端 | 点播VidSts | ❌ | ❌ | ❌ | ❌ | ✔️ | ✔️ | ❌ | | Web端 | 直播UrlSource | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ | | Web端 | 直播LiveStsSource | ✔️ | ✔️ | ❌ | ❌ | ❌ | ✔️ | ❌ | | Native端(iOS/Android/Flutter/Harmony) Native端(iOS/Android/Flutter) | 点播UrlSource | ✔️ | ✔️ SDK版本需为6.17.0及以上版本。 | ✔️ SDK版本需为6.8.0及以上版本。 | ❌ | ✔️ | ❌ | ✔️ SDK版本需为V7.8.0及以上,flutter端和Harmony端不支持。SDK版本需为V7.8.0及以上,flutter端不支持。 | | Native端(iOS/Android/Flutter/Harmony) Native端(iOS/Android/Flutter) | 点播VidAuth | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ | | Native端(iOS/Android/Flutter/Harmony) Native端(iOS/Android/Flutter) | 点播VidSts | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ✔️ flutter端和Harmony端不支持。flutter端不支持。 | ❌ | | Native端(iOS/Android/Flutter/Harmony) Native端(iOS/Android/Flutter) | 直播UrlSource | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ SDK版本需为V7.8.0及以上,flutter端和Harmony端不支持。SDK版本需为V7.8.0及以上,flutter端不支持。 | | Native端(iOS/Android/Flutter/Harmony) Native端(iOS/Android/Flutter) | 直播LiveStsSource | ✔️ | ✔️ | ❌ | ✔️ | ❌ | ✔️ flutter端和Harmony端不支持。flutter端不支持。 | ❌ | 配置DRM加密 ============================ 本文为您介绍如何使用视频点播的DRM(Digital Rights Management)加密功能,包括对视频进行DRM加密以及使用阿里云播放器SDK播放DRM加密视频。 使用限制 ------------------------- DRM加密目前仅支持通过 **视频点播控制台** 开启。 费用说明 ------------------------- DRM加密基于转码实现,但在转码输出视频时,仅产生转码费用,不会产生DRM加密费用;当在终端请求播放DRM加密视频时会产生DRM加密费用,播放端根据终端DRM加密视频License的请求次数,按次计算费用。计费详情请参见[DRM计费](t1989015.md#32f7123040tk8)。 **DRM加密兼容性** ----------------------------- |-----------|---------|--------------------------------| | **DRM方案** | **移动端** | **浏览器** | | widevine | Android | Chrome、Firefox(47+)、Edge、Opera | | fairplay | iOS | Safari | 对视频进行DRM加密 ------------------------------- ### **步骤一:(可选)申请并上传DRM证书** **说明** 如需使用面向iOS平台的Fairplay方案进行DRM加密,则需申请并上传Fairplay证书。如果仅考虑Android平台的Widevine方案进行DRM加密,则可以跳过此步骤。 1. 申请Fairplay证书。 详情请参见[申请Fairplay证书](t1960938.md#title-pg4-5js-a6h)。 2. 上传Fairplay证书。 1. 登录[视频点播控制台](https://vod.console.aliyun.com/)[视频点播控制台](https://vod.console.alibabacloud.com/)。 2. 在左侧导航栏选择 **配置管理** \> **媒体处理配置** \> **DRM证书管理** ,进入到DRM证书管理页面。 3. 单击 **上传证书** 。![配置DRM加密1.png](../images/p762157.png) |----------------|-------------------------------------------| | **参数** | **说明** | | **证书名称** | 证书的名称,长度为2-32个字符。 | | **内容** | 上传FairPlay Certificate(证书),仅支持.cer文件。 | | **私钥** | 申请证书时创建的受密码保护的私钥。 | | **PassPhrase** | 解密私钥的密钥。长度为1-32个字符,支持英文和数字。 | | **Ask** | 应用程序密钥。申请证书时,由Apple提供。长度为1-32个字符,支持英文和数字。 | 4. 单击 **确定** ,完成上传。 ### **步骤二:创建DRM加密转码模板组** 1. 登录[视频点播控制台](https://vod.console.aliyun.com/)[视频点播控制台](https://vod.console.alibabacloud.com/),选择 **配置管理** \> **媒体处理配置** \> **转码模板组** 。 2. 在转码模板组页面,单击 **添加转码模板组** ,创建用于DRM加密的转码模板组。 普通转码模板和视频打包模板均支持设置DRM加密,以添加普通转码模板为例,其设置方法如下: * 在 **基础信息** 区域, **封装格式** 设置为 **HLS** 。 * 在 **高级参数** 区域,开启 **视频加密** ,加密方式勾选 **DRM加密** 。 * 其余参数您可以根据实际需要进行配置,详细的参数解释,请参见[转码模板](t1959251.md#title-66c-0sg-0ea)。![配置DRM加密2.png](../images/p762166.png) 3. 单击 **保存** ,完成模板创建。 模板创建完成后,您可以在转码模板组列表页查看转码模板组的ID,请保存该ID用于后续发起DRM加密转码时使用。 ### **步骤三:(可选)创建工作流并关联** DRM加密转码模板组 在工作流中将转码、审核、截图等各种类型的媒体处理任务按一定流程进行编排,后续在上传媒体或媒体处理环节触发工作流时,可以使媒体文件按预先编排好的一系列任务流程自动发起处理。 您可以将关联了DRM加密转码模板组的媒体转码节点添加到工作流环节中,当前仅支持通过控制台方式创建工作流。详细操作,请参见[工作流](t1959357.md#title-gpm-zef-p67)。 ### **步骤四:对视频发起DRM加密转码** 视频点播支持在上传视频时和上传视频后去触发转码。可以直接基于转码模板组发起转码,或基于包含媒体转码节点的工作流去发起转码。 目前仅支持如下方式触发DRM加密转码:上传视频时(转码模板组+工作流),上传视频后(工作流),暂不支持在视频上传完成后通过转码模板组方式触发DRM加密转码。发起转码的控制台方式详细操作请参见[音视频转码](t1959356.md#46bf7181b4p6w),OpenAPI方式详细操作请参见[音视频转码](t1959356.md#38453f70b6z65)。 ### **步骤五:查看DRM加密转码结果** #### **异步等待结果通知** 如果您已配置视频点播的事件通知,可以通过接收[单个清晰度转码完成](t1959314.md#title-q9n-t4f-2xc)或[全部清晰度转码完成](t1959315.md#title-cm3-0iu-cqj)回调消息获取转码任务信息。配置事件通知请参见[事件通知](t1959307.md#main-1959307)。 #### 同步进行查询任务 控制台方式 1. 登录[视频点播控制台](https://vod.console.aliyun.com/)[视频点播控制台](https://vod.console.alibabacloud.com/),在左侧导航栏选择 **媒资库** \> **音/视频** ,进入到音视频列表页面。 2. 在音视频列表页面,查看目标视频的 **状态** 。 当视频 **状态** 为 **正常** 时,表示DRM加密转码已处理完成并成功。 3. 单击视频所在行的 **管理** ,进入到基础信息页面。 4. 单击 **视频地址** 页签,在视频地址页面可以查看该加密转码输出的流会标识 **DRM加密** 字样。![配置DRM加密3.png](../images/p762224.png) OpenAPI方式 调用[获取音视频播放地址](t2220609.md#title-2220609)接口,设置`ResultType`为`Multiple`来获取该视频下的所有转码完成的流,返回参数`EncryptType`会标识视频流的加密类型。 播放DRM加密视频 ------------------------------ 经过DRM加密过的视频,只能使用视频点播提供的阿里云播放器SDK对加密内容进行解密播放。 阿里云播放器SDK提供iOS、Android、Web(H5、Flash)多平台的播放器SDK供集成,以便您在自己的应用或网站中完成DRM加密视频的播放。 使用阿里云播放器SDK播放DRM加密视频时,需注意如下事项: * 阿里云播放器SDK版本需要为5.2.1及以上,目前iOS平台支持fairplay,Android平台支持widevine。 * 使用阿里云播放器SDK前,需要先获取播放器的License授权,详情请参见[管理License](t2355406.md#0d3013700eswx)。 * 集成阿里云播放器SDK前,请先了解各平台播放器SDK对DRM加密的支持兼容情况,详情请参见[播放器SDK加密播放兼容说明](t2295833.md#2bbed98c1fno6)。 * 使用阿里云播放器SDK播放DRM加密视频的具体操作步骤,请参见[如何播放加密视频](t2295833.md#d2ea6090a6iaa)、[如何播放加密视频](t2295833.md#26901aa0a6y4x)、[如何播放加密视频](t2295833.md#2ccb4200a6icu)。 * 播放DRM加密这类高安全等级视频时无法支持旋转、镜像、截图等操作。 **常见问题** ------------------------- * [上传DRM证书失败,报错提示Can not found user info](t2113131.md#7dcca5e1abr3b) * [发起DRM加密转码失败,报错提示Submit transcode job failed](t2113131.md#5082cb11d9bbh) * [视频经过DRM加密后,无法在浏览器上正常播放](t2245529.md#ad5ccfc4aaa1q)