簡體   English   中英

OpenCV,C ++中的簡單視頻播放

[英]Simple video playback in OpenCV, C++

我想問一個問題,如何使用C ++中的OpenCV庫解碼和顯示視頻。 更詳細地講,我需要了解如何正確設置兩個幀之間的延遲。

我有一個每秒25幀的.mp4視頻。

我按照通常的周期抓取並顯示幀:

while (something) {
  ...
  capture->read(f);
  imshow("video_title", f);
  waitKey(delay)
}

其中capture是指向VideoCapture對象的指針, fMat對象。

我在設置delay變量的值時遇到問題。

理想情況下, 延遲應設置為1000 / fps。

在我的情況下,1000/25 =40。但是,如果我將延遲設置為40ms,則視頻播放會比應有的慢。

我顯然可以修改延遲值。 如果使用30毫秒,則播放速度仍然太慢。 如果我使用20毫秒,它將比應該的更快。

由於沒有中間處理步驟,因此這種情況應該非常易於管理。

所以:

  • 我究竟做錯了什么?
  • 您能建議一種正確設置延遲以使視頻以正確速度播放的方法嗎?

“正確的速度”是指保持音頻和視頻同步的幀速率。

顯然,read和imshow命令需要一些時間才能執行,因此播放速度較慢。 我會測量上一次顯示的經過時間,例如5ms,然后僅等待40-5 = 35 ms。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM