热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

周末加个班,怼了一项新需求,只是没想到转了产品又来搞研发,那就好好搞吧。公司要做一个屏幕管控系统,需要技术用winform

周末加个班,怼了一项新需求,只是没想到转了产品又来搞研发,那就好好搞吧。

公司要做一个屏幕管控系统,需要技术用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{///

/// 必需的设计器变量。/// private System.ComponentModel.IContainer components = null;/// /// 清理所有正在使用的资源。/// /// 如果应释放托管资源,为 true;否则为 false。protected override void Dispose(bool disposing){if (disposing && (components != null)){components.Dispose();}base.Dispose(disposing);}#region Windows 窗体设计器生成的代码/// /// 设计器支持所需的方法 - 不要修改/// 使用代码编辑器修改此方法的内容。/// 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

 


推荐阅读
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Todayatworksomeonetriedtoconvincemethat:今天在工作中有人试图说服我:{$obj->getTableInfo()}isfine ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • DSP中cmd文件的命令文件组成及其作用
    本文介绍了DSP中cmd文件的命令文件的组成和作用,包括链接器配置文件的存放链接器配置信息、命令文件的组成、MEMORY和SECTIONS两个伪指令的使用、CMD分配ROM和RAM空间的目的以及MEMORY指定芯片的ROM和RAM大小和划分区间的方法。同时强调了根据不同芯片进行修改的必要性,以适应不同芯片的存储用户程序的需求。 ... [详细]
  • 本文详细介绍了使用C#实现Word模版打印的方案。包括添加COM引用、新建Word操作类、开启Word进程、加载模版文件等步骤。通过该方案可以实现C#对Word文档的打印功能。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • 本文介绍了在Ubuntu下制作deb安装包及离线安装包的方法,通过备份/var/cache/apt/archives文件夹中的安装包,并建立包列表及依赖信息文件,添加本地源,更新源列表,可以在没有网络的情况下更新系统。同时提供了命令示例和资源下载链接。 ... [详细]
author-avatar
我是王美慧
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有