Wpf完美嵌入摄像头一
Wpf如何完美嵌入摄像头
写在前面
简单的东西不要复杂化,高手绕道,钥匙君分享技巧!
本篇主要介绍通过嵌入浏览器的方式访问摄像头,以及嵌入后各种常见问题,后面文章依次讲解更多方式嵌入,欢迎关注点赞支持!
开炮!开炮!
1、先测一下摄像头
直接一根网线一端接到电脑一端接摄像头,打开浏览器输入摄像头ip可直接访问到摄像头,证明硬件没问题,不同摄像头操作和画面可能不一样
2、正确引用CefSharp包
可以看到默认的版本都是最新的版本,最新的版本可能不支持网页视频的播放,如果遇到这个问题请选择88.2.90版本,然后按下一步操作
选择88.2.90版本后,在解决方案文件夹的packages下分别替换掉libcef.dll
附上这个dll的下载地址
https://download.csdn.net/download/vitomian/87512769
找到解决方案文件夹中的packages\cef.redist.x64.88.2.9\CEF文件夹中,将上述下载的x64文件夹下的libcef.dll替换
同理,找到解决方案文件夹中的packages\cef.redist.x86.88.2.9\CEF,将上述下载的x86文件夹下的libcef.dll替换
替换完成后务必重新生成解决方案!!
3、直接上MainWindow.xaml代码
剩下就是代码了,前端极其简单,就一个名字自己定义的Grid控件,这里叫SoulkeyGrid
<Window x:Class="Demo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Demo"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid x:Name="SoulkeyGrid">
</Grid>
</Window>
3、直接上MainWindow.xaml.cs代码
后端句句给你注释了,别说看不懂啊…
namespace Demo
{
public partial class MainWindow : Window
{
public MainWindow()
{
//这句还要注释?
InitializeComponent();
//这里自定义了一个方法,主要用于初始化浏览器配置
InitializeCefSharp();
}
private void InitializeCefSharp()
{
//实例化一个Cef设置类
var settings = new CefSettings();
//调用初始化函数
//需要注意的是必须在主应用程序线程(通常是UI线程)上调用Initialize和Shutdown。如果在不同的线程上调用它们,应用程序将挂起。
Cef.Initialize(settings, performDependencyCheck: false, browserProcessHandler: null);
//通过实例化一个browser来访问
ChromiumWebBrowser browser = new ChromiumWebBrowser("https://www.bilibili.com/video/av554890701/?vd_source=998270bb6676960b85d15a8c120673d8");//这里是测试网页视频是否能正确播放,确认无误后输入你的摄像头ip
//SoulkeyGrid是MainWindow.xaml前端定义的一个Grid名称叫SoulkeyGrid
SoulkeyGrid.Children.Add(browser);
}
}
}
这里是随便打开了某视频网站的网址,确认能正常播放视频
接下来直接将这句的url改成第一步测试摄像头的网页地址即可
ChromiumWebBrowser browser = new ChromiumWebBrowser("摄像头的url");//这里是测试网页视频是否能正确播放,确认无误后输入你的摄像头ip
4、常见问题
1、首先就是摄像头地址能在窗体中访问,但是没有flash或者不支持视频播放,遇到这个问题请翻阅本文第2点
2、有些摄像头网址它是有安全性认证的,那么对于Cef如何跳过安全性认证呢,其实只需要给上述setting多添加两句设置就行了
settings.CefCommandLineArgs.Add("--ignore-urlfetcher-cert-requests", "1");
settings.CefCommandLineArgs.Add("--ignore-certificate-errors", "1");
这样完整代码如下
namespace Demo
{
public partial class MainWindow : Window
{
public MainWindow()
{
//这句还要注释?
InitializeComponent();
//这里自定义了一个方法,主要用于初始化浏览器配置
InitializeCefSharp();
}
[MethodImpl(MethodImplOptions.NoInlining)]
private void InitializeCefSharp()
{
//实例化一个Cef设置类
var settings = new CefSettings();
//跳过安全证书认证
settings.CefCommandLineArgs.Add("--ignore-urlfetcher-cert-requests", "1");
settings.CefCommandLineArgs.Add("--ignore-certificate-errors", "1");
//调用初始化函数
//需要注意的是必须在主应用程序线程(通常是UI线程)上调用Initialize和Shutdown。如果在不同的线程上调用它们,应用程序将挂起。
Cef.Initialize(settings, performDependencyCheck: false, browserProcessHandler: null);
//通过实例化一个browser来访问
ChromiumWebBrowser browser = new ChromiumWebBrowser("https://www.bilibili.com/video/av554890701/?vd_source=998270bb6676960b85d15a8c120673d8");//这里输入你的摄像头ip
//ChromiumWebBrowser browser = new ChromiumWebBrowser("摄像头的url");//如果是局域网直接这里输入你的摄像头ip
//SoulkeyGrid是MainWindow.xaml前端定义的一个Grid名称叫SoulkeyGrid
SoulkeyGrid.Children.Add(browser);
}
}
}
还不会?附上全文Demo源码,请笑纳
下一篇将介绍如何直接通过SDK去获取摄像头画面
如果确实帮到您了感谢关注点赞支持,谢谢!
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhggckkj
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13