OpenCV是大名鼎鼎的视觉处理库,其对应的c#版本为Emgu.CV。本人采用Emgu.CV开发了一款视频播放软件,可对本地视频文件和rstp在线视频流播放,还具有对视频局部区域放大功能。虽然功能比较简陋,但是已具备了视频播放的基本功能。Emgu.CV虽然对很多功能有了很好的封装,但在使用过程中还会遇到不少难点。本人对视频播放功能做了进一步封装,使用起来更加简单。

点击下载程序

程序界面

 开发要点

视频播放入口函数

 VideoCapture _capture = new VideoCapture(url);
_capture.ImageGrabbed += _capture_ImageGrabbed; private void _capture_ImageGrabbed(object sender, EventArgs e)
{
try
{
while (true)
{
if (!CanCaptureImage())
{
Thread.Sleep(1);
continue;
} Mat m = new Mat();
bool read = _capture.Retrieve(m, 0);
if (!read)
{
return;
}
_currentFrameIndex++; CaptureImageInfo imageInfo = new CaptureImageInfo();
imageInfo.RgbData = m.GetRawData(); imageInfo.ImageWidth = m.Width;
imageInfo.ImageHeight = m.Height;
imageInfo.TimeSpan = TimeSpan.FromSeconds(_currentFrameIndex / _videoFps); EventImageCapture?.Invoke(this, imageInfo);
return;
}
}
catch (Exception ex)
{
Debug.Assert(false, ex.Message);
}
}

需要在回调函数中获取图像rgb数据流,将这些数据流转换成图像显示就可以了。

看似简单其实不然,以下几点需要注意:

1 如何控制视频播放速度

2 如何高效的将rgb数据流转换成图像。

3 有些视频宽度不是4字节的倍数,转换成图像时需要做预处理。

4 如何高效的抠图,实现视频局部放大功能。

本人经过摸索,完美的解决这些问题;并对相关功能封装成了控件,易于重复利用。

使用Emgu.CV开发视频播放器简述的更多相关文章

  1. C# 下搭建最新版OpenCV(Emgu CV)开发环境

    既然是"最新版" 首先当然是去sf找安装包: https://sourceforge.net/projects/emgucv/files/emgucv/ 或着去github主页上c ...

  2. Vitamio视频播放器

    前言 虽然Android已经内置了VideoView组件和MediaPlayer类来支持开发视频播放器,但支持格式.性能等各方面都十分有限,这里与大家一起利用免费的Vitamio来打造属于自己的And ...

  3. Android本地视频播放器开发--视频解码

    在上一章Android本地视频播放器开发--SDL编译编译中编译出sdl的支持库,当时我们使用的2.0,但是有些api被更改了,所以在以下的使用者中我们使用SDL1.3的库,这个库我会传上源码以及编译 ...

  4. 怎样在Android本地视频播放器开发

    在上一章Android本地视频播放器开发--SDL编译编译中编译出sdl的支持库,当时我们使用的2.0,但是有些api被更改了,所以在以下的使用者中我们使用SDL1.3的库,这个库我会传上源码以及编译 ...

  5. Android开发学习之路--基于vitamio的视频播放器(二)

      终于把该忙的事情都忙得差不多了,接下来又可以开始good good study,day day up了.在Android开发学习之路–基于vitamio的视频播放器(一)中,主要讲了播放器的界面的 ...

  6. 安卓TV开发(四) 实现主流智能TV视频播放器UI

    前言:移动智能设备的发展,推动了安卓另一个领域,包括智能电视和智能家居,以及可穿戴设备的大量使用,但是这些设备上的开发并不是和传统手机开发一样,特别是焦点控制和用户操作体验上有很大的区别,本系列博文主 ...

  7. React Native实战系列教程之自定义原生UI组件和VideoView视频播放器开发

    React Native实战系列教程之自定义原生UI组件和VideoView视频播放器开发   2016/09/23 |  React Native技术文章 |  Sky丶清|  4 条评论 |  1 ...

  8. ios开发视频播放后台下载功能实现 :1,ios播放视频 ,包含基于AVPlayer播放器,2,实现下载,iOS后台下载(多任务同时下载,单任务下载,下载进度,下载百分比,文件大小,下载状态)(真机调试功能正常)

    ABBPlayerKit ios开发视频播放后台下载功能实现 : 代码下载地址:https://github.com/niexiaobo/ABBPlayerKit github资料学习和下载地址:ht ...

  9. 你是否有一个梦想?用JavaScript[vue.js、react.js......]开发一款自定义配置视频播放器

    前言沉寂了一周了,打算把这几天的结果呈现给大家.这几天抽空就一直在搞一个自定义视频播放器,为什么会有如此想法?是因为之前看一些学习视频网站时,看到它们做的视频播放器非常Nice!于是,就打算抽空开发一 ...

  10. 【Harmony OS】【ArkUI】ets开发 简易视频播放器

    ​前言:这一次我们来使用ets的Swiper组件.List组件和Video组件制作一个简易的视频播放器.本篇是以HarmonyOS官网的codelab简易视频播放器(eTS)为基础进行编写.本篇最主要 ...

随机推荐

  1. 史上最全 Terraform 入门教程,助你无坑入门!

    在云计算的浪潮中,基础设施管理变得越来越复杂.如何高效地配置和管理云资源,成为了每个开发者和运维工程师必须面对的挑战.Terraform,作为一种强大的基础设施即代码(IaC)工具,为我们提供了一种简 ...

  2. Maven的顶级功能——依赖管理

    依赖管理 依赖管理解决的问题 我们学完一个语言的语法之后,我们应该都能知道函数的引用或者类的创建等了.为了方便管理,我们就会把一些特定的功能实现写在一个代码文件中,我们只需要使用的时候导入就行了,这样 ...

  3. win10本地客户端配置SSL并使用MQTTX

    1.     本地下载Openssl(默认安装即可,最后一个将打赏取消勾选) Win32/Win64 OpenSSL Installer for Windows - Shining Light Pro ...

  4. 支持多语言、多商店的商城,.Net7 + EF7领域驱动设计架构

    推荐一个跨平台.模块化.可扩展且超快速的开源一体化电子商务平台. 01项目简介 Smartstore 支持桌面和移动平台.多语言.多商店.多货币的商城,并支持SEO优化,支持无限数量的产品和类别.报表 ...

  5. KindleVocab 教程,Kindle导出查词记录成文本文档,Kindle导出查询单词记录导入Anki

    程序功能 因本人使用Kindle Mate导出觉得复杂,特意写了个自用的导出程序(有linux版本和win两个版本). 所以 KindleVocab 只有一个作用:导出Kindle查询过的生词和生词所 ...

  6. 2023NOIP A层联测26 T3 tour

    2023NOIP A层联测26 T3 tour 有意思的树上主席树. 思路 首先考虑一个点 \(p\) 能计入答案的情况,就是 \(dis(x,p)-a_p \ge a_p\). 我们把 \(x \t ...

  7. laravel之验证器

    开发中使用框架自带验证器进行参数验证 1.定义验证器基类,定义失败返回值 新建基础类文件 app > Http > Requests > BaseRequest.php <?p ...

  8. 在线文档-Wiki平台

    GitBook 对于在线文档创作平台,当然还是首推GitBook GitBook为免费用户提供 10个空间(可以私有也可以公开) 支持自定义域名 gitbook本身是一个开源项目,你可以下载源代码自行 ...

  9. SPRING 动态注册BEAN

    场景 有些情况下,不能直接使用BEAN的方式: @Bean(name = "storage") public DataSourceProxy storageDataSourcePr ...

  10. vue3 封装api接口

    新建axiosj.ts import axios from 'axios'; import { showMessage } from "./status"; // 引入状态码文件 ...