我的应用程序从外部设备接收速率为30fps的图像序列(BitmapImage)。我使用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支持哪些压缩?为了减轻保存文件的重量,我应该使用什么压缩方式?
发布于 2013-05-20 23:25:58
我怀疑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压缩包中外部变量/ffmpeg/bin中的dll放到输出目录中。
https://stackoverflow.com/questions/16650589
复制相似问题