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

这篇具有很好参考价值的文章主要介绍了C#读取RTSP流并且录制显示视频(PictrueBox)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

下载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
另一种使用方法:挂载事件操作(速度稍慢)

c# rtsp,关于程序,音视频

/// <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文章来源地址https://www.toymoban.com/news/detail-516716.html

到了这里,关于C#读取RTSP流并且录制显示视频(PictrueBox)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • c# OpenCvSharp读取、显示和写入图像(二)

            读取、显示和写入图像是图像处理和计算机视觉的基础。即使在裁剪、调整大小、旋转或应用不同的滤镜来处理图像时,您也需要先读取图像。因此,掌握这些基本操作非常重要。 imread()读取图像 imshow()在窗口中显示图像 imwrite()将图像保存到文件目录里 我们将使

    2024年02月02日
    浏览(67)
  • c# 从零到精通 读取连接数据库-并将数据填入dataGridView控件中,并且获取所选单元格的值

    c# 从零到精通 读取连接数据库-并将数据填入dataGridView控件中,并且获取所选单元格的值 using System; using System.Data; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; namespace Test02 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } SqlConnection conn; SqlDataAdapter sd

    2024年02月09日
    浏览(39)
  • C# 读取 Excel xlsx 文件,显示在 DataGridView 中

    编写 read_excel.cs 如下 SET PATH=C:WINDOWSMicrosoft.NETFrameworkv4.0.30319;%PATH% 编译:csc.exe  /t:exe read_excel.cs   环境:win10 64位系统 运行 yourpathread_excel.exe  test1.xlsx 错误信息:未在本地计算机上注册“ Microsoft.ACE.OLEDB.12.0 ”提供程序。 搜索 Microsoft Access Database Engine 2016  我先下载了

    2024年02月07日
    浏览(51)
  • C#中使用OpenCvSharp4库读取本地图像并显示

    OpenCvSharp4是基于.NET 的 OpenCV 包装器,OpenCV源代码是采用C和C++写的,目前对于C++和Python开发者相对来说比较友好,对于Python开发者而言官方提供了opencv-python使用。 首选我们使用Visual Studio 2022创建一个.Net控制台程序 ReadImageUseOpenCvSharp4 ,然后安装 OpenCvSharp4 安装包,我们在Vis

    2024年04月16日
    浏览(41)
  • C# - Opencv应用(2) 之矩阵Mat使用[矩阵创建、图像显示、像素读取与赋值]

    C# - Opencv应用(2) 之矩阵Mat使用[矩阵创建、图像显示、像素读取与赋值] 矩阵创建 图像显示与保存 像素读取与赋值 新建sample02项目,配置opencv4相关包,新建 .cs 进行测试 两种常用的图像遍历方式 灰度图操作 三通道图操作 完整代码

    2024年02月03日
    浏览(43)
  • OpenCv:采集摄像头视频、读取视频帧与视频录制

    目录 一、涉及OpenCv函数 二、什么是帧、帧的大小代表什么 三、摄像头获取视频数据 四、录制视频并保存 从设备,可以是摄像头可以是本地视频, 获取视频的函数 cv.VideoCapture()。 本函数作用在于创建一个VideoCapture或者VideoWriter对象,真正的读取和写入是通过创建的对象进行

    2024年02月16日
    浏览(47)
  • C# 实现按键精灵 记录录制键盘鼠标

     是一个非常实用的键盘鼠标脚本录制工具,通过它你可以轻松地进行脚本录制,简单易用,不需要任何编程知识就能做出功能强大的脚本,只要你在电脑前用双手可以完成的动作,都可以替你完成。                下载软件 1.运行录制脚步时模拟过程 比按键精灵 更加流畅

    2024年02月11日
    浏览(37)
  • openvino系列 18. 通过OpenVINO和OpenCV实现实时的物体识别(RTSP,USB视频读取以及视频文件读取)

    在这个案例中,我们将OpenVINO的SSDLite MobileNetV2物体识别算法在视频流中进行推理。另外,如何通过多线程的方式进行视频读取,以及视频分析,这段代码是很值得一学。此案例涉及: 读取 Tensorflow 物体识别预训练模型 将 Tensorflow 模型转化为 IR 中间件 通过 OpenCV 实现视频但一

    2024年02月02日
    浏览(49)
  • C#:对word中表格进行复制、粘贴并且替换内容

    在我上一篇对于word开发讲述的文章中对word开发进行了一些介绍,今天接着上一篇文章再介绍一下如何复制word中的表格,然后进行粘贴的操作,最后再介绍一下如何替换表格中的文本。 首先如果想要复制word中的表格自然然需要先实例化doc,这个就不写了。不会的伙伴可以去

    2024年02月09日
    浏览(39)
  • 【opencv+图像处理】(Gui Features in OpenCV) 1-1摄像头:采集摄像头视频,读取视频帧,录制视频

    本专栏代码总库地址 https://github.com/xiawei20161308104/xv_opencv_tutorials 本节代码路径 xv_opencv_tutorials/VideoRelated/get_started_with_videos.py xv_opencv_tutorials/VideoRelated/get_and_set_video.py xv_opencv_tutorials/VideoRelated/save_video.py 参考官网 https://docs.opencv.org/4.x/d6/d00/tutorial_py_root.html 从设备,可以是摄像

    2024年02月03日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包