商业MultiDRM
前置条件¶
- 加密片源需支持对应的商用DRM方案,并在m3u8或是init.mp4中具备对应的DRM支持方案标识信息。
- 鉴权服务端需按规则接入keyring服务的token获取,并按规则下发licenseUrl等DRM信息给客户端。
Android端¶
基于芒果DRM通用框架构建,集成需依赖芒果自研播放器。
集成过程¶
- 按芒果DRM通用框架构建DRM播放环境。
- 播放前,调用MgtvDrmManager.genDrmSession,SDK将依据SessionConfig配置值选用不同的DRM方案。
0=marlin 1=playready 2=widevine 3=fairplay 4=wiseplay 5=marlin cbcs/** * 生成一个DRM Session用于对应一次DRM流程,会话可以与播放器绑定 * 一次播放对应一个Session * * @param config 用于生成drm session的配置 * @return 生成的Session */ IDrmSession genDrmSession(SessionConfig config);
SessionConfig构造方法
/**
* vod8.0 一层接口调整,
* drmType改从drmInfo中获取,wasabi方案drmCid及drmToken改从drmInfo获取,
* 新增public SessionConfig(List<MgtvDrmParams.DrmInfo> drmInfoList)
* @param drmInfoList
*/
public SessionConfig(List<MgtvDrmParams.DrmInfo> drmInfoList)
DrmInfo相关值定义
public static class DrmInfo {
public String drmFirm; //DRM厂家,0=Intertrust公司,2=MGTV
// DRM解决方案
// 0=marlin 1=playready 2=widevine 3=fairplay
// 4=wiseplay 5=marlin cbcs 6=lightplay
public String drmSolution;
public String licenseUrl; //DRM视频的LicenseUrl
public String drmCid; //兼容Marlin的drm视频content_id,其它drm类型时为空
public String drmToken; //兼容Marlin drm的token,其它drm类型时为空
public String drmType;//传入drmType,0-marlin 1-marlin-hls 2-cencdash 3-fairplay hls 4-cenc hls 5-sm4 hls 6-cbcs hls fmp4
public int drmFlag;//3-pvod
public DrmInfo(String drmFirm, String drmSolution, String licenseUrl);
public DrmInfo(String drmFirm, String drmSolution, String licenseUrl,
String drmType);
public DrmInfo(String drmFirm, String drmSolution, String licenseUrl,
String drmCid, String drmToken)
}