首页 > 其他分享 >使用Emgu.CV开发视频播放器简述

使用Emgu.CV开发视频播放器简述

时间:2024-07-18 18:56:52浏览次数:10  
标签:播放器 视频 imageInfo capture Emgu 播放 CV

  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 如何高效的抠图,实现视频局部放大功能。

 

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

标签:播放器,视频,imageInfo,capture,Emgu,播放,CV
From: https://www.cnblogs.com/yuanchenhui/p/18310235/videoplayer

相关文章

  • 视频联网共享平台LntonCVS视频监控汇聚平台视频云解决方案
    LntonCVS流媒体平台是一款遵循国家GB28181标准协议的先进视频监控与云服务平台。该平台设计独特,能够同时接入并处理多路设备的视频流,支持包括RTSP、RTMP、FLV、HLS、WebRTC在内的多种视频流格式的分发。其功能丰富多样,涵盖了视频直播监控、云端录像存储、高效的云存储解决方案......
  • GICV3中断控制器调用流程
    GICV3中断控制器初始化调用链/kernel/irq/handle.c:#ifdefCONFIG_GENERIC_IRQ_MULTI_HANDLERint__initset_handle_irq(void(*handle_irq)(structpt_regs*)){if(handle_arch_irq)return-EBUSY;handle_arch_irq=handle_irq;return0;}#en......
  • OpenCV教程04:结合pillow在图片上显示中文文字
    1.如果添加的内容是纯英文文字,直接使用cv2.putText函数操作即可。但它不支持自定义字体文件,仅限于这些内置的字体样式。如果你需要更复杂的字体支持,可能需要使用其他库,如PythonImagingLibrary(PIL)或Pillow。可用的字体列表:cv2.FONT_HERSHEY_SIMPLEX-正常大小的无......
  • SpiderFlow RCE漏洞(CVE-2024-0195)
    0x01前言SpiderFlow是新一代开源爬虫平台,以图形化方式定义爬虫流程,不写代码即可完成爬虫。基于springboot+layui开发的前后端不分离,也可以进行二次开发。该系统/function/save接口存在RCE漏洞,攻击者可以构造恶意命令远控服务器。影响范围:Upto(including)<=0.5.0漏......
  • videojs hls视频流播放器
     需要用到的包"video.js":"^8.6.1","videojs-contrib-hls":"^5.15.0", 给两个测试流地址 <el-select v-model="hlsUrl" placeholder="请选择下拉选择下拉选择" clearable :style="{width:'100%&......
  • MViTv2:Facebook出品,进一步优化的多尺度ViT | CVPR 2022
    论文将MultiscaleVisionTransformers(MViTv2)作为图像和视频分类以及对象检测的统一架构进行研究,结合分解的相对位置编码和残差池化连接提出了MViT的改进版本来源:晓飞的算法工程笔记公众号论文:MViTv2:ImprovedMultiscaleVisionTransformersforClassificationand......
  • uniapp [全端兼容] - 详细实现接入使用海康威视监控云端显示及控制功能,网站集成安装海
    前言如果需要Vue版本,请访问这篇文章。在uni-app全平台兼容(H5网页网站、支付宝/微信小程序、安卓App、苹果App、nvue)项目开发中,详解免费安装使用“海康威视监控摄像头”在网页中对接设备并进行实时显示监控画面及各种功能操作控制教程,对接海康视频监控播放及回放......
  • Python与OpenCV的魔法:批量将照片变身为精美素描图
    1.前言在数字图像处理领域,图像转换和滤波是非常常见的操作。特别是将彩色照片转换为素描图,这种技术可以用于艺术创作、图像分析以及一些特殊的图像处理需求。本文将详细介绍如何使用Python和OpenCV库批量将任意图片转换为素描图。2.简介OpenCV(OpenSourceComputerVisionL......
  • 【漏洞复现】SuiteCRM SQL注入漏洞(CVE-2024-36412)
    0x01产品简介SuiteCRM是一款屡获殊荣的企业级开源客户关系管理系统,它具有强大的功能和高度的可定制性,且完全免费。0x02漏洞概述SuiteCRM存在SQL注入漏洞,未经身份验证的远程攻击者可以通过该漏洞拼接执行SQL注入语句,从而获取数据库敏感信息。0x03搜索引擎title="Suit......
  • 【efinix】 efinity Programmer里添加riscv的hex,Programner闪退
    问题在efinixefinityProgrammer里添加riscv的hex,Programner闪退分析1.某FAE提到可能hex文件有个小锁,应该是加密的问题变相解决方案使用【riscv-sapphire-ug-6.0.pdf77页】,CopyaUserBinarytoFlash(EfinityProgrammer)章节的方法,把FPGA程序和riscv的程序整合成一......