微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何解决JPEG实时流滞后的问题?

如何解决如何解决JPEG实时流滞后的问题?

我已经使用AForge库在Windows窗体应用程序中编写了IP摄像机(JPEG)实时流的C#代码。它正在运行,但滞后太多。

代码如下:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using AForge.Video; 
namespace CCTV_software 
{ 
    public partial class Form1 : Form 
    { 
        JPEGStream stream; 
        JPEGStream stream1; 
        public Form1() 
        { 
            InitializeComponent(); 
            stream = new JPEGStream("ip"); 
            stream1 = new JPEGStream("ip1"); 
stream.Login = "username"; 
stream.Password =  "password"; 
stream1.Login = "username1"; 
stream1.Password = "password1"; 
            stream.NewFrame += stream_NewFrame; 
            stream1.NewFrame += stream1_NewFrame1; 
            stream.Start(); 
            stream1.Start(); 
        } 
 
 
        void stream_NewFrame(object sender,NewFrameEventArgs eventArgs) 
        { 
            Bitmap bmp = (Bitmap)eventArgs.Frame.Clone(); 
            pictureBox1.Image = bmp;  
        } 
        void stream1_NewFrame1(object sender,NewFrameEventArgs eventArgs) 
        { 
            Bitmap bp = (Bitmap)eventArgs.Frame.Clone(); 
            pictureBox2.Image = bp; 
        } 
    } 

尝试添加

stream.FrameInterval = 0;

但这没什么区别。 请帮我解决这个问题。

编辑:

This is the error I'm getting

修改2:

This is what is displayed by clicking on view details

Here is the StackTrace

解决方法

@mjwills和我的建议合在一起:

void stream_NewFrame(object sender,NewFrameEventArgs eventArgs) 
{
    var oldImage = pictureBox1.Image 
    pictureBox1.Image = eventArgs.Frame; // set to new image without making a copy
    oldImage?.Dispose(); // = Dispose previous image,if not null
}

这为您节省了昂贵的克隆费用,并使gc可以及时清理图像。

这些措施的结合应使其有可能提高吞吐量(即减少“滞后”)。进一步的对策可能是缩小图像尺寸或降低质量...

注意:以上措施至少应该改善 滞后,但不能保证使其完全消失,因为滞后也可能在其他地方引起。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。