How to make CEF support Flash

Method a: copy pepperFlash in Google Chrome, cef command line parameters set by the path.

public Form1()
{
    InitializeComponent();
    InitializeChromium();
}
 
private void InitializeChromium()
{
    ChromiumWebBrowser.OnBeforeCfxInitialize += ChromiumWebBrowser_OnBeforeCfxInitialize;
    ChromiumWebBrowser.OnBeforeCommandLineProcessing += ChromiumWebBrowser_OnBeforeCommandLineProcessing;
    ChromiumWebBrowser.Initialize();
 
    ChromiumWebBrowser wb = new ChromiumWebBrowser();
    wb.Dock = DockStyle.Fill;
    wb.Parent = this;
    wb.LoadUrl("chrome://version");
}
 
void ChromiumWebBrowser_OnBeforeCommandLineProcessing(Chromium.Event.CfxOnBeforeCommandLineProcessingEventArgs e)
{
    e.CommandLine.AppendSwitch("--disable-web-security");//关闭同源策略
    e.CommandLine.AppendSwitchWithValue("ppapi-flash-version", "18.0.0.209");//PepperFlash\manifest.json中的version
    e.CommandLine.AppendSwitchWithValue("ppapi-flash-path", "PepperFlash\\pepflashplayer.dll");
}
 
void ChromiumWebBrowser_OnBeforeCfxInitialize(Chromium.WebBrowser.Event.OnBeforeCfxInitializeEventArgs e)
{
    e.Settings.CachePath = "Session";
    e.Settings.Locale = "zh-CN";
}

Method two: the command line parameters to install a system using flash cef

void ChromiumWebBrowser_OnBeforeCommandLineProcessing(Chromium.Event.CfxOnBeforeCommandLineProcessingEventArgs e)
{
    e.CommandLine.AppendSwitch("--disable-web-security");//关闭同源策略
    e.CommandLine.AppendSwitch("--enable-system-flash");//使用系统flash
}

 

Chromium has removed support for NPAPI and consequently CEF no longer supports loading of the NPAPI Flash plugin. To support loading of the Pepper (PPAPI) Flash plugin the following implementation must be brought over from Chrome:

In the browser process:

  1. ChromeContentClient::AddPepperPlugins -- Locates the Flash plugin library. In CEF this will be implemented via CefContentClient::AddPepperPlugins.
  2. ChromeContentBrowserClientPluginsPart::DidCreatePpapiPlugin -- Creates the ChromeBrowserPepperHostFactory that is responsible for the browser side of PPAPI message routing. In CEF this will be implemented via CefContentBrowserClient::DidCreatePpapiPlugin.
  3. ChromeBrowserPepperHostFactory::CreateResourceHost -- Creates the hosts for individual pieces of Flash-related functionality (e.g. PepperFlashBrowserHost, PepperFlashClipboardMessageFilter, PepperFlashDRMHost).

In the renderer process:

  1. ChromeContentRendererClient::RenderFrameCreated -- Creates the ChromeRendererPepperHostFactory (via the per-RenderFrame PepperHelper) that is responsible for the renderer side of PPAPI message routing. In CEF this will be implemented via CefContentRendererClient::RenderFrameCreated.
  2. ChromeRendererPepperHostFactory::CreateResourceHost -- Creates the hosts for individual pieces of Flash-related functionality (e.g. PepperFlashRendererHost, PepperFlashFullscreenHost, PepperFlashMenuHost, PepperFlashFontFileHost, PepperFlashDRMRendererHost).

Reference: https://bitbucket.org/chromiumembedded/cef/issues/1586/add-pepper-flash-plugin-support

Guess you like

Origin www.cnblogs.com/88223100/p/how_to_add_flash_support_in_cef.html