[英]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.