1

デスクトップレコーディングアプリケーションを作成しようとしています。フルスクリーンで録画すると、プログラムは想定どおりに動作しますが、デスクトップから特定のリージョンを選択して録画すると、次のエラーが発生する場合があります。int result = AVIStreamSetFormat(psCompress, 0, ref bi, (Int32)bi.biSize);

Error in VideoStreamSetFormat: -2147205016

XvidMPEG-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());
        }
    }
4

2 に答える 2

3

何が問題なのかわかりました。デスクトップ上の選択した領域からスクリーンショットを撮るとき、高さと幅が2に割り切れるのを確認する必要がありました。XvidMPEG-4コーデックはどの画像サイズも受け入れないようです。

于 2012-05-31T16:19:44.937 に答える
0

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

于 2012-09-20T13:22:27.463 に答える