2013-05-20 2 views
3

내 응용 프로그램은 속도 30fps로 외부 장치에서 이미지 시퀀스 (BitmapImage)를받습니다. 받은 스트림을 .avi 파일로 저장하기 위해 Aforge.net 라이브러리를 사용하고 있습니다. 는 내가 AVIWriter inizializing에 대해 다음 코드를 사용 :C# : aforge.net을 사용한 비디오 압축

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

그러나 생성 된 파일이 너무 :

AVIWriter writer; 
writer = new AVIWriter("wmv3"); 
writer.FrameRate = 30; 
writer.Open("test.avi", 320, 240); 

을 그리고 각 프레임에 대해 나는 다음과 같은 코드 라인, 비디오 스트림에 추가 접수 무거운. (10 초는 약 3Mb에 해당).

나는 또한 writer.Quality의 낮은 레벨을 설정했지만 결과는 동일합니다 (단지 5-7 % 적음).

그래서 저는보다 효율적인 압축이 필요합니다.

Aforge.net에서 지원되는 압축은 무엇입니까? 저장된 파일의 무게를 줄이기 위해 어떤 압축을 사용해야합니까?

답변

5

프레임 간 압축이 AVIWriter에서 사용되지 않는다고 생각됩니다 (하지만 잘못된 것일 수 있음). 대신 Aforge.Video.FFMPEG에서 VideoFileWriter를 사용하려고 할 수 있습니다 : AForge이 출력 디렉토리에 압축에서

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

가 외부 참조 /는 FFmpeg/빈에서 DLL을 넣어해야합니다.

+0

FFmpeg를 사용하면 FFmpeg 라이브러리의 특정 부분을 사용하는 경우 GPL로 소스를 릴리스해야 할 수도 있음을 잊지 마십시오. 사용 가능한 AForge 버전이 있습니다.이 버전은 LGPL에서 사용할 수있는 버전입니다 (개인 소스를 배포하지 않아도되는보다 적은 GPL) – netniV