• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Wpf完美嵌入摄像头一

武飞扬头像
灵魂钥匙
帮助1

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
系列文章
更多 icon
同类精品
更多 icon
继续加载