视频点播通过 License 管理播放器 SDK 及增值服务的有效期和权限。本文为您介绍使用 Android 播放器 SDK 时如何获取和配置 License。
您需要在视频点播控制台购买 License、绑定 License 与应用以及下载 License 文件,具体操作请见应用管理。
参考以下示例代码在初始化播放器 SDK 时配置 License:
说明
具体设置请见快速开始 > 初始化点播 SDK。
// 初始化 SDK,传入 License 文件地址 String vodLicense = "assets:///license/vod.lic"; Env.init(new Config.Builder() .setLicenseUri(vodLicense) // ... 省略其余初始化选项,可参考快速开始文档 .build();
如果您同时集成播放器 SDK 和直播 SDK,请注意这两个 SDK 都需要设置 License。下方的示例代码展示了如何设置直播 License。同上方的设置点播 License 的示例代码相比,可以看出播放器 SDK 和直播 SDK 使用相同的 API 设置 License,但是 License 文件不同。
// 1. 初始化 TTSDK, 传入点播 License 地址 String vodLicense = "assets:///license/vod.lic"; Env.init(new Config.Builder() .setLicenseUri(vodLicense) // ... 省略其余初始化选项,可参考 “快速开始” 文档 .build(); // 2. 添加直播 License 地址 String liveLicense = "assets:///license/live.lic"; LicenseManager.getInstance().addLicense(assetsLicenseUri, null);
初始化播放器 SDK 后,您可以根据状态码来判断当前设置的 License 状态。
Debug 状态下,你可以通过关键词 LICENSE_STATUS
来进行过滤识别 License 相关的日志。如果 License 通过了校验,控制台会输出日志 C.LicenseStatus.LICENSE_STATUS_OK == 1
。日志中的 1
对应状态码。如果输出结果不是 1,就意味着 License 校验未通过,此时可以参考状态码来判断具体失败的原因。状态码说明如下表所示:
状态码 | SDK 中常量定义 | 说明 |
---|---|---|
0 | C.LicenseStatus.LICENSE_STATUS_INVALID |
|
1 | C.LicenseStatus.LICENSE_STATUS_OK | License 鉴权通过。 |
2 | C.LicenseStatus.LICENSE_STATUS_EXPIRED | License 已过期。 |
401 | C.LicenseStatus.LICENSE_STATUS_ERROR_PARAM_PACKAGE_NAME | 应用包名与购买 License 填写的包名不符。 |
402 | C.LicenseStatus.LICENSE_STATUS_ERROR_PARAM_FEATURE_NAME |
|
403 | C.LicenseStatus.LICENSE_STATUS_ERROR_PARAM_MODULE_NAME | 播放器 SDK 枚举传递错误。 |
示例代码如下:
import com.pandora.ttlicense2.LicenseManager; import com.pandora.ttlicense2.C; // 查询播放器 SDK 鉴权状态,1 表示鉴权通过,更多状态码见上表 int vodLicenseResult = LicenseManager.getInstance().checkSDKAuth(C.SDK.SDK_VOD_PLAY); // 查询点播 H265 增值服务 License 的鉴权状态,1 表示鉴权通过,更多状态码见上表 int featureH265Result = LicenseManager.getInstance().checkFeatureAuth(C.SDK.SDK_VOD_PLAY,C.Feature.FEATURE_BVC1);
增值服务的详细说明如下所示。
增值服务 | SDK 中常量定义 |
---|---|
H.265 | C.Feature.FEATURE_BVC1 |
H.266 | C.Feature.FEATURE_h266 |
自适应码率 | C.Feature.FEATURE_ABR |
蒙版弹幕+外挂字幕 | C.Feature.FEATURE_SUBTITLE_MASK |
客户端超分 | C.Feature.FEATURE_SUPER_RESOLUTION |
正式 License 支持续期和变更,具体操作请见续期或变更 License。成功续期或变更后,您将获得新的 License 文件。此文件会有所变动,但 Url
和 LicenseID
仍然保持原样。你需要及时在 App 中更新此文件,并发布新的 App 版本。
License 校验失败分为两种表现。
校验失败时,视频无法起播,并会从抛出onError
返回错误信息。示例代码如下:
ttVideoEngine.setListener(new VideoEngineListener() { // ... @Override public void onError(Error error) { Log.v("VideoPlay", "onError " + error); if (error.code == Error.LicenceFailed) { // license 校验失败 // internalCode 为细分错误码 switch (error.internalCode) { case Error.h265CheckFailed: // H.265 增值服务校验失败 break; case Error.h266CheckFailed: // H.266 增值服务校验失败 break; case Error.DashCheckFailed: case Error.BashCheckFailed: // DASH 增值服务校验失败 break; default: // 播放器 SDK 校验失败 break; } } else { // 更多错误码参考文档:https://www.volcengine.com/docs/4/66441/ } } }
如果开启了 TTVideoEngineLog,logcat 会输出。
<TTVideoEngine>videoEngine failed:domain:kTTVideoErrorDomainVideoOwnPlayer, code:-30001, internalCode:0, description:version:null,10,Mi 10 rom memory totle:114930200576,availe:72815374336 ram memory totle:7806540,availe:2883304 sdcard totle:114930200576,availe:72815374336 error:play errorauth failed,authResult:0&&time:1616475725000
code:-30001 为校验失败错误码,auth failed 为错误信息。
internalCode:0 为细分错误码。
authResult:0 表示 License 模块的鉴权结果返回 0。通过查询 判断 License 状态 部分提供的表格我们可以知道 0 表示 License 文件非法/未设置/路径设置错误。
error.internalCode 细分错误码的详细说明如下所示。
错误码 | SDK 中常量定义 | 说明 |
---|---|---|
0 | 播放器 SDK 播放校验失败 | |
-310000 | Error.h265CheckFailed | H.265 增值服务校验失败 |
-310001 | Error.DashCheckFailed | DASH 高级功能校验失败 |
-310003 | Error.h266CheckFailed | H.266 增值服务校验失败 |
在不同的场景中,校验失败的处理方式有所不同。
在集成 SDK 阶段,出现播放出错一般为使用问题,您可以根据播放器抛错对照错误码表进行定位处理。
如果 License 过期,您需要尽快续期 License,具体操作请参见续期或变更 License。
说明
建议您至少提前一个月续期/变更 License。