2011-07-06 102 views
15

我知道有很多這樣的問題。如何使用C#.Net捕獲屏幕視頻?

但我不想使用Windows媒體編碼器9,因爲這是一個問題,得到一個,然後它不再受支持。

我知道,有一種可能性是捕獲大量的屏幕截圖並使用ffmpeg創建視頻,但我不想使用第三方可執行文件。

是否有.net唯一的解決方案?

+0

您可以使用Silverlight 4完成此操作,不確定這是否適合您。 –

+0

如果它可能是.net 3.5,winforms只有 –

+0

你正在使用哪個操作系統? –

回答

9

答案是Microsoft Expression Encoder。它是根據我的意見記錄在Vista上一些最簡單的方式和Windows 7

private void CaptureMoni() 
     { 

      try 
      { 
       Rectangle _screenRectangle = Screen.PrimaryScreen.Bounds; 
       _screenCaptureJob = new ScreenCaptureJob(); 
       _screenCaptureJob.CaptureRectangle = _screenRectangle; 
       _screenCaptureJob.ShowFlashingBoundary = true; 
       _screenCaptureJob.ScreenCaptureVideoProfile.FrameRate = 20; 
       _screenCaptureJob.CaptureMouseCursor = true; 

       _screenCaptureJob.OutputScreenCaptureFileName = string.Format(@"C:\test.wmv"); 
       if (File.Exists(_screenCaptureJob.OutputScreenCaptureFileName)) 
       { 
        File.Delete(_screenCaptureJob.OutputScreenCaptureFileName); 
       } 
       _screenCaptureJob.Start(); 
      } 
      catch(Exception e) { } 
     } 
+2

舊帖子,但我覺得我應該提及,如果你想錄制視頻的話,使用Expression Encoder需要專業許可證持續時間超過10分鐘,並且GPU編碼也需要專業許可證。 (我個人無法獲得任何沒有GPU編碼的輸出) – Sakuya

+0

謝謝你的回答@ masterchris_99。我也想使用MEE,但是得到下面的錯誤; PCba.Tests.Repository.dll中發生類型'System.IO.FileNotFoundException'的異常,但未在用戶代碼中處理 其他信息:無法加載文件或程序集'Microsoft.Expression.Encoder,Version = 4.0.0.0 ,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依賴項之一。該系統找不到指定的文件。 –

2

編輯基於評論反饋:

由名開發人員baSSiLL慷慨地分享了具有存儲庫屏幕錄製c#庫以及c#中的示例項目,顯示如何使用它捕獲屏幕和麥克風。

使用示例代碼開始屏幕捕獲是直線前進的:

recorder = new Recorder(_filePath, 
      KnownFourCCs.Codecs.X264, quality, 
      0, SupportedWaveFormat.WAVE_FORMAT_44S16, true, 160); 

_filePath是我想要的視頻保存到文件的路徑。

您可以傳入各種編解碼器,包括AVI,MotionJPEG,X264等。在x264的情況下,我必須首先在我的機器上安裝編解碼器,但AVI可以直接使用。

質量只有在使用AVI或MotionJPEG時才起作用。 x264編解碼器管理其自己的質量設置。

以上0是我想使用的音頻設備。默認值爲零。

它目前支持2種波形格式。 44100在16位立體聲或單聲道。

真實參數表示我希望將音頻編碼爲mp3格式。我相信這是選擇x264時需要的,因爲在.mp4文件中合併的未壓縮音頻不會爲我播放。

160是音頻編碼的比特率。

~~~~~

停止錄製你只是

recorder.Dispose(); recorder = null;

一切都是開源的,所以你可以編輯記錄類和更改尺寸,每秒幀數等

~~~~

要起牀,與此庫運行,你將需要下載或從拉github/codeplex庫如下。您還可以使用的NuGet:

安裝,包裝SharpAvi

原貼:

夏普AVI: https://sharpavi.codeplex.com/https://github.com/baSSiLL/SharpAvi

有是有一個庫中的樣本項目一個偉大的屏幕錄像機,以及設置菜單等。

我發現Screna首先從這個StackoverFlow問題的另一個答案,但我遇到了一些涉及讓Mp3 Lame編碼器正常工作的問題。 Screna是SharpAVI的包裝。我通過刪除Screna並從SharpAvi的樣本中找到了我,結果我運氣更好。

+0

它已經有一段時間了,但我相信SharpAVI有一個我無法重新創建的LameEncoder版本。我忘了確切的問題,但認爲每當我構建LameEncoder時,它都缺少一些函數,或者它是一個不同的方法名稱等等。我發現了SharpAVI中的實際DLL文件,並且一旦我使用它,它就順利進行。 – ickydime

+0

當我試圖使用Screna使用Lame dll文件時,在方法中出現了匹配錯誤。就好像Screna正在使用不同版本的跛腳一樣。而且我無法重新創建所需的蹩腳的dll。 – ickydime