delphi中如何让dcef支持flash插件播放视频?

Chromium Embedded Framework (CEF)是个基于Google Chromium项目的开源Web browser控件,支持Windows, Linux, Mac平台。除了提供C/C++接口外,也有其他语言的移植版。因为基于Chromium,所以CEF支持Webkit & Chrome中实现的HTML5的特性,并且在性能上面,也比较接近Chrome。
CEF还提供的如下特性:自定义插件、自定义协议、自定义JavaScript对象和扩展;可控制的resource loading, navigation, context menus等等。dcef是指的cef在delphi中的版本

cef在前期版本中是自带支持flash插件的,后来Chromium不再默认支持flash控件!下面看看我的程序的dcef命令行参数

如何让dcef支持flash呢?
  1. 安装好dcef,不管哪个版本都行!
  2. 安装360极速浏览器或QQ浏览器,打开其安装目录,找到ppflash目录和npflash目录(360极速浏览器是这两个目录,而QQ浏览器略有不同)!
  3. 在你的工程目录中建NativeFlash目录和PepperFlash目录,然后360的npflash目录下的NPSWF开头的dll文件和同目录下的vch文件复制到自己工程的NativeFlash中,把360的ppflash目录中的pepflash开头的dll文件和同目录下的json文件复制到工程的PepperFlash目录中!这一步就是用360浏览器的flash文件,不需要你手工去下载安装插件!至少你应该发现即使你的系统没有安装flash插件,但360浏览器安装后一样可以正常播放flash,这就是因为他的目录中自带了这几个flash文件,为了让你的程序的dcef支持flash,所以我们直接复制360极速浏览器的flash文件过来,简单方便!
  4. 编辑你的delphi工程文件(即dpr文件),在{$R *.res}后面添加如下代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    procedure AppendCefCmdline(const processType: ustring; const cmd: ICefCommandLine);
    begin
    //cmd.AppendSwitch('--enable-gpu-plugin');//允许gpu
    //cmd.AppendSwitch('disable-gpu');//禁止gpu
    cmd.AppendSwitch('enable-npapi'); //允许NativeFlash
    //cmd.AppendSwitch('enable-tab-audio-muting');//允许tab页禁音
    //cmd.AppendSwitch('--enable-media-stream'); //允许视频流
    cmd.AppendSwitchwithvalue('load-plugin', 'NativeFlash\NPSWF32.dll');//指定NativeFlash插件文件位置,注意文件名要和你的一致
    //cmd.AppendSwitchWithValue('ppapi-flash-version','20.0.0.267');//指定PepperFlash版本号
    cmd.AppendSwitchWithValue('ppapi-flash-path','PepperFlash\pepflashplayer.dll');//指定PepperFlash插件文件位置,注意文件名要和你的一致
    cmd.AppendSwitch('--enable-system-flash');//允许PepperFlash
    //cmd.AppendSwitch('--enable-usermedia-screen-capturing');
    end;

    begin
    CefOnBeforeCommandLineProcessing :=AppendCefCmdline; //这一句就是指定了dcef启动的命令行
    Application.Initialize;
    Application.MainFormOnTaskbar := True;
    Application.CreateForm(TMainForm, MainForm);
    Application.Run;
    end.

很多人用delphi的dcef写的程序,不支持flash,是只在命令行中添加了允许flash,而没有指定flash插件文件的位置,这时dcef会去调用系统安装的flash插件,一旦系统插件有问题,你的程序就无法播放flash了,本文写的方法就是360极速浏览器的方法,不管你的系统安装不安装flash,一样播放flash!
而要让dcefbrowser支持flash也一样,dcefbrowser中只是把CefOnBeforeCommandLineProcessing改为DcefBApp.OnBeforeCommandLineProcessing即可,至于播放flash会有dos窗口弹一下的问题,请看本站的这篇文章http://www.bnwin.com/2017/12/01/328.html

-------------本文已结束赏个小钱吧-------------
×

感谢您的支持,我们会一直保持!

扫码支持
请土豪扫码随意打赏

打开微信扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

64.7K