2011-04-21 64 views
1

我已瀏覽在這裏(堆棧溢出)試圖找到一個穩定的方式來獲得圖像(像素陣列)進行視頻文件的總稱。在C#.NET,我發現:獲得特定的視頻幀

http://www.codeproject.com/KB/graphics/ExtractVideoFrames.aspx

這幾乎正是我期待的,但我不斷收到此錯誤:

Could not load file or assembly 'Interop.DexterLib, 
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' 
or one of its dependencies. An attempt was made to load 
a program with an incorrect format. 

一切編譯罰款,但運行.NET運行庫時不喜歡'Interop.DexterLib',我已經仔細檢查過它是否在exe文件夾中,並且項目已經正確鏈接並編譯好了。

經過一番googleing的錯誤似乎是圍繞86 .DLL文件,並在64位操作系統上運行它們。爲了否定這一點,他們推薦構建x86,VS2010沒有這個選項,因爲他們用「任何CPU」代替它。這是問題嗎?有沒有什麼好的方法來解決它?

有沒有更好的方式來獲得在C#中的視頻幀,我已經看過DirectShow.Net和我的生活,我不能明白什麼是內直接顯示回事。我還沒有找到像這樣簡單的解決方案(如果可行的話)。

我的最終目標是能夠從2個視頻文件獲得幀字節數組...修改它們,然後將其保存到一個新的視頻。首先要把視頻記錄到內存中。

回答

0

某處有問題,你的Visual Studio。我的2010有這些選項: enter image description here

+0

這可能是問題,可能會不會是因爲這個項目是從VS2008「升級」?我在任何地方的「Build」頁面上都沒有「Platform Target:」。 ?在平臺我得到的唯一選項是「活動(所有CPU)(我試圖做的事:http://preview.tinyurl.com/3rn3l5o),但都沒有效果 – blackboots 2011-04-21 06:05:42

+0

在2010年開始的工作室一個新的DLL項目,然後使用。 – Vnuk 2011-04-21 06:15:26

+0

完成上述步驟後,我可以從Visual Studio頂部的下拉菜單中打開「配置管理器...」,創建了一個新的「主動解決方案配置」,然後讓我更改爲x86或x64。然後,編譯器給我關於/不安全的未使用。在檢查「允許不安全代碼」後,編譯並現在(可能是由於我選擇了錯誤的視頻文件),我不斷收到錯誤:沒有找到視頻流。謝謝你的信息。 – blackboots 2011-04-21 06:16:43

0

該文章中的MediaDet是DirectShow的一部分。只需使用DirectShow.NET,鏈接問題就會消失。如果您需要將修改過的幀保存到其他視頻中,則必須構建DirectShow圖形,只使用MediaDet不會對您有所幫助。