[英]C#: video compression using aforge.net
我的应用程序从外部设备以30 fps的速率接收图像序列(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支持哪些压缩? 我应该使用哪种压缩方式来减轻保存文件的重量?
我怀疑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放入您的输出目录中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.