Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#:使用forge.net进行视频压缩_C#_.net_Compression_Video Capture_Aforge - Fatal编程技术网

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

C#:使用forge.net进行视频压缩,c#,.net,compression,video-capture,aforge,C#,.net,Compression,Video Capture,Aforge,我的应用程序以30 fps的速率从外部设备接收一系列图像(BitmapImage)。 我正在使用一个org.net库将收到的流保存在.avi文件中。 我使用以下代码对AVIWriter进行了本地化: AVIWriter writer; writer = new AVIWriter("wmv3"); writer.FrameRate = 30; writer.Open("test.avi", 320, 240); 对于接收到的每一帧,我将其添加到视频流中,代码行如下: writer.AddFra

我的应用程序以30 fps的速率从外部设备接收一系列图像(BitmapImage)。 我正在使用一个org.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%)

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


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

我怀疑AVIWriter中没有使用帧间压缩(但我可能错了)。 您可以尝试改用arge.Video.FFMPEG中的VideoFileWriter:

var writer = new VideoFileWriter();
writer.Open("test.mpg", 320, 240, 30, VideoCodec.Default, 1000);
// add your frame
writer.WriteVideoFrame(frame);

请记住将Externals/ffmpeg/bin中的DLL从一个RGE zip放入您的输出目录。

但不要忘记,如果您使用ffmpeg库的某些部分,使用ffmpeg可能会导致您需要在GPL下释放源代码。有一个版本的AForge仅包含LGPL下可用的版本(较小的GPL不要求您分发您的个人资源)