深夜还在打代码(而且不止一天)的我,必须来报复一下自己的智商,不然许多的怒气和无奈都难以独自承受。

作为非计算机专业的我,对代码有着极其无法言说的热情,但是这件事是我大二才发现的,ps:大学之前几乎没玩过电脑(家长管得不是一般的严,玩电脑跟抢银行同罪,所以自认孝顺的我是不会踏入禁区的)。

大学期间为了做自己喜欢的事,放弃了很多,也不顾别人的眼光。起初是因为还不懂事,也没多考虑,觉得喜欢就踏入了代码的世界。后来是因为觉得跟团队的其他人比较,自己真的很没用,所以发誓一定要好好学,不要拖后退。再后来,是因为,都已经坚持了这么久,选择了它,放弃了很多别人觉得更值得的事,所以不要放弃,因为这样真的会很伤心。再后来的后来,是因为团队,不想团队大家一起努力坚持了这么久的东西,就这样白白让给别人,我可以什么都不要,但我不能眼睁睁看着团队的心血,团队大家一起熬的那么多夜,一起花的那么多时间和精力,那么多的舍弃,最后竟然换来的是遗憾的放手,想着那些点点滴滴我的心竟然也会温暖,但更多的是痛和心疼!真是对自己的顽固无语了。

生活总是在给我们无数个巴掌,不是吗?!更可恶的是,最后,你会发现这都是你自找的,没人逼你。就像恋爱,并不是他有多优秀,而是你自己喜欢,毫无理由,不求回报,不撞南墙不回头,最后才发现要对自己和朋友好一点,因为毕竟只有你自己和最好的朋友才最不会背叛和放弃自己(只要你自己不放弃,永远乐观向上)。

好吧,不多说了,抱怨一下,心情好多了。希望代码对大家有一点帮助,不要像我这样头疼好多天。

总之我最近做的一个项目,由于涉及这方面,而我在网站发了100分的问题都没人解答,作为看不太懂英文的我真的快被自己气死了。其他算法部分难或者花时间多也就算了,实现一个播放视频,并且将当前帧给后面处理,这个简单的功能就花了我3天,还郁闷了一天。上代码!

首先,我用的是VS2010(也可以是VS2008等版本),c#,emgu库(这里没用到,需要进行图像处理的朋友可以自行配置,具体方法我的另一篇博客里面有)。

1,新建文档,选择窗体程序。。。。

2,添加一个button控件和imageBox控件,至于命名随意,如果跟本文不一样要记得把程序也改一下。本文的是分别命名为button1和captureImageBox1。

3,

public Capture capture;

private void button1_Click(object sender, EventArgs e)//获取源视频并播放
        {
            if (button1.Text == "选择文件播放")
            {//开启播放模式
                OpenFileDialog openFileDialog1 = new OpenFileDialog();
                openFileDialog1.Filter = "AVI文件|*.avi|RMVB文件|*.rmvb|WMV文件|*.wmv|MKV文件|*.mkv|所有文件|*.*";
                if (openFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    Application.Idle += new EventHandler(ProcessFrame1);
                    capture = new Capture(openFileDialog1.FileName);
                    VideoFps1 = (int)CvInvoke.cvGetCaptureProperty(capture,           Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FPS);
                    button1.Text = "停止";
                   captureImageBox1.Image = null;
                }
            }
            else
            {
                capture.Dispose();
                Application.Idle -= new EventHandler(ProcessFrame1);
                button1.Text = "播放";
            }
        }

private void ProcessFrame1(object sender, EventArgs arg)
        {
            // Image imgCapture = null;
            if (button1.Text != "播放")//正在播放视频
            {
                Image<Bgr, Byte> frame = capture.QueryFrame();

if (frame != null)
                {
                    //为使播放顺畅,添加以下延时
                    System.Threading.Thread.Sleep((int)(1000.0 / VideoFps1 - 5));
                    captureImageBox1.Image = frame;

}
                else
                {
                    button1.Text = "播放";
                    captureImageBox1.Image = null;
                }
            }
}

好吧,我把我的引用文件也贴一下,有很多其实是不用的,不过我自己的项目里需要。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.IO;
using System.Runtime.InteropServices;//Marshal类别,必须要引用这个
using Emgu.CV;
using Emgu.CV.Structure;
 using Emgu.Util;
using Emgu.CV.CvEnum;
using Emgu.CV.ML;
using Emgu.CV.UI;
using ZedGraph;
using DirectShowLib;
using System.Diagnostics;

用imagebox控件实现多种视频播放功能,并且帧图片可供后续处理相关推荐

  1. Android之通过VideoView控件播放一个视频出现的问题以及我的解决办法

    1.在Android模拟器中是可以播放视频的,可播放视频的格式为3gp.mp4.mkv等,其中我们使用VideoView控件播放一个视频时,部署到模拟器上,往往会弹出一个对话框,如下图所示: 我认为出 ...

  2. c#里什么控件可以播放视频(avi)?怎么实现

    Q: c#里什么控件可以播放视频(avi)?怎么实现 A: DirectShow MediaPlayer in C# 参考http://www.codeproject.com/cs/media/dir ...

  3. 16、控件使用之图标动画显示和图片动画显示

    控件使用之图标动画显示和图片动画显示 1.用到的控件 2.添加控件 2.1.添加[动画图标显示]控件 2.2.添加[增量调节]控件 2.3.添加[动画图片显示]控件 3.保存工程及生成文件 4.下载文 ...

  4. php截取视频第一帧为图片,把视频变成一帧一帧的图片(ae怎么把视频变成单帧) 视频截图视频画面每帧图片截取...

    AE怎么把视频变成单帧?这是小编今天要与大家讨论及解决的一个问题.在视频后期处理中,有时为实现某个场景效果,需要把视频中的某帧变成静态帧图片:或者需要视频截图视频画面每帧图片截取出来,把视频变成一帧一 ...

  5. 查看视频的IPB帧,IPB帧编码顺序,视频的第一帧图片

    > 如何查看视频的IPB帧 Android, 如何获取视频的每一帧的信息 视频 = 图片.图像(摄像头) + 声音(麦克风) : 谷歌官方给我们的提供的api接口类:MediaMetadataR ...

  6. 如何获取网络视频(或者说后台返回视频URL)第一帧图片以及获取本地视频的第一帧图片

    在项目开发的时候,有可能会有这样的一种需求:有一段视频需要展示给用户,在界面上先展示视频上的某一帧图片,用户点击的时候再去获取视频资源进行播放.这时,服务器会先给我们返回视频的url,这个时候就需要通 ...

  7. cv2读视频文件取帧图片

    希望通过cv2.VideoCapture类截取视频帧图片,期间只能截取视频的每帧图片,不能跳帧截取图片,原来是在读取视频帧的时候没有写入ret, frame = cv2.VideoCapture.re ...

  8. 【WPF】使用控件MediaElement播放视频

    需求是点击按钮后,弹出弹窗播放视频.按钮的点击事件如下. public void ShowVideo() {Window window = new Window();window.Width = 80 ...

  9. 【Axure篇】(二)Axure RP9日期控件制作(多种格式)

    第一次画原型图的时候发现元件居然没有日期控件,原来需要自己画:看到别人的以为很复杂,自己网上查了一遍发现原来还很简单 参考链接:Axure日期控件 - 简书 (jianshu.com) 1.拖拽&qu ...

最新文章

  1. 子组件调用父组件方法_vue父子组件通信以及非父子组件通信的方法
  2. python循环语句-python循环语句(第十节)
  3. margin 0 auto 什么意思
  4. 天津市电子计算机职业中专 概况,天津市电子计算机职业中专 .pptx
  5. ELF 动态链接 so的动态符号表(.dynsym)
  6. 哈哈机器人送到冰雪小镇_从小镇到上海:两代人的接力洄游 | 活动回顾
  7. .net mvc actionresult 返回字符串_Spring 框架基础(06):Mvc架构模式简介,执行流程详解
  8. oracle查询表字段横向排序,sql 查询 - 横着走的螃蟹 - OSCHINA - 中文开源技术交流社区...
  9. Hpdl80服务器硬件驱动,hpe proliant dl80 gen9服务器用户指南.pdf
  10. Python选择结构中多条件测试的简化写法
  11. ldap mysql ubuntu_ubuntu 安装mysql-python和 python-ldap,navicate 问题
  12. compser 执行命令提示do not run composer as root/super !
  13. cordova打开外部链接_企业网盘的分享链接功能 这种的你一定没见过
  14. linux 权限控制管理,linux —— 学习笔记(用户管理与权限控制)(示例代码)
  15. 虚拟机下载-下载windows镜像
  16. 开启并定制 Apache 显示目录索引样式
  17. (Spline)三次样条求解
  18. Spring的回炉重造
  19. 读吴军老师的《浪潮之巅》总结
  20. 手把手教你玩转谷歌TensorFlow

热门文章

  1. T460/s 安装Sierra 10.12.2 成功分享……
  2. 电气专业学校排名全国计算机专业学校排名,2021中国电气工程及其自动化专业大学排名 最好的高校排行榜...
  3. CRM 365资源管理器 V1.0 发布
  4. 阿里云突发性能实例t5详解
  5. 如何解决微信小程序用户高频率触发点击事件?
  6. [Android开发] app在华为手机的应用市场和安装时候显示未兼容android7.0
  7. java前端如何播放rtsp流_前端怎么播放RTMP、RTSP、HTTP协议 的流媒体资源?
  8. php 用excel 批量导入数据
  9. 位运算(按位与、按位或、异或)
  10. php cst时间,时区缩写 UTC, CST, GMT, CEST 以及转换(示例代码)