2011-07-06 50 views
15

私はこのような疑問がたくさんあることを知っています。C#.Netを使用してビデオにする画面をキャプチャする方法は?

Windows Mediaエンコーダ9を使用したくないのですが、Windows Mediaエンコーダ9を使用するのは問題があり、サポートされなくなりました。

多くのスクリーンショットをキャプチャしてffmpegでビデオを作成することが可能ですが、サードパーティの実行ファイルは使用したくありません。

.netのソリューションのみがありますか?

+0

これはSilverlight 4で実現できますが、これがオプションであるかどうかはわかりません。 –

+0

もし可能なら.net 3.5とwinformsのみ –

+0

どのOSを使用していますか? –

答えて

9

答えはMicrosoft Expression Encoderです。それは私の意見に最も簡単なVista上で何かを記録する方法や窓に応じているコメントのフィードバックに基づいて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 'またはその依存関係の1つ。システムは、指定されたファイルを見つけることができません。 –

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は、私が使用したいオーディオデバイスです。デフォルトは0です。

現在、2つの波形がサポートされています。ステレオまたはモノラルの16bitで44100。

真のパラメータは、オーディオをmp3形式にエンコードすることを示します。私はこれは、.mp4ファイルで結合された非圧縮オーディオが私のために再生されないので、x264を選択する際に必要と考えています。

160は、オーディオをエンコードするビットレートです。録画を停止するには

~~~~~

もしあなたがなど

、レコーダーのクラスを編集し、寸法を変更、秒あたりのフレームすることができますので、ちょうど

recorder.Dispose(); recorder = null;

すべてがオープンソースであります

~~~~

このライブラリを使用するには、ダウンロードするか、以下のgithub/codeplexライブラリを参照してください。また、NuGetを使用することができます。

インストール・パッケージSharpAvi

オリジナルポスト:

シャープAVIを: https://sharpavi.codeplex.com/ または https://github.com/baSSiLL/SharpAvi

あり、そのライブラリ内のサンプルプロジェクトがありますその中の素晴らしいスクリーンレコーダーと設定用メニューなど。

このStackoverFlowに関する質問でScrenaが最初に見つかったのですが、Mp3 Lameエンコーダを正しく動作させるためのいくつかの問題がありました。 ScrenaはSharpAVIのラッパーです。私はScrenaを削除し、SharpAviのサンプルから抜け出すことで、私はより良い運があることが分かった。

+0

それはしばらくしてきましたが、SharpAVIにはLameEncoderのバージョンがあり、私はそれを再現できませんでした。正確な問題は忘れてしまいましたが、LameEncoderをビルドするたびに機能が不足していたとか、別のメソッド名だったと思います.SharpAVI内の実際のDLLファイルを見つけて使いました。 – ickydime

+0

ScaleaでLame dllファイルを使用しようとすると、メソッドにミスマッチがありました。 Screnaが別のバージョンのラメを使っていたかのように。そして私は必要とされていた不自然なdllを再現することができませんでした。 – ickydime

関連する問題