如何流畅地显示视频
本文关键字:视频 显示 何流畅 | 更新日期: 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帧并根据附加的时间戳准确呈现。