C# OpenCvSharp读取rtsp流录制mp4可分段保存

软件界面:

测试环境:

VS2019

.NET Framework 4.7.2

OpencvSharp4.8.0

输入RTSP流地址即可拉取RTSP流,支持抓拍和录制RTSP流视频,且支持支持按固定时间保存,比如我想5分钟保存一个视频,设置保存间隔为300,代码已经封装成类模块,调用十分简单 ,代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using FIRC;
using OpenCvSharp;namespace RtspDemo
{public partial class Form1 : Form{RtspManager rm = new RtspManager();bool startRecordVideo = false;int totalSaveFrameCount = 0;VideoManager vm = null;int startIndex = 0;public Form1(){InitializeComponent();CheckForIllegalCrossThreadCalls = false;}private void btn_connect_Click(object sender, EventArgs e){if(btn_connect.Text=="连接"){if (string.IsNullOrEmpty(tb_rtsp.Text)){tssl_show.Text = "rtsp流地址错误!";return;}rm.Connect(tb_rtsp.Text);if (rm.Connected){tssl_show.Text = "连接成功";btn_connect.Text = "停止";rm.Start();}else{tssl_show.Text = "连接失败";}}else{rm.Stop();rm.DisConnect();btn_connect.Text = "连接";tssl_show.Text = "连接中断!";}}private void Form1_Load(object sender, EventArgs e){rm.GetImage += Rm_GetImage;rm.GetStatus += Rm_GetStatus;}private void Rm_GetStatus(string msg){if(msg=="disconnect"){btn_connect.Text = "连接";btn_video.Text = "开始录像";vm.Dispose();}}private void Rm_GetImage(OpenCvSharp.Mat frame){if(startRecordVideo){startIndex++;if(startIndex>=totalSaveFrameCount){startIndex = 0;var saveFile = GetTimeString() + ".mp4";vm = new VideoManager(saveFile, FourCC.MP4V, rm.Fps, rm.Width, rm.Height);}vm.WriteFrame(frame);}pictureBox1.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(frame);}public string GetTimeString(){return DateTime.Now.ToString("yyyyMMdd-HHmmss_fff");}private void btn_pic_Click(object sender, EventArgs e){if(pictureBox1.Image!=null){var saveFile = GetTimeString() + ".jpg";pictureBox1.Image.Save(saveFile,ImageFormat.Jpeg);tssl_show.Text = "抓拍成功,保存为" + saveFile;}}private void btn_video_Click(object sender, EventArgs e){if(btn_video.Text=="开始录像"){if(btn_connect.Text=="连接"){tssl_show.Text = "请先连接RTSP流!";return;}btn_video.Text = "停止录像";btn_video.Update();Task.Run(() => {totalSaveFrameCount = Convert.ToInt32(tb_interval.Text) * rm.Fps;startIndex = 0;var saveFile = GetTimeString() + ".mp4";vm = new VideoManager(saveFile,FourCC.MP4V,rm.Fps,rm.Width,rm.Height);startRecordVideo = true;});}else{vm.Dispose();startRecordVideo = false;btn_video.Text ="开始录像";}}}
}

视频演示:

C# OpenCvSharp读取rtsp流录制mp4_哔哩哔哩_bilibiliC# OpenCvSharp读取rtsp流录制mp4, 视频播放量 1、弹幕量 0、点赞数 0、投硬币枚数 0、收藏人数 0、转发人数 0, 视频作者 未来自主研究中心, 作者简介 未来自主研究中心,相关视频:随机地址生成工具1.3.3使用教程,xml转txt工具终结版1.3.1使用教程voc转yolo工具软件教程,相似图片删除工具使用教程快速删除类似图片软件,使用易语言部署yolov8的tensorrt模型,IDM6.422【毛子重新打包版】免激活直装,小白友好,pyqt5离线安装工具IDLE教程自动配置desginer pyuic到pycharm,轻松教你学会如何内置QQ模块~,OCR区域自动识别重命名工具1.1使用教程,实例分割语义分割数据集自动预标注反标注系统之图片自动标注视频演示,给IDLE或anaconda离线安装pyqt5工具教程傻瓜式操作离线安装pyqt5自动配置designer到pycharmicon-default.png?t=N7T8https://www.bilibili.com/video/BV1AG411r7fW/?vd_source=989ae2b903ea1b5acebbe2c4c4a635ee

源码下载地址:

https://download.csdn.net/download/FL1623863129/88673726

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/315864.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux实战:部署基于Postfix 与 Dovecot 的邮件系统

一、电子邮件系统简介 在电子邮件系统中,为用户收发邮件的服务器名为邮件用户代理(Mail User Agent,MUA),MTA (邮件传输代理)的工作职责是转发处理不同电子邮件服务供应商之间的邮件&#xff0…

【node-express-sse】Server Sent Event 单向推送消息,实现站内信功能

sse 实现效果代码前端后端 实现效果 服务端返回的 Content-Type 是 text/event-stream,这是一个流,可以多次返回内容。 Sever Sent Event 就是通过这种消息来随时推送数据。 AIGC,如 ChatGPT 打字机消息回复实现原理 等也是使用sse实现。 还有…

安卓在SOA中的运用

安卓在运用SOA研发的过程中,会针对实际情况对研发的架构和流程进行优化,通过优化过的架构和实施方案,不仅可以大大提升了整车开发的效率和灵活行以及功能落地的稳定性,同时也增加了系统的向上兼容性。 目前基于车载SOA系统的研发…

软件游戏缺失XINPUT1_3.dll怎么安装,马上教会你

当我们打开某个软件或游戏时,系统提示“XINPUT1_3.dll丢失”怎么办,XINPUT1_3.dll是一个动态链接库文件,它包含了许多用于处理输入设备的函数。当计算机丢失这个文件时,一些依赖于它的应用程序可能无法正常运行,导致输…

实践:基于双向LSTM模型完成文本分类任务

目录 1 数据处理 1.1 数据加载 1.2 构造Dataset类 1.3 封装DataLoader 2 模型构建 3 模型训练 4 模型评价 5 模型预测 5 拓展实验 5.1 使用Pytorch内置的单向LSTM进行文本分类实验 ​编辑 5.2 使用Paddle内置的单向LSTM进行文本分类实验 总结 电影评论可以蕴含…

打印菱形和金字塔类型(总结)

首先,在之前的学习中,我们了解了菱形的打印,今天我们来对金字塔和菱形这类打印图形的问题,我们来做一个总结。 这个总结的来源是这今天做了一道题 这道题的答案如下 这个题做起来并不难,拓展到这类问题中,…

Axure软件大全:原型设计下载与学习指南!

Axure可以有效地创建原型,包括绘制APP和网页的原型图、框架图、结构图等。Axure内置的小部件可以用来构建动态交互。即使新手设计师不懂程序代码,也可以在Axure中创建复杂、动态、功能丰富的原型。对于想要深入研究和花时间学习程序的设计师来说&#xf…

深入解析云原生与Kubernetes:现代化应用开发的未来

云原生是一种创新的软件开发和部署方法论,旨在使应用程序能够更好地适应云环境的特性和需求。而Kubernetes作为云原生的核心技术,提供了强大的容器编排和管理能力,改变了应用部署和运行的方式。本文将深入探讨云原生和Kubernetes的概念、原理…

Elasticsearch:带有自查询检索器的聊天机器人示例

本工作簿演示了 Elasticsearch 的自查询检索器 (self-query retriever) 将问题转换为结构化查询并将结构化查询应用于 Elasticsearch 索引的示例。 在开始之前,我们首先使用 langchain 将文档分割成块,然后使用 ElasticsearchStore.from_documents 创建…

【基础】【Python网络爬虫】【1.认识爬虫】什么是爬虫,爬虫分类,爬虫可以做什么

Python网络爬虫基础 认识爬虫1.什么是爬虫2.爬虫可以做什么3.为什么用 Ptyhon 爬虫4.爬虫的分类通用爬虫聚焦爬虫功能爬虫增量式爬虫分布式爬虫 5.爬虫的矛与盾(重点)6.盗亦有道的君子协议robots7.爬虫合法性探究 认识爬虫 1.什么是爬虫 网络爬虫&…

Go(Golang)的10个常见代码片段用于各种任务

探索有用的Go编程代码片段 提供“前10名”Go(Golang)代码片段的明确列表是具有挑战性的,因为代码片段的实用性取决于您试图解决的具体问题。然而,我可以为您提供十个常用的Go代码片段,涵盖了各种任务和概念&#xff1…

基于PI控制的PMSM永磁同步电机控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 PMSM数学模型 4.2 矢量控制策略 4.3 PI控制器设计 4.4 控制系统实现 5.完整工程文件 1.课题概述 基于PI控制的PMSM永磁同步电机控制系统simulink建模与仿真。其中,基于PI(…