C#:使用aforge.net进行视频压缩

pas*_*k23 4 .net c# compression video-capture aforge

我的应用程序从外部设备接收一系列图像(BitmapImage),速率为30 fps.我正在使用Aforge.net库来保存.avi文件中收到的流.我使用以下代码来初始化AVIWriter:

AVIWriter writer;
writer = new AVIWriter("wmv3");
writer.FrameRate = 30;
writer.Open("test.avi", 320, 240);
Run Code Online (Sandbox Code Playgroud)

对于收到的每个帧,我将其添加到视频流中,使用以下代码行:

writer.AddFrame(ResizeBitmap(BitmapImage2Bitmap(e.ColorFrame.BitmapImage),320,240));
Run Code Online (Sandbox Code Playgroud)

但生成的文件太重了.(10秒对应于约3Mb).

我也尝试设置低水平writer.Quality,但结果似乎相同(只减少5-7%).

所以,我需要一个更有效的压缩.

Aforge.net支持哪些压缩?我应该使用什么压缩来减少保存文件的重量?

Mat*_*tis 6

我怀疑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);
Run Code Online (Sandbox Code Playgroud)

记得将来自AForge zip的Externals/ffmpeg/bin中的dll放入输出目录.