using Emgu.CV;

using System;

using System.Drawing;

using System.Threading;

using System.Windows.Forms;

namespace WindowsFormsApplication1

{

    public partial class Form1 : Form

    {

        Emgu.CV.Capture cap;

        public Form1()

        {

            InitializeComponent();

            //cap = new Emgu.CV.Capture("F:\\test.avi");

            cap = new Emgu.CV.Capture("rtsp://192.168.1.6.............");

            cap.ImageGrabbed += capture_ImageGrabbed;

            cap.Start();

        }

        private delegate void SetPicVideo(Bitmap val);//跨线程修改图片框

        private object lockObj = new object();

        private Thread SetPicVideoThread;

        Bitmap bmpVideo = null;

        private void capture_ImageGrabbed(object sender, EventArgs e)

        {

            try

            {

                Mat frame = new Mat();

                //lock (lockObj)

                {

                    if (cap != null)

                    {

                        if (!cap.Retrieve(frame))

                        {

                            frame.Dispose();

                            return;

                        }

                        if (frame.IsEmpty)

                            return;

                        bmpVideo =  frame.Bitmap;

                        SetPicVideoThread = new Thread(new ThreadStart(setPicVideo));

                        SetPicVideoThread.IsBackground = true;

                        SetPicVideoThread.Start();

                    }

                }

                //frame.Dispose();

            }

            catch (Exception ex)

            {

            }

        }

        void SetPic(Bitmap val)

        {

            if (val != null)

            {

                this.pictureBox1.Image = val;

            }

        }

        private void setPicVideo()

        {

            if (pictureBox1.InvokeRequired)

            {

                SetPicVideo d = new SetPicVideo(SetPic);

                object[] arg = new object[] { bmpVideo };//要传入的参数值

                this.Invoke(d, arg);

            }

            else

            {

                SetPic(bmpVideo);

            }

        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)

        {

            cap.Stop();

        }

    }

}

Emgu.CV 播放视频-本地文件/RTSP流的更多相关文章

  1. Emgu.CV 播放视频

    using Emgu.CV; using System; using System.Drawing; using System.Threading; using System.Windows.Form ...

  2. Emgu CV播放视频

    public partial class Form1 : Form {     Capture _capture;     public Form1()     {         Initializ ...

  3. Open CV 播放视频(2)

      演示:读取一个视频,然后播放,ESC退出.   #include "stdafx.h"   #include <opencv2/core/core.hpp>   # ...

  4. Windows平台Unity3d播放多路RTMP或RTSP流

    好多开发者在做AR.VR或者教育类产品时,苦于如何在windows平台构建一个稳定且低延迟的RTSP或者RTMP播放器,如果基于Unity3d完全重新开发一个播放器,代价大.而且周期长,不适合快速出产 ...

  5. ffmpeg处理rtmp/文件/rtsp的推流和拉流

    ffmpeg处理rtmp/文件/rtsp的推流和拉流   本demo演示了利用ffmpeg从服务器拉流或本地文件读取流,更改流url或文件类型名称发送回服务器或存到本地的作用. 由于本程序只写了3个小 ...

  6. 用vlc SDK创建一个播放视频文件和RTSP流视频的Demo

    #include <stdio.h> #include <tchar.h> #include <time.h> #include <windows.h> ...

  7. javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像帧保存),实现rtsp/rtmp/本地文件转发到rtmp流媒体服务器(基于javaCV-FFMPEG)

    javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...

  8. web网页中使用vlc插件播放相机rtsp流视频

    可参考: 使用vlc播放器做rtsp服务器 使用vlc播放器播放rtsp视频 使用vlc进行二次开发做自己的播放器 vlc功能还是很强大的,有很多的现成的二次开发接口,不需配置太多即可轻松做客户端播放 ...

  9. [工具]利用EasyRTSPClient工具检查摄像机RTSP流不能播放原因以及排查音视频数据无法播放问题

    出现问题 我们在做流媒体开发的过程中,进程会出现摄像机RTSP流莫名其妙无法播放的问题,而我们常用的vlc经常是直接弹出一个无法播放的提示框就完事了,没有说明出错的原因,或者在vlc的消息里面能看到日 ...

随机推荐

  1. SOJ 1685:chopsticks(dp)

    题目链接 说实话挺喜欢soj的界面,简简单单,没有多余的东西hhh(但是简单到连内存限制,时间限制都看不到了. 题意是有个“奇葩”的主人公,吃饭要用三根筷子.两根短的一根长的. 现在给你n根筷子,要在 ...

  2. P2123 皇后游戏

    题目背景 还记得 NOIP 2012 提高组 Day1 的国王游戏吗?时光飞逝,光阴荏苒,两年 过去了.国王游戏早已过时,如今已被皇后游戏取代,请你来解决类似于国王游 戏的另一个问题. 题目描述 皇后 ...

  3. 基于 vue+vue-router+vuex+axios+koa+koa-router 本地开发全栈项目

    因为毕业设计要做基于Node服务器的项目,所以我就想着用刚学的vue作为前端开发框架,vue作为Vue.js应用程序的状态管理模式+库,axios基于promise用于浏览器和node.js的http ...

  4. python 模块之-json

    python 模块json import json x="[null,true,false,1]" print(json.loads(x))   #---------------- ...

  5. Codeforces Round #415 Div. 1

    A:考虑每对最大值最小值的贡献即可. #include<iostream> #include<cstdio> #include<cmath> #include< ...

  6. 微信小程序——使用vue构建小程序【外传】

    文档 http://mpvue.com/mpvue/ 根据文档构建完成的页面如下 更多的,还要继续看下文档~

  7. Android 修改 Menu字体颜色

    转载:http://blog.csdn.net/jayyuz/article/details/55260996 @Override public boolean onCreateOptionsMenu ...

  8. BZOJ2809 dispatching 【可并堆】

    题目分析: yy一下就知道了,合并用可并堆少个log. 代码: #include<bits/stdc++.h> using namespace std; ; int n,m; int b[ ...

  9. [ZJOI2009]函数 题解

    题目链接:[ZJOI2009]函数 对于$n=1$的情况,直接输出$1$ 对于$n>1$的情况,由于我们可以将图上下反转,所以第$k$层的情况可以被转成第$n-k+1$层 规律自己打个表可以推出 ...

  10. AGC030 简要题解

    A - Poisonous Cookies 题意 有\(A\)个能解毒的普通饼干,\(B\)个能解毒的美味饼干,\(C\)个有毒的美味饼干,求最多能吃多少个美味饼干,每次吃完有毒的饼干后要解毒后才能继 ...