如何顺利显示视频?

时间:2013-01-26 14:53:56

标签: c# wpf ip-camera

我正在编写一个程序,它将从IP Camera获取视频流并显示其视频。

我请求MJPEG流,解析数据并在WPF控件上逐帧显示以制作视频。

我将我的程序与其他程序进行了比较,虽然FRAME RATE DISPLAY相同,但我发现我的程序显示的视频不如其他程序流畅。

我通过顺序更新控件的图像在WPF控件上显示视频。

有人可以告诉我为什么我的节目不顺畅吗?以及如何改进它。

更新:

@LearnedfromMistake:有2个主题。线程#1将请求,解析来自Camera流的数据并将帧附加到队列中。线程#2将从队列中获取帧并显示它。

这是我的伪代码。

Thread #1    
{    
   while(true)    
   {    
      JpegFrame = ReadAFrameFromStream();    
      QUEUE.Append(JpegFrame);
   }    
}

Thread #2    
{    
   while(true)    
   {    
      JpegFrame = QUEUE.GetFrame();    
      WPFControl.UpdateImage(JpegFrame); //Making video here
   }    
}

1 个答案:

答案 0 :(得分:1)

  • 虽然视频帧据说是以固定的时间间隔拍摄的,但它们可能会被编码为不同的延迟,传输和缓冲延迟/延迟适用,最终您的接收率不规律,您需要补偿这一点以恢复平滑的馈送
  • 与通过专门的多媒体API进行演示相比,WPF控件重绘开销更大

最好的方法是促进多媒体流API,将图像解码为YUV帧并根据附加的时间戳准确呈现。