繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM