簡體   English   中英

使用DirectShow捕獲AVI視頻

[英]Capturing an AVI video with DirectShow

我正在嘗試使用DirectShow AVIMuxFileWriter過濾器捕獲AVI視頻。 當我連接SampleGrabber過濾器而不是AVIMux ,我可以清楚地看到流為30 fps,但是在捕獲視頻時,每幀被復制4次,我得到的是120幀而不是30幀。電影的速度比慢4倍。它應該是,並且只有4個一組中的第一幀是關鍵幀。 我以8 fps進行了相同的實驗,對於收到的每個圖像,視頻中都有15幀。 在15 fps的情況下,我每幀獲得8次。

我嘗試用C ++編寫代碼並使用Graph Edit Plus對其進行測試。 有什么辦法可以控制嗎? 也許對AVIMux過濾器有一些限制?

您沒有指定可能與問題有關的捕獲格式,但是通常聽起來像是在寫入文件時該圖存在一些瓶頸,從而阻止了流以30fps的速度繼續流。 相機正在嘗試以30fps的速度產生幀,並且只要緩沖區被回收以填滿,相機就會這樣做。

但是這里緩沖區不可用,因為文件編寫器正忙於將它們放到磁盤上。 捕獲過濾器餓了,在這種情況下,它增加了“丟失的幀”計數器,該計數器隨每個捕獲的幀移動。 AVIMux使用此計數在AVI文件中插入一個指示符,該指示符實際上是“這里應該有一個幀可以寫入文件,但沒有;在回放時重復最后一幀”。 因此,文件應具有每秒30幀的占位符-有些填充有實際幀,有些填充了“丟幀”。

另外,您沒有提及是否要混音,這將成為圖表的參考時鍾,以保持音視頻同步。 如果還使用音頻流完成捕獲,則AVIMux會更改視頻流的幀速率,以使兩個流的持續時間相等。 您可以通過轉儲AVI文件標題來檢查AVIMux是否已更改視頻流的幀率(或者可以右鍵單擊資源管理器中的文件並查看屬性)。

如果我不得不對問題的根源做出猜測,我會押注捕獲驅動程序在計算丟棄的幀數時會有一個錯誤,這反過來又使AVIMux混亂。 使用其他相機會發生這種情況嗎?

暫無
暫無

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

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