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

时间:2013-05-20 13:25:48

标签: c# .net 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);

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

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

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

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

所以,我需要更有效的压缩。

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

1 个答案:

答案 0 :(得分: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);

请记住将来自AForge zip的Externals / ffmpeg / bin中的dll放入输出目录。