C#读取RTSP流并且录制显示视频(PictrueBox)

2023-11-05

下载Nuget包:EMGU.CV
引用Emgu.CV;

public void InitVideo()
        {
            VideoCapture _capture = new VideoCapture("rtsp://admin:123456@192.168.0.198:554");
            Thread.Sleep(100);
            VideoWriter videoWriter = null;
            Mat fram = new Mat();
            Task.Factory.StartNew(() => {
                while (true)
                {
                    try
                    { 
                        _capture.Read(fram);
                        var item = _capture.QueryFrame();
                        Image Imageshow = item.Bitmap;//获取当前帧图片 发到图片控件中
                        pictureBox1.Image = Imageshow;
                        if (videoWriter == null)
                        {
                            videoWriter = new VideoWriter("out.mp4", 0, 24, fram.Size, false);
                            videoWriter.Set(WriterProperty.Framebytes, 10);
                        }
                        videoWriter.Write(fram);//写入帧

                    }
                    catch (Exception ex)
                    {
                        break;
                    }
                    Thread.Sleep(10);
                }
            });
        } 

参考资料:
https://www.cnblogs.com/LCLBook/p/16649870.html
另一种使用方法:挂载事件操作(速度稍慢)

在这里插入图片描述

/// <summary>
        /// 初始化程序
        /// </summary>
        private void InitializeVariables()
        {
            currentDevice = new VideoCapture("rtsp://admin:***@192.168.0.198:554");
            recording = false;
            videoWidth = currentDevice.Width;
            videoHeight = currentDevice.Height;
        }
        /// <summary>
        /// 图片转换事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void CurrentDevice_ImageGrabbed(object sender, EventArgs e)
        {
            try
            {

                Mat m = new Mat();
                currentDevice.Retrieve(m, 0);
                VideoPictureBox.Image = m.Bitmap;
                
                if (recording && videoWriter != null)
                {
                    videoWriter.Write(m);
                }
                Thread.Sleep(10);


            }
            catch (Exception ex)
            {
            }
        }
        /// <summary>
        /// 确认录像记录
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BTStrat_Click(object sender, EventArgs e)
        {
            recording = true;
            SaveFileDialog dialog = new SaveFileDialog();
            dialog.DefaultExt = ".mp4";
            dialog.AddExtension = true;
            dialog.FileName =Guid.NewGuid().ToString("N").Substring(0,5);
            DialogResult dialogResult = dialog.ShowDialog();
            if (dialogResult != System.Windows.Forms.DialogResult.OK)
            {
                return;
            }
            Task.Factory.StartNew(() =>
            {
                videoWriter = new VideoWriter(dialog.FileName, VideoWriter.Fourcc('M', 'P', '4', 'V'), 30, new System.Drawing.Size(videoWidth, videoHeight), true);
            });
        }
        /// <summary>
        ///  关闭录像
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void TBClose_Click(object sender, EventArgs e)
        {
            recording = false;
            if (videoWriter != null)
            {
                currentDevice.ImageGrabbed -= CurrentDevice_ImageGrabbed;//解除事件
                currentDevice.Stop();
                videoWriter.Dispose();
            }
        }
        /// <summary>
        /// 按钮预览
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            currentDevice.ImageGrabbed += CurrentDevice_ImageGrabbed;
            currentDevice.Start();
        }

参考数据:http://t.zoukankan.com/chengNet-p-11724429.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#读取RTSP流并且录制显示视频(PictrueBox) 的相关文章

  • 音视频开发基础概述 - PCM、YUV、H264、常用软件介绍

    前言 相对而言 音视频开发算是有些门槛的 记得我第一次接触的时候 看别人的博客都看不懂 特别是写代码的时候 非常痛苦 只能抄别人的代码 却不知道为什么要这么写 也不知道应该怎么调整 后来总结了一下 痛苦的原因是在写代码之前没有掌握相关的基础
  • node调用ffmpeg转流

    ffmpeg始终是音视频领域绕不过去的一个坎 也是一个特别好的工具 虽然再node库里面有根据ffmpeg编译的库 比如 libav js和fluent ffmpeg之类 但是调用原生的ffmpeg应用也是一种方法 这边先上代码再详解 H2
  • UE4的视频播放(Media Player)

    1 视频播放Begining 首先将需要播放的视频拖入 创建Media Player和Media Texture 创建Material 将材质改为User Interface 在UI界面 创建Image 将这个材质装入 在人物Pawn界面添
  • opencv+nvcodec实现视频硬解码

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 系统配置 前言 一 NVCODEC是什么 二 OpenCV编译 1 安装Driver CUDA 2 编译OpenCV 总结 系统配置 操作系统 Ubuntu18 0
  • 视频无损放大修复工具:Topaz Video AI对Mac和Windows的系统要求

    Topaz Video AI是一款基于人工智能技术的视频增强软件 旨在提供高质量的视频修复 增强和转换功能 它可以通过智能算法和图像处理技术 改善视频的清晰度 稳定性 降噪效果 还能进行视频转码和格式转换 Mac Topaz Video A
  • 基于MediaPlayer实现视频播放

    一 概述 一个简单的视频播放器 满足一般的需求 使用原生的 MediaPlayer 和 TextureView来实现 功能点 获取视频的首帧进行展示 网络视频的首帧会缓存 视频播放 本地视频或者网络视频 感知生命周期 页面不可见自动暂停播放
  • H265视频转码H264视频

    LiveMedia视频平台提供H5网页web前端无插件视频码流 但目前主流浏览器和播放器都只支持H264的码流 但是随着编码技术的迭代 目前H265编码的视频已在安防行业得到了广泛的使用 平台仅支持H264需要客户修改前端的视频编码 这样会
  • 软考:中级软件设计师:多媒体基础,音频,图像,颜色,多媒体技术的种类,图像音频视频的容量计算,常见的多媒体标准

    软考 中级软件设计师 多媒体基础 提示 系列被面试官问的问题 我自己当时不会 所以下来自己复盘一下 认真学习和总结 以应对未来更多的可能性 关于互联网大厂的笔试面试 都是需要细心准备的 1 自己的科研经历 科研内容 学习的相关领域知识 要熟
  • 基于深度学习实现实时视频目标检测

    前言 实时视频目标检测是计算机视觉领域的研究热点之一 其应用场景包括智能监控 自动驾驶 机器人视觉等多个领域 深度学习技术的快速发展使得实时视频目标检测变得更加可行和准确 本文提出一种基于深度学习实现的实时视频目标检测系统 使用Python
  • 利用 FFmpeg 批量自动生成视频封面

    最近有一个 H5 页面的需求 里面有非常多的视频 由于视频在 H5 中播放缓冲较慢 因此需要在每一个视频前面加上一个封面 从而来避免白屏的情况 主要使用的 ffmpeg 的语法 ffmpeg i input mp4 ss 00 00 00
  • Unity 音频卡顿 静帧 等待等问题的解决方案

    是否遇到过在Unity中加载音频文件卡顿 也就是画面卡住 的现象 特别是加载外部音频文件时 虽然时间很短 但这终归不是什么好现象 尤其是打游戏的话 影响很大 但是一些有牌面的Boss也不能不配音乐 当然也可以通过其它方式解决 比如特定条件统
  • uniapp使用uni.createInnerAudioContext()播放指定音频并且切换

    uniapp使用uni createInnerAudioContext播放指定音频并且切换 注意 效果图 主要代码 放上所有的代码 注意 uniapp API 中 uni createInnerAudioContext 是无法多音频播放的
  • 基于FFmpeg和Screen Capturer Recorder实现屏幕和声音的录制

    当我们看到一些精彩的视频画面 但无法下载时 可以通过录屏的方式将视频和音频录制下来 这个时候我们需要安装采集视频和音频的工具screen capture recorder 以下是在windows10环境下 基于FFmpeg和Screen C
  • vue+java实现在线播放mp4视频

    首先如果本地的mp4视频可以播放 但是在网页就显示视频格式不正确 可能原视频不是mp4格式的 更改后缀名为mp4了 但是在网页上还是无法播放 可以用 ffmpeg转换视频格式 一般遇到格式问题都是视频格式不对 需要专门的工具来转换 java
  • IP包头&ARP协议笔记

    一 IP包头分析 1 帧中的IP包头 从版本到可选项 其中2为帧头 注 1 IP包头最小长度 20字节 即可选项以前部分 IP包头长度是可变的 2 可选项最长可以是40个字节 故IP包头最长可以是60个字节 1 版本 4 说明是IPv4 2
  • (十)老照片修复、图像超分、图片提高分辨率、图片高清化、图片清晰化、黑白图片上色、人脸祛斑、美颜、人体瘦身、图像去噪、人像抠图、批量处理、视频提高分辨率、视频逐帧修复

    十 老照片修复 图像超分 图片提高分辨率 图片高清化 图片清晰化 黑白图片上色 人脸祛斑 美颜 人体瘦身 图像去噪 人像抠图 批量处理 视频提高分辨率 视频逐帧修复 本文的代码的功能是 可以对图片文件 视频批量增强清晰度 对老照片进行修复
  • 高效转码工具Compressor for Mac,让视频处理更轻松

    在现如今的数字时代 视频内容已经成为人们生活中不可或缺的一部分 无论是在社交媒体上分享生活点滴 还是在工作中制作专业的营销视频 我们都希望能够以高质量 高效率地处理和传输视频文件 而Compressor for Mac作为一款强大的视频转码
  • 嵌入式开发、C++后端开发、C++音视频开发怎么选择?

    嵌入式开发 C 后端开发和C 音视频开发的选择问题 近年来 随着互联网和物联网的快速发展 嵌入式开发 C 后端开发和C 音视频开发等职业领域也逐渐受到广泛关注 对于有志于从事这些领域的人来说 如何做出选择呢 下面将从前景 薪酬和职业稳定性等
  • 电动车低速提示音系统(AVAS)

    随着电动汽车的迅速发展 以及电动汽车的保有量也越来越多 根据车辆的特征来说电动汽车相比于传统的内燃机汽车要安静 为了保护行人 减少事故的发生 欧盟最近发布了一项关于电动车的新法规 自2019年7月1日开始 欧盟关于电动汽车的最新法律正式生效
  • 网络对讲终端 网络音频终端 网络广播终端SV-7011V使用说明

    高速路sip广播对讲求助 隧道sip对讲调度SIP 7011 网络广播终端SV 7011 壁挂式对讲终端网络监听终端SIP广播终端 sip语音对讲终端SIP 7011 SV 7011网络对讲终端网络对讲 网络厂播 监听 SV 7101网络解

随机推荐

  • 中国蚁剑安装教程——antsword及webshell一句话木马

    中国蚁剑是一款开源的跨平台网站管理工具 它主要面向于合法授权的渗透测试安全人员以及进行常规操作的网站管理员 任何人不得将其用于非法用途以及盈利等目的 否则后果自行承担 一 首先下载加载器 下方是通过镜像github的地址 但是我依旧不能连接
  • 【区块链学习】

    区块链学习一 区块链概念 区块链结构 共识机制 智能合约 区块链应用于加密货币 区块链应用于实际场景 如何用最简单的方式解读区块链 通俗解释 区块链概念 区块链是一种分布式数据库 由许多区块组成 每个区块包含了一些交易信息和引用前一个区块的
  • C语言算法--桶排序

    1 什么是桶排序法 什么是桶排序法 其实说白了就是把需要排列的元素分到不同的桶中 然后我们对这些桶里的元素进行排序的一种方式 然后我们在根据桶的顺序进行元素的合并 不过前提是要确定桶的数量以及大小 按照稍微正式的说法是 桶排序法是一种基于计
  • JAVA提高ZXING对图片中的二维码的识别率(第二弹)

    背景 继上一次使用做二维码识别 公司需要高识别率的二维码识别 但ZXING实在是太弱了 对于那种二维码占比很小 图片对比度不高的 识别率低的令人咋舌 后来引入了opencv 加上恶补了一些图像处理的基础知识 总算有一个能看的过去的识别率了
  • 生产级实践之集群搭建方案系列-Redis主从、哨兵与多主集群模式的安装配置

    1 目标 介绍Redis的主从部署 哨兵部署与多主集群部署模式 实现Redis主从与哨兵集群部署 以及多主集群模式的搭建配置 2 脉络 介绍Redis的所有部署模式 特点与使用场景 完成Redis主从与哨兵集群部署 完成Redis多主集群模
  • docker搭建私有git服务器

    20210506 引言 使用git的时候 网的问题总是特别慢 反正本来也就是自己的东西 索性直接搭建一个私有的git服务器 搭建起来还是比较方便的 直接用docker搭建就好了 步骤 1 拉取镜像 docker pull gogs gogs
  • python零基础之if语句(单分支if、双分支if .else、多分支if..elif..elif..else、if语句的嵌套)、运算符优先级、比较运算符、赋值运算符、逻辑运算符、随机数random

    注意 1 在程序开发过程中 通常在判断条件时 会需要同时判断多个条件 只有多个条件都满足时 才会执行后续的代码 此时就会用到逻辑运算符 与或非了 即 and or not 2 pass 占位符 例如 当if语句内容为空的时候 如果没有代码程
  • 关于到美国学习cs的亲身感受,希望对你们有所帮助

    1 能否向各位寄托天下的朋友们简单介绍一下你自己 比如你国内的学校 或者什么档次 哪年申请出国的 什么专业 硕士还是博士 在美国的学校 或者什么档次 以及留学经历 毕业时间 现在状态 学生 博后 工作 回国 总体经历 国内在上海一所211学
  • 论文阅读:Interventional Few-Shot Learning

    作者发现两个规律 1 每一个feature dimension都携带有一定量的semantic meaning 也就是说每个feature dimension代表了一定的信息量 2 大部分的预训练模型都是以分类为训练目标 这些分类器都可以看
  • c++.net 托管字符串 非托管指针 互相转换

    System String md5String md5String admin IntPtr sptr System Runtime InteropServices Marshal StringToHGlobalAnsi md5String
  • 14款国内外精品PPT模板网站对比介绍

    简介 在平日的学习和工作中 我们经常需要制作幻灯片 通过PPT模板和素材库可以帮助我们快速设计出符合心意的幻灯片 本文对14个国内外高质量PPT模板网站进行简单的对比分析 希望对您有所帮助 国内PPT模板网站 1 SlideLive 网站地
  • 宝塔面板+花生壳实现内网部署的项目能够被在外网被访问

    05 宝塔面板 花生壳实现内网部署的项目能够被在外网被访问 1 安装操作系统 linux 2 安装宝塔面板 3 安装花生壳 4 使用宝塔面板部署项目 1 安装操作系统 linux 购买云服务器 自己安装需要的操作系统 2 安装宝塔面板 yu
  • 结构体详细了解

    用已经有的数据类型 来组合成我们需要的 复杂的数据类型 结构体定义 结构体的引入是为了描述包含有不同类型数据组合而成的数据 单独定义变量也是可以的 但变量彼此之间没有形式上的关联 容易出错 不成整体 没有封装 结构体把多个数据项打成一个包
  • 第二十八讲:神州路由器地址转换的配置

    实验拓扑图如下所示 设置内网地址段为192 168 0 0 S0 1为外网出口 通过nat访问192 168 2 0网段 操作步骤 步骤1 连接网络拓扑结构图 步骤2 配置计算机的IP地址 子网掩码和网关 步骤3 设置Router B的接口
  • app版本控制的几种方式

    是否需要做版本控制 出入参保持不变 迭代对app无感知 不需要版本控制 如果对比之前新增或者减少了参数 但是可以通过给默认值或者兼容零值的方式兼容老逻辑 不需要版本控制 其他情况需要进行版本控制 版本控制的几个方案 灰度部署 通过nginx
  • 创建一个简单的初级SpringMVC项目(非注解版)

    新建一个maven项目 JavaWeb 导入依赖
  • 人工智能——支持向量机(SVM)思维导图

    目录 1 机器学习 2 SVM 2 1 线性可分分类器 2 1 1 间隔 2 1 2 基本思想 2 1 3 目标函数 2 2 性质 2 3 线性不可分分类器 2 3 1 核函数 2 3 2 软间隔分类器 1 机器学习 2 SVM 2 1 线
  • 程序包com.aspose.words不存在&doc.getRange().replace()方法报错

    2022 7 8 周五 今天拿到一个现成项目需要部署 但是好像有lib里的东西忘给了 启动报错 程序包com aspose words不存在 阿里云仓库搜aspose words没有结果 在aspose words 15 8 0 完美解决w
  • MDK编译出现*.axf: Error: L6218E: Undefined symbol 问题解决方法

    本文参考此贴写成 原帖链接 http blog csdn net yx l128125 article details 9231385 在使用MDK编译工程时出现了如下错误 test axf Error L6218E Undefined s
  • C#读取RTSP流并且录制显示视频(PictrueBox)

    下载Nuget包 EMGU CV 引用Emgu CV public void InitVideo VideoCapture capture new VideoCapture rtsp admin 123456 192 168 0 198 5