最近发现WKE播放Flash或者游戏时会有很多BUG,例如视频无法播放或者是Stage3D无法使用等问题。

经过研究应该是精简版本导致的,所以决定尝试使用CEF3移植入SOUI,但是DEMO中版本有点旧,所以想升级。

发现23XX版本开始 无法直接使用npapi的flash插件,默认是关闭的

这里以CEF的DEMO程序CEFCLIENT为例子:

有2种方式可以启动FLASH插件,但是我不推荐NPAPI方式,实际上非常不好,据说是效率低下以及不稳定。

所以这里默认为PPAPI的方式。

(这里说的是FLASH插件的NPAPI版本卡,不是说NPAPI卡,我措辞不严谨,和PPAPI和NPAPI本身技术无关,仅仅针对FLASH插件,不信的自己可以试试)

首先要做的:

在CEFCLIENT目录下新建目录 PepperFlash 把下载好的 pepflashplayer.dll 插件丢入该目录即可。

然后跟着以下方法做。

方法1:

直接给编译好的CEFCLIENT创建一个快捷方式 快捷方式后加入参数 --register-pepper-plugins="PepperFlash/pepflashplayer.dll;application/x-shockwave-flash" 然后使用快捷方式启动即可发现FLASH正常播放。

如果希望开启NPAPI方式,再加入参数 --enable-npapi 即可。

方法2:

不像以上方法,需要快捷方式等,可以无参数启动。

打开源码 CEFCLIENT,并且打开文件 client_app_browser.cc 文件,找到函数 OnBeforeCommandLineProcessing。

  1. void ClientAppBrowser::OnBeforeCommandLineProcessing(
  2. const CefString& process_type,
  3. CefRefPtr<CefCommandLine> command_line) {
  4. // Pass additional command-line flags to the browser process.
  5. if (process_type.empty()) {
  6. // Pass additional command-line flags when off-screen rendering is enabled.
  7. if (command_line->HasSwitch(switches::kOffScreenRenderingEnabled)) {
  8. // If the PDF extension is enabled then cc Surfaces must be disabled for
  9. // PDFs to render correctly.
  10. // See https://bitbucket.org/chromiumembedded/cef/issues/1689 for details.
  11. if (!command_line->HasSwitch("disable-extensions") &&
  12. !command_line->HasSwitch("disable-pdf-extension")) {
  13. command_line->AppendSwitch("disable-surfaces");
  14. }
  15.  
  16. // Use software rendering and compositing (disable GPU) for increased FPS
  17. // and decreased CPU usage. This will also disable WebGL so remove these
  18. // switches if you need that capability.
  19. // See https://bitbucket.org/chromiumembedded/cef/issues/1257 for details.
  20. if (!command_line->HasSwitch(switches::kEnableGPU)) {
  21. command_line->AppendSwitch("disable-gpu");
  22. command_line->AppendSwitch("disable-gpu-compositing");
  23. }
  24.  
  25. // Synchronize the frame rate between all processes. This results in
  26. // decreased CPU usage by avoiding the generation of extra frames that
  27. // would otherwise be discarded. The frame rate can be set at browser
  28. // creation time via CefBrowserSettings.windowless_frame_rate or changed
  29. // dynamically using CefBrowserHost::SetWindowlessFrameRate. In cefclient
  30. // it can be set via the command-line using `--off-screen-frame-rate=XX`.
  31. // See https://bitbucket.org/chromiumembedded/cef/issues/1368 for details.
  32. command_line->AppendSwitch("enable-begin-frame-scheduling");
  33. }
  34.  
  35. // 此参数解决多窗口问题
  36. command_line->AppendSwitch("process-per-site");
  37. command_line->AppendSwitch("enable-npapi");
  38. command_line->AppendSwitchWithValue("register-pepper-plugins", "PepperFlash/pepflashplayer.dll;application/x-shockwave-flash");
  39.  
  40. DelegateSet::iterator it = delegates_.begin();
  41. for (; it != delegates_.end(); ++it)
  42. (*it)->OnBeforeCommandLineProcessing(this, command_line);
  43. }
  44. }

修改代码如上,重新编译即可。

再打开YOUKU看看,是不是OK了。

还有发现右键菜单都是英文,这里可以在SETTINGS中设置参数locale为zh-CN即可。

  1. std::string locale("zh-CN");
  2. cef_string_utf8_to_utf16(locale.c_str(), locale.size(), &settings.locale);

[原创]Cef3 2623.1397 开启ppapi flash插件的更多相关文章

  1. CEF 3.2623使用flash插件的方法

    PPAPI Flash插件是Chrome浏览器内置的Flash插件,是Google和Adobe合作的产物,于Chrome21(Win)或者Chrome20(Linux)加入,具有沙箱.GPU加速.多进 ...

  2. js判断浏览器是否安装Flash插件,并提示安装或开启

    var flashChecker = function() { var hasFlash = 0; //是否安装了flash var flashVersion = 0; //flash版本 if(do ...

  3. Android WebView播放视频flash(判断是否安装flash插件)

    Android WebView播放flash(判断是否安装flash插件)  最近帮一个同学做一个项目,断断续续的一些知识点记录一下.一个页面中有一个WebView,用来播放swf,如果系统中未安装f ...

  4. Vivaldi解决flash插件问题

    Vivaldi浏览器 Vivaldi是Opera联合创始人.前CEO谭咏文(Jon von Tetzchner)2015年1月27日发布的一款浏览器,具有个性化的笔记功能,带有迷你屏幕截图的书签,以及 ...

  5. flash插件

    偶尔见到别人的博客侧边栏 有一些很有意思的flash插件,也想加入到自己博客里面,这里来大概讲一下~ 一.支持js代码 首先要在  博客设置 >开启博客侧边栏公告的js代码支持,提交审核后 很快 ...

  6. Chrome浏览器设置自动启用Flash插件

    Chrome浏览器设置自动启用Flash插件   1.打开Chrome浏览器,输入chrome://flags/#run-all-flash-in-allow-mode,打开,找到Enable Eph ...

  7. Ubuntu 手动更新firefox的flash插件

    Ubuntu下 Firefox更新flash插件老是提示失败,自己动手丰衣足食啊. 1.下载tar文件,地址:http://get.adobe.com/cn/flashplayer/?no_redir ...

  8. Flash插件地址

    Flash插件地址: http://get.adobe.com/cn/flashplayer/存档版本地址: http://helpx.adobe.com/flash-player/kb/archiv ...

  9. centos 安装flash插件

    方法一: 1.选择合适的yum源http://get.adobe.com/cn/flashplayer/进入此网址选择 “YUM,适用于Linux(YUM)”,下载adobe源http://101.9 ...

随机推荐

  1. SublimeText设置在浏览器打开 快捷键

    这里插入一下安装"view in browser"官方版的说明:(前提是得先安装package control插件) 1.通过"ctrl+shift+p"打开命 ...

  2. macOS --- 配置基于域名的虚拟主机

    在终端运行 sudo vi /Applications/XAMPP/xamppfiles/etc/httpd.conf,打开apache配置文件. 在httpd.conf中找到"#Inclu ...

  3. 解决Mybatis没有代码提示

    MyBatis xml文件中代码自动提示 工具/原料   eclipse,maven 方法/步骤   1 一.获得mybatis-3-config.dtd.mybatis-3-mapper.dtd 这 ...

  4. android adb端口被占用解决方法

    1.输入adb devices命令 C:\Users\Nick>adb devices List of devices attached adb server version (31) does ...

  5. Web验证方式(2)--Form Authentication

    Form验证方式并不是HTTP标准,而是在微软ASP.NET Web框架下提供的一种验证方式.其大致流程如下: 在上图的流程中,ASP.NET框架提供了如下支持类:( FormsAuthenticat ...

  6. win7右下角的网络连接图标不见了~终极必杀技

    1.打开程序管理器(ctrl+alt+delete) 2.在进程那里找到"explorer.exe",然后按结束进程(此时工具栏会消失) 3.然后在文件(程序管理器左上角),点击& ...

  7. 根据插件Swipe,结合jQuery封装成的新的jQuery插件

    swipe支持电脑上的自动滑动,也支持手机端的滑动效果.但是每次调用只能支持一个效果或者说一个页面出现n个这样的效果,我们就得调用n次这个插件. 我使用swipe+jQuery使得swip变得方便使用 ...

  8. Windows RDP远程连接CentOS 7

      1. 打开已经安装了CentOS7的主机,以root用户登录,在桌面上打开一个终端,输入命令:rpm -qa|grep epel,查询是否已经安装epel库(epel是社区强烈打造的免费开源发行软 ...

  9. 一线工程师带你深入学习和使用Kubernetes

    http://page.factj.com/tor/xoxaHR0cDovL2RvY2tvbmUuaW8vYXJ0aWNsZS8yMzM0 Kubernetes是Google开源的容器集群管理系统,它 ...

  10. leetcode563

    /** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNo ...