You need to enable JavaScript to run this app.
导航
License 校验
最近更新时间:2025.03.18 18:03:11首次发布时间:2021.04.14 14:20:55
我的收藏
有用
有用
无用
无用

视频点播通过 License 管理播放器 SDK 及增值服务的有效期和权限。本文为您介绍使用 Android 播放器 SDK 时如何获取和配置 License。

获取 License

您需要在视频点播控制台购买 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);

判断 License 状态

初始化播放器 SDK 后,您可以根据状态码来判断当前设置的 License 状态。
Debug 状态下,你可以通过关键词 LICENSE_STATUS 来进行过滤识别 License 相关的日志。如果 License 通过了校验,控制台会输出日志 C.LicenseStatus.LICENSE_STATUS_OK == 1。日志中的 1 对应状态码。如果输出结果不是 1,就意味着 License 校验未通过,此时可以参考状态码来判断具体失败的原因。状态码说明如下表所示:

状态码

SDK 中常量定义

说明

0

C.LicenseStatus.LICENSE_STATUS_INVALID

  • License 文件非法,或被篡改。
  • 未添加 License,或路径设置错误。

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

  1. License 中不包含该增值服务
  2. 增值服务名错误。

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。成功续期或变更后,您将获得新的 License 文件。此文件会有所变动,但 UrlLicenseID 仍然保持原样。你需要及时在 App 中更新此文件,并发布新的 App 版本。

处理 License 校验失败

校验失败的表现

License 校验失败分为两种表现。

  • 播放器 SDK 校验失败
  • 高级功能、增值服务校验失败

校验失败时,视频无法起播,并会从抛出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
    -310002

    Error.DashCheckFailed
    Error.BashCheckFailed

    DASH 高级功能校验失败

    -310003

    Error.h266CheckFailed

    H.266 增值服务校验失败

校验失败的处理方式

在不同的场景中,校验失败的处理方式有所不同。

场景一:集成阶段

在集成 SDK 阶段,出现播放出错一般为使用问题,您可以根据播放器抛错对照错误码表进行定位处理。

场景二:线上 License 过期

如果 License 过期,您需要尽快续期 License,具体操作请参见续期或变更 License

说明

建议您至少提前一个月续期/变更 License。