使用EmguCv播放指定视频

用Capture来加载一个视频。

用GetCaptureProperty函数可以获取这个视频的各种属性。

然后用Application.Idle来连续的显示视频中的帧(显示出一帧了,程序进入空闲,就继续加载下一帧)

由于视频中的帧太多,.net的垃圾回收机制赶不上,就使用GC.Collect();来强制回收垃圾,可以把程序的内存占用从700MB降到100MB左右

public partial class Form1 : Form
    {
        Capture cap;
        int fps;
        public Form1()
        {
            InitializeComponent();
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "MP4文件|*.mp4|AVI文件|*.avi|RMVB文件|*.rmvb|WMV文件|*.wmv|MKV文件|*.mkv|所有文件|*.*";

            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                Application.Idle += Application_Idle;
                cap = new Capture(openFileDialog.FileName);
                fps =(int) cap.GetCaptureProperty(CapProp.Fps);
            }

        }

        private void Application_Idle(object sender, EventArgs e)
        {
            Mat a = cap.QueryFrame();
            if (a != null)
            {
                System.Threading.Thread.Sleep((int)(1000.0 / fps - 5));
                imageBox1.Image = a;

                GC.Collect();
            }

        }

    }

效果图:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-06 08:19:11

使用EmguCv播放指定视频的相关文章

浅入浅出EmguCv(三)EmguCv打开指定视频

打开视频的思路跟打开图片的思路是一样的,只不过视频是由一帧帧图片组成,因此,打开视频的处理程序有一个连续的获取图片并逐帧显示的处理过程.GUI同<浅入浅出EmguCv(二)EmguCv打开指定图片>一样,只不过处理程序编程如下所示: 1 /// <summary> 2 /// 点击按钮打开指定图片 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <pa

H5的新应用-指定视频的播放进度

———————————————————————————————— <script type="text/javascript">                        //播放/暂停,采用同一个方法实现            function playPause(){                 //获取视频DOM元素                var myVideo = document.getElementById("myVideo"

播放本地视频

1.播放本地视频 PlayLocationVideoInSDActivity.java 关键点1: String path = "/sdcard/TZH.mp4"; //String path2 = ""+Environment.getExternalStorageDirectory()+"/TZH.mp4";//等价上面的地址 关键点2:控制进度条 package com.example.videoplaydemo; import androi

ios网络学习------9 播放网络视频

IOS提供了叫做MPMoviePlayerController  MPMoviePlayerViewController两个类,可以轻松用来实现视频播放.MPMoviePlayerViewController只能全屏播放视频. #import "MainViewController.h" #import <MediaPlayer/MediaPlayer.h> @interface MainViewController () //视频播放器 @property (strong

播放一个视频并用滚动条控制进度-OpenCV应用学习笔记二

今天我们来做个有趣的程序实现:利用OpenCV读取本地文件夹的视频文件,并且在窗口中创建拖动控制条来显示并且控制视频文件的读取进度. 此程序调试花费了笔者近一天时间,其实大体程序都已经很快写出,结果执行时却出现拖动条不能控制视频读取进度现象,结果发现是”一个大小写字母引发的血案“——在创建拖动条时命名为:Position,但是在设置拖动条的视频位置时却疏忽写为:position.为此笔者反复了N遍,由此可见程序的严格性,以及“搬砖码垛”时专注的重要性. 同样在附上程序之前我们有必要对程序中出现的

VLC播放RTSP视频延迟问题 (转)

原帖地址:http://blog.chinaunix.net/uid-26611383-id-3755283.html ================================================================================ 之前写过一篇关于在Linux平台上编译android平台上VLC播放器源代码的文章,vlc这款播放器非常优秀而且是开源的,它的核心是开源视频编解码库ffmpeg.而且这款播放器还支持RTSP协议,这个主要是用开源的li

OpenCV视频读取播放,视频转换为图片

转载请注明出处!!! http://blog.csdn.net/zhonghuan1992 OpenCV视频读取播放,视频转换为图片 介绍几个有关视频读取的函数: VideoCapture::VideoCapture VideoCapture能够从文件里或者摄像头中读取视频,这是提供给C++的接口的.C的接口是CvCapture结构.        <span style="white-space:pre"> </span>C++: VideoCapture::

Android 使用PLDroidPlayer播放网络视频 根据视频角度自动旋转

最近因为项目需求 ,需要播放网络视频 ,于是乎 研究了一番 ,说说我遇到的那些坑 现在市面上有几个比较主流好用的第三方框架 Vitamio ( 体积比较大,有商业化风险 github:https://github.com/yixia/VitamioBundle/) ijkplayer(B站下开源的框架 体积大 配置环境比较麻烦 github:https://github.com/Bilibili/ijkplayer ) PLDroidPlayer(七牛根据ijkplayer二次开发的 定制简单

Android 使用PLDroidPlayer播放网络视频 依据视频角度自己主动旋转

近期由于项目需求 .须要播放网络视频 .于是乎 研究了一番 ,说说我遇到的那些坑 如今市面上有几个比較主流好用的第三方框架 Vitamio ( 体积比較大,有商业化风险 github:https://github.com/yixia/VitamioBundle/) ijkplayer(B站下开源的框架 体积大 配置环境比較麻烦 github:https://github.com/Bilibili/ijkplayer ) PLDroidPlayer(七牛依据ijkplayer二次开发的 定制简单