跳转至

商业MultiDRM

前置条件

  1. 加密片源需支持对应的商用DRM方案,并在m3u8或是init.mp4中具备对应的DRM支持方案标识信息。
  2. 鉴权服务端需按规则接入keyring服务的token获取,并按规则下发licenseUrl等DRM信息给客户端。

Android端

基于芒果DRM通用框架构建,集成需依赖芒果自研播放器。

集成过程

  1. 按芒果DRM通用框架构建DRM播放环境。
  2. 播放前,调用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)
    }