【C#】Winform+CefSharp 播放MP3 MP4 以及flash

週末加個班,懟了一項新需求,只是沒想到轉了產品又來搞研發,那就好好搞吧。

公司要做一個屏幕管控系統,需要技術用winform +cefsharp 播放MP3 MP4 以及flash

網上看了很多,不管是什麼有償,50積分啊,總體看來還是有解決方式的,下面說一下大概思路然後再分享具體步驟

首先大家都知道 cefsharp 是不支持MP3MP4的播放的,所以 要對cefsharp進行重新打包,具體有多麻煩,網上一看就一大堆

解決辦法:用大佬二次打包出來的各種 cef_binary_3.2623.1401包

下面進入正題:

首先VS上下載NuGet庫

下載完以後 右鍵點擊項目 選擇NuGet庫

搜索cefsharp就可以收到 然後下載這四個鬼

讓你下載完以後 你的目錄下多了packages 

因爲我是64位機器所以 我選擇64位的包

 

 

現在基本上就已經完成一半瞭然後

創建一個winform 項目 

在默認窗口腳本Form1中

using CefSharp;
using CefSharp.WinForms;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace lmqBrowser2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
             CefExample.Init();//初始化內核
        }

        public static ChromiumWebBrowser browser;
        private void Form1_Load(object sender, EventArgs e)
        {
            //            if (this.WindowState == FormWindowState.Maximized)   //如果當前的窗體是最大化
            //            {
            //                this.FormBorderStyle = FormBorderStyle.Fixed3D; //固定的三圍邊框
            //                this.WindowState = FormWindowState.Normal;      //把當前窗體還原默認大小
            //            }
            //            else
            //            {
            //this.FormBorderStyle = FormBorderStyle.None;    //將該窗體的邊框設置爲無
            //this.WindowState = FormWindowState.Maximized;   //將該窗體設置爲最大
            //            }
            //this.TopMost = true; //置頂

            InitBrowser();//啓動瀏覽器
        }

        public void InitBrowser()
        {
            //var setting = new CefSettings();
            /*
            setting.Locale = "zh-CN";
            //緩存路徑
            setting.CachePath = "C:\\temp\\BrowserCache";
            //瀏覽器引擎的語言
            setting.AcceptLanguageList = "zh-CN,zh;q=0.8";
            setting.LocalesDirPath = "C:\\temp\\localeDir";
            //日誌文件
            setting.LogFile = "C:\\temp\\LogData";
            setting.PersistSessionCookies = true;
            setting.UserAgent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36";
            setting.UserDataPath = "C:\\temp\\userData";
            //設置flash版本
            */
            //setting.CefCommandLineArgs.Add("ppapi-flash-path", System.AppDomain.CurrentDomain.BaseDirectory + "plugins\\pepflashplayer.dll"); //指定的flash版本,不要使用系統安裝的flash版本
            //setting.CefCommandLineArgs.Add("ppapi-flash-version", "32_29_0_0_113");


            //setting.CefCommandLineArgs.Add("ppapi-flash-version", "27_0_0_130");//PepperFlash\manifest.json中的version
            //setting.CefCommandLineArgs.Add("ppapi-flash-path", "plugins\\pepflashplayer.dll");

            //CefSharp.Cef.Initialize(setting);


            //browser = new ChromiumWebBrowser("chrome://version");//"http://192.168.56.1:8083/html/14/index.html"
            //browser = new ChromiumWebBrowser("https://www.bilibili.com/video/av26238012/?spm_id_from=333.334.chief_recommend.21");
            //browser = new ChromiumWebBrowser("http://58.87.107.253/testfintech/56dddf2de99ea8e91d097c107df9ddf7.mp4");

            browser = new ChromiumWebBrowser("http://ssfw.njfy.gov.cn/ssfwzx/ext/flash/flash.jsp");
            //browser.Load("chrome://version");
            this.Controls.Add(browser);
            browser.Dock = DockStyle.Fill;
        }
        
    }
}

在Form1.Designer.cs中

namespace lmqBrowser2
{
    partial class Form1
    {
        /// <summary>
        /// 必需的設計器變量。
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// 清理所有正在使用的資源。
        /// </summary>
        /// <param name="disposing">如果應釋放託管資源,爲 true;否則爲 false。</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows 窗體設計器生成的代碼

        /// <summary>
        /// 設計器支持所需的方法 - 不要修改
        /// 使用代碼編輯器修改此方法的內容。
        /// </summary>
        private void InitializeComponent()
        {
            this.SuspendLayout();
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(284, 262);
            this.Name = "Form1";
            this.Text = "Form1";
            this.Load += new System.EventHandler(this.Form1_Load);
            this.ResumeLayout(false);

        }

        #endregion
    }
}

還有一個是支持flash 的腳本 CefExample

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CefSharp;

namespace lmqBrowser2
{
    public static class CefExample
    {
        public const string DefaultUrl = "http://www.google.com/";
        private static readonly bool DebuggingSubProcess = Debugger.IsAttached;

        public static void Init()
        {
            var settings = new CefSettings();
            settings.RemoteDebuggingPort = 8088;
            settings.Locale = "zh-CN";
            settings.CefCommandLineArgs.Add("ppapi-flash-path", System.AppDomain.CurrentDomain.BaseDirectory + "pepflashplayer.dll"); //指定flash的版本,不使用系統安裝的flash版本
            settings.CefCommandLineArgs.Add("ppapi-flash-version", "29.0.0.171");
            settings.CefCommandLineArgs.Add("enable-media-stream", "enable-media-stream");
            settings.IgnoreCertificateErrors = true;
            settings.LogSeverity = LogSeverity.Verbose;

            if (DebuggingSubProcess)
            {
                //var architecture = Environment.Is64BitProcess ? "x64" : "x86";
                //settings.BrowserSubprocessPath = "..\\..\\..\\..\\CefSharp.BrowserSubprocess\\bin\\" + architecture + "\\Debug\\CefSharp.BrowserSubprocess.exe";
            }

            //settings.RegisterScheme(new CefCustomScheme
            //{
            //    SchemeName = CefSharpSchemeHandlerFactory.SchemeName,
            //    SchemeHandlerFactory = new CefSharpSchemeHandlerFactory()
            //});

            if (!Cef.Initialize(settings))
            {
                if (Environment.GetCommandLineArgs().Contains("--type=renderer"))
                {
                    Environment.Exit(0);
                }
                else
                {
                    return;
                }
            }
        }
    }
}

 

因爲是一個測試所以,program中都是默認,沒有發生任何改變

先彆着急編譯,下面是項目中一些細節,cefsharp 不支持anycpu 所以只有32位和64位 這要先選好

最後還有一點 爲了支持flash 要把 pepflashplayer.dll 放到 你的當前項目\bin\x64\Debug 下

最後我附上 大佬們的二次編譯的包 

以及 pepflashplayer.dll

pepflashplayer.dll下載地址:https://download.csdn.net/download/ldy597321444/10821710

64位包:https://download.csdn.net/download/ldy597321444/10821756

32位包:https://download.csdn.net/download/ldy597321444/10821757

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章