当前位置: 首页 > article >正文

使用Emgu.CV将tif保存视频,并用AxWindowsMediaPlayer打开

1. 使用Emgu.CV将tif保存视频,非常简单

打开:

 VideoWriter   writer = new VideoWriter(name, VideoWriter.Fourcc('M', 'J', 'P', 'G'), displayRate, new Size(width, height), false);

写入

 writer.Write(mat);

关闭

 writer.Dispose();

完整代码如下:


using Emgu.CV;
using System;
using System.Drawing;

    public class CVideoFiles
    {
        private VideoWriter writer;
        private bool isOpen = false;

        // 打开视频文件
        public void OpenVideo(string name, int displayRate, int width, int height)
        {
            // 如果视频已经打开,抛出异常
            if (isOpen)
            {
                throw new InvalidOperationException("视频文件已经打开,请关闭当前文件后再打开新的文件。");
            }
            // 打开视频文件并设置编码器,帧率,分辨率
            writer = new VideoWriter(name, VideoWriter.Fourcc('M', 'J', 'P', 'G'), displayRate, new Size(width, height), false);

            // 如果视频文件没有成功打开,抛出异常
            if (!writer.IsOpened)
            {
                throw new InvalidOperationException("打开视频文件失败,请检查文件路径或编码器设置。");
            }

            isOpen = true;
        }

        // 写入一帧视频
        public void WriteVideo(Mat mat)
        {
            if (!isOpen)
            {
                throw new InvalidOperationException("视频尚未打开,无法写入视频帧。");
            }

            // 检查视频帧数据是否有效
            if (mat == null || mat.IsEmpty)
            {
                throw new ArgumentException("无效的帧数据,无法写入视频。");
            }


            // 写入视频帧
            writer.Write(mat);
        }

        // 关闭视频文件
        public void CloseVideo()
        {
            if (isOpen)
            {
                // 释放 VideoWriter 对象
                writer.Dispose();
                isOpen = false;
            }
            else
            {
                throw new InvalidOperationException("视频文件未打开,无法关闭。");
            }
        }
    }

2. 保存的avi视频,用AxWindowsMediaPlayer打开

   给AxWindowsMediaPlayer控制的URL 赋值,就会自动播放,如:

   axWindowsMediaPlayer1.URL = "c:\\1.avi";

如果AxWindowsMediaPlayer打不开,提示报错,说明MediaPlayer缺少解码器,  从   Download K-Lite Codec Pack (codecguide.com) 下载K-Lite_Codec_Pack_1865_Standard .exe,安装就可以了。


http://www.kler.cn/a/510146.html

相关文章:

  • Java 接口安全指南
  • 麒麟系统下载依赖到本地
  • 挖掘机检测数据集,准确识别率91.0%,4327张原始图片,支持YOLO,COCO JSON,PASICAL VOC XML等多种格式标注
  • 【实践】操作系统智能助手OS Copilot新功能测评
  • AUTOSAR从入门到精通-无人驾驶网约车(Robotaxi)
  • 算法与数据结构——复杂度
  • ant design vue的级联选择器cascader的悬浮层样式怎么修改
  • Word中如何格式化与网页和 HTML 内容相关的元素
  • 基于python对抖音热门视频的数据分析与实现
  • Linux网络序列化与反序列化
  • LINUX编译LibreOffice
  • React进阶之react.js、jsx模板语法及babel编译
  • 数据结构---并查集
  • Python学习(十三)什么是模块、模块的引入、自定义模块、常见的内置模块(math、random、os、sys、uuid、时间模块、加密模块)
  • 搭建一个基于Spring Boot的数码分享网站
  • [Qt]窗口-QDialog、QMessageBox、QColorDialog、QFileDialog、QFontFialog、QInputDialog对话框
  • 登录校验Cookie、Session、JWT
  • 【unity进阶篇】弧度、角度和三角函数(Mathf),并实现类似蛇的运动
  • Django SimpleUI 自定义功能实战
  • 【漏洞预警】FortiOS 和 FortiProxy 身份认证绕过漏洞(CVE-2024-55591)
  • 网络系统管理Linux环境——AppSrv之SSH
  • 天机学堂5-XxlJobRedis
  • 硬件学习笔记--34 GB/T17215.321相关内容介绍
  • C++实现设计模式---迭代器模式 (Iterator)
  • Django 和 Vue3 前后端分离开发笔记
  • OpenAI推出首个AI Agent!日常事项自动化处理!