2012-04-09 12 views
0

デスクトップ録画アプリケーションを作成しようとしています。全画面を記録するとプログラムは正常に機能しますが、デスクトップから特定の領域を選択して記録する場合は、次のエラーが発生します。AVIStreamSetFormatエラー

Error in VideoStreamSetFormat: -2147205016

私はXvid MPEG-4コーデックを使用してAVIビデオを作成しています。私は、Xvid MPEG-4コーデックが確実な画像サイズ(幅と高さ)を受け入れないことが問題だと思います。私はこの問題に固執していませんし、誰かが私がなぜそれが機能していないのか理解できるように助けることができるかどうか尋ねています。

private void SetFormat(IntPtr psCompress) 
    { 
     BITMAPINFOHEADER bi = new BITMAPINFOHEADER(); 
     bi.biSize = (uint)Marshal.SizeOf(bi); 
     bi.biWidth = (Int32)_width; 
     bi.biHeight = (Int32)_height; 
     bi.biPlanes = 1; 
     bi.biBitCount = 24; 
     bi.biCompression = 0; // 0 = BI_RGB 
     bi.biSizeImage = _stride * _height; 

     int result = AVIStreamSetFormat(psCompress, 0, ref bi, (Int32)bi.biSize); 
     if (result != 0) 
     { 
      throw new Exception("Error in VideoStreamSetFormat: " + result.ToString()); 
     } 
    } 
+0

BitCountはフレームレートとは関係ありません。 24を試してみてください。 –

+0

それに気づいてくれてありがとうが、それでも私の問題は解決しない。 – danrt

答えて

3

問題が見つかりました。デスクトップ上の選択された領域からスクリーンショットを撮るとき、高さと幅が2に割り切れることを確認しなければなりませんでした.Xvid MPEG-4コーデックは画像​​サイズだけを受け入れないようです。

0

私は同じ問題がありました。 私の場合、スケールとレートを0に設定していました。 その関数を呼び出す前に、aviの速度を正しく指定していることを確認してください。

+1

小さなコードスニペットを表示すると、常に役立ちます。また、より多くのupvotes/acceptsを得るのに役立ちますか? – AYK

関連する問題