2012-08-29 25 views
-1

我正在做一個WPF應用程序,其中一個功能是記錄來自Kinect傳感器(使用Aforge和SDK 1.5)的視頻(僅RGB流)。記錄來自Kinect傳感器的RGB流

在我的應用程序中,我有一個按鈕,單擊時,它應該將視頻流保存到avi文件中。

我已經添加了引用,我複製所有.dll文件到我的項目文件夾(如被其他論壇上解釋),但某些原因,我收到此錯誤:

{"Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.":null} 

所以裏面private void button4_Click(object sender, RoutedEventArgs e)是下面的代碼:

 int width = 640; 
     int height = 480; 
     // create instance of video writer 
     VideoFileWriter writer = new VideoFileWriter(); 

     // create new video file 
     writer.Open("test.avi", width, height, 25, VideoCodec.MPEG4); 

     // create a bitmap to save into the video file 
     Bitmap image = new Bitmap (width, height, DrawingColor.PixelFormat.Format24bppRgb); 


     for (int i = 0; i < 1000; i++) 
     { 
      image.SetPixel(i % width, i % height, Color.Red); 
      writer.WriteVideoFrame(image); 
     } 
     writer.Close(); 
     } 

我會非常感謝你的幫助,也爲Im靈活的記錄RGB流的方式(如果你推薦另一種方式),只要一個它並不複雜,因爲即時通訊新的C#

+0

你可能想看看這個 - http://stackoverflow.com/questions/3179028/mixed-mode-assembly-in-net -4 - 在您的案例中,您引用的程序集中的一個是本機/管理的混合程序集,必須在運行時爲其編譯。 –

+1

[我問谷歌,它告訴我該怎麼做](https://www.google.com/search?q=Mixed+mode+assembly+is+built+against+version&oq=Mixed+mode+assembly+is+建立+對+版本&sugexp =鉻,mod = 13&sourceid = chrome&ie = UTF-8) – Reniuz

+0

@AndrasZoltan非常感謝,它的工作。我再也沒有得到這個錯誤,我實際上可以找到視頻文件,但它只是一堆紅線,而不是實際的RGB流。任何想法?謝了哥們! – user1632904

回答

1

究其原因,視頻是紅色,是因爲你與

for (int i = 0; i < 1000; i++) 
    { 
     image.SetPixel(i % width, i % height, Color.Red); 
     writer.WriteVideoFrame(image); 
    } 

你應該做的是轉換BitmapSource/WritableBitmap *(假設你是一個BitmapSourceWritableBitmap然後你就可以顯示Kinect的數據把它紅只需將該位圖添加到您的視頻幀。希望這可以幫助!

**如果您使用的是WritableBitmapconvert it to a BitmapImage,然後convert that to a Bitmap *

+0

LemurThankyou回覆。好吧,現在對我來說很有意義。我只有一個問題,我無法找到SetSource和SaveJpeg方法,儘管我包含windows.meda和windows.media.imaging。對不起,如果我看起來有點笨,但我真的只是一個新手,編程和C# – user1632904