4

私のアプリケーションは、レート 30 fps で外部デバイスから一連の画像 (BitmapImage) を受け取ります。受信したストリームを .avi ファイルに保存するために Aforge.net ライブラリを使用しています。AVIWriter を初期化するために次のコードを使用しました。

AVIWriter writer;
writer = new AVIWriter("wmv3");
writer.FrameRate = 30;
writer.Open("test.avi", 320, 240);

受信したフレームごとに、次のコード行を使用してビデオ ストリームに追加します。

writer.AddFrame(ResizeBitmap(BitmapImage2Bitmap(e.ColorFrame.BitmapImage),320,240));

しかし、生成されたファイルは重すぎます。(10 秒は約 3Mb に相当します)。

のレベルを低く設定してみましwriter.Qualityたが、結果は同じようです (わずか 5 ~ 7% 減)。

したがって、より効率的な圧縮が必要です。

Aforge.net でサポートされている圧縮は何ですか? 保存するファイルの重量を減らすには、どの圧縮を使用すればよいですか?

4

1 に答える 1

7

AVIWriter ではフレーム間圧縮が使用されていないと思われます (ただし、間違っている可能性があります)。代わりに、Aforge.Video.FFMPEG の VideoFileWriter を使用してみてください。

var writer = new VideoFileWriter();
writer.Open("test.mpg", 320, 240, 30, VideoCodec.Default, 1000);
// add your frame
writer.WriteVideoFrame(frame);

AForge zip の Externals/ffmpeg/bin からの dll を出力ディレクトリに配置することを忘れないでください。

于 2013-05-20T15:25:58.393 に答える