2012-02-02 65 views
1

這可能是一個愚蠢的問題,但我很難概念化我在這裏需要做的事情......在過去,我使用DirectShow連接到一個攝像頭,並使用源過濾器,AVI多路複用器,壓縮過濾器,運行圖等等來捕獲AVI ...小菜一碟。 在這種特殊情況下,當我的非DirectShow相機驅動程序準備好緩衝區時,我會收到通知。我收到通知,然後我去抓取BYTE *並使用GDI進行渲染。我現在也需要用這些緩衝區創建一個AVI。 從概念上來說,我使用vfw之類的東西並在每次接收緩衝區時寫入AVI流中都是有意義的,當然vfw是舊技術,而且我也有一些問題需要解決(正如我在其他論壇中發佈的那樣) )。 如何將這些緩衝區放入DirectShow AVI Mux並寫入文件?我是否必須創建自己的源過濾器來接收這些緩衝區,然後將我的源過濾器和avi多路複用器添加到過濾器圖形中? 感謝您的任何提示使用DirectShow從非DirectShow源捕獲到AVI

回答

2

所以你有BYTE*與視頻幀數據。這與你所設想的非常接近。您的選擇是使用VFW AVIFileOpen和朋友寫入AVI文件,或將數據注入DirectShow管道。要做到後者,你通常會製作類似PushSource的過濾器,並從那裏推送視頻幀(通過AVI Mux到文件編寫器)。

+0

謝謝羅馬。我將研究創建PushSource過濾器。雖然我認爲我更喜歡使用VFW,但看起來工作量較少。我嘗試過但VFW有問題,這裏描述[創建AVI的問題](http://stackoverflow.com/questions/9106347/avi-created-with-avistreamwrite-has-incorrect-length-and-playback-speed)。我會繼續阻止。謝謝! – mash 2012-02-03 14:00:00

+1

如果你的視頻已經被壓縮了,那麼要寫入AVI文件,你最好使用'Video for Windows'(畢竟你不需要接觸濾波器)。如果你還需要壓縮(還有選擇合適的壓縮器)和/或與音頻合併,那麼'DirectShow'可能是更好的選擇。 – 2012-02-03 14:03:32

+0

是的,我同意你的看法,我正在研究壓縮vfw中的視頻,看起來如果我需要壓縮,使用DirectShow是有意義的。我正在研究這兩種方法,以使它們正常工作。如果你對我以前的文章中提到的VFW問題有任何想法,我將不勝感激。否則,非常感謝您的幫助。 – mash 2012-02-03 15:19:06