C# 实现视频预览功能(附源码)

发布于:2023-04-28 ⋅ 阅读:(277) ⋅ 点赞:(0)

C# 实现视频预览功能

最近新同事在项目中遇到一个难题,如何实现本地视频的预览功能?
在这里插入图片描述

我首先想到的是利用Emgu CV 来实现此功能。

C/C++中用的是Open CV ,为了使其可以用在.net环境。对Open CV 函数进行了封装,且网上对于Emgu CV的资料比较少。为此也专门在此跟大家交流。

电脑:win10系统,
Emgu CV版本: 3.1.0.1,
开发环境:VS 2019,
一、安装Emgu CV
1、打开NuGet包管理器-浏览-搜索:emgu CV
在这里插入图片描述找到3.1.0.1版本进去安装
在这里插入图片描述安装成功后,回到项目里查看引用项是否包含引用了这些
在这里插入图片描述
完了以后可以引用命名空间进行使用了,并添加相应的控件。窗体设计如下
在这里插入图片描述

1、textbox 用于显示、记录视频文件的绝对路径。
2、button 用于openfiledialog进行打开选择文件。
3、4、numericUpDown 用于用户进行参数设置。
5、imagebox 是安装emgu CV后带的控件,其主要是显示视频的控件,其原理通俗理解为:视频是由无数张图片,按照一定序列、给其一定的间隔时间(也就是帧速率)去播放图片,就形成了我们所看到的的视频。所以imagebox其实是继承picturebox并增加一些功能进行封装的控件。所以picturebox其实也是可以用来显示视频。如果工具栏中没用出现emgu CV的控件

窗体设置好后就可以进行码了。
其中最重要的的一点就是

///打开视频文件
private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFile = new OpenFileDialog();//实例化选择文件窗口
            openFile.Filter = "视频文件|*.mp4*|所有文件|*.*";//筛选文件
            if (openFile.ShowDialog() == DialogResult.OK)
            {
                textBox1.Text = openFile.FileName;//选择的视频
                capture = new Capture(textBox1.Text);//打开视频
                framecount = (int)(capture.GetCaptureProperty(Emgu.CV.CvEnum.CapProp.FrameCount));//获取视频总帧数
                capture.ImageGrabbed += Capture_ImageGrabbed;
                capture.Start();//开始播放
                frameindex = 0;//清零
                toindex = 0;//清零
            }
        }

源代码:c#视频预览-Demo

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到