[英]Simple video playback in OpenCV, C++
我想问一个问题,如何使用C ++中的OpenCV库解码和显示视频。 更详细地讲,我需要了解如何正确设置两个帧之间的延迟。
我有一个每秒25帧的.mp4视频。
我按照通常的周期抓取并显示帧:
while (something) {
...
capture->read(f);
imshow("video_title", f);
waitKey(delay)
}
其中capture是指向VideoCapture对象的指针, f是Mat对象。
我在设置delay变量的值时遇到问题。
理想情况下, 延迟应设置为1000 / fps。
在我的情况下,1000/25 =40。但是,如果我将延迟设置为40ms,则视频播放会比应有的慢。
我显然可以修改延迟值。 如果使用30毫秒,则播放速度仍然太慢。 如果我使用20毫秒,它将比应该的更快。
由于没有中间处理步骤,因此这种情况应该非常易于管理。
所以:
“正确的速度”是指保持音频和视频同步的帧速率。
显然,read和imshow命令需要一些时间才能执行,因此播放速度较慢。 我会测量上一次显示的经过时间,例如5ms,然后仅等待40-5 = 35 ms。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.