如何流畅地显示视频

本文关键字:视频 显示 何流畅 | 更新日期: 2023-09-27 17:56:03

我正在编写一个程序,该程序将从IP摄像机获取视频流并显示其视频。

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

我已经将我的程序与其他程序进行了比较,我发现我的程序显示视频不如其他程序流畅,尽管帧速率显示相同。

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

有人可以告诉我为什么我的程序不流畅?以及如何改进它。

更新:

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

这是我的伪代码。

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

如何流畅地显示视频

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

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