WidevineCdm library 安装配置,并集成到CEF

如果不知道WidevineCdm是干什么的,估计可以退出去了,懂的自然懂,需要的也不用我多说。

主要是考虑到翻遍全网都没有找到太多相关的资料,而且由于不是公开库,所以没有直接下载的地方。于是本篇文章借此记录一下WidevineCdm的安装和配置过程,由于没有官方文档,如有错漏麻烦告知一下,还是希望大家能少走一些弯路。

虽然说WidevineCdm不公开,但是其实要下载到它其实也很简单,直接去对应Chrome版本中提取即可(注意,必须要对应版本,版本错误可能会导致无法成功引入)。

可以在这个网站很轻松的下载到google chrome 的历史版本:https://www.slimjet.com/chrome/google-chrome-old-version.php

备注:但是后面经过尝试,发现google chrome中导出来的dll有兼容性问题,一直显示不适配,可能进行了一些私有的修改,所以这里我们改用Edge浏览器中的WidevineCdm,操作步骤基本一样,但是我并没有找到比较齐全的Edge浏览器历史版本,这里就不放链接了。

一、提取:

首先就是下载安装好对应Edge版本,安装好后,可以在安装目录中找到你需要的版本。

将其复制到你的CEF目录下,这里需要做一点小小的修改,将子目录的dll文件和sig文件提取出来放到WidevineCdm目录下,

二、安装:

在你的CEF设置初始化中添加两行代码即可:

settings.CefCommandLineArgs.Add("enable-widevine-cdm", "1");//启用widevine功能
Cef.RegisterWidevineCdm(Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, Environment.Is64BitProcess ? "x64" : "x86", "WidevineCdm"));//注册widevineCdm,我这里开启了AnyCpu支持,会自动寻找对应版本的WidevineCdm,如果你不需要,可以直接设置到widevineCdm文件夹的路径。


//如果需要调试可以另外新建一个类,实现其IRegisterCdmCallback接口,例如

class RegisterCdmCallback : IRegisterCdmCallback
    {
        public bool IsDisposed => throw new NotImplementedException();

        public void Dispose()
        {
            //throw new NotImplementedException();
        }

        public void OnRegistrationComplete(CdmRegistration registration)
        {
            Debug.WriteLine(registration.ErrorMessage);
            //throw new NotImplementedException();
        }
    }

//然后在注册函数中传入回调参数
Cef.RegisterWidevineCdm(Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, Environment.Is64BitProcess ? "x64" : "x86", "WidevineCdm"),new RegisterCdmCallback());//注册widevineCdm

三、检测:

可以使用这个网站检测是否配置成功:https://bitmovin.com/demos/drm

这样就算是配置成功了,否则会显示No DRM

参考链接:https://www.52pojie.cn/thread-1162942-1-1.html

留下评论