안녕하세요!!
매번 고수님들의 신세만 지내요..
안녕하세요! 캠코더(2개이상)로 들어 오는 영상을 이미지(jpeg)화 하여
파일로 저장하는 작업을 합니다.
그런데 들어오는 영상을 비트맵으로 변환하여 또다시 jpeg로 변환하여
압축하는 과정에서 메모리 참조 에러가 자꾸 나오는데 아무리 이유를
찾아 볼려구 해도 찾을 수 가 없내요.
고수님들의 조언 부탁드립니다.
그리고 이부분에서 메로리가 제대로 해제가 되지 않는지 메모리 누적 현상이
있는데 같은 이유일까요?
에러는 무조건 나오는건 아니구 각각의 영상신호(초당 3-5 프레임)을 2개정도
같이 돌리는 과정에서 2-10분이상 돌리면 나오내요..길어지거나 짧아 지는경우 있습니다.
각 카메라당 함수 호출부분이 다름
procedure TForm.GraBuffer(sender: TObject;
SampleTime: Double; pBuffer: Pointer; BufferLen: Integer);
Begin
//초당 2-7프레임
IF bCon Then
Exit;
bCon := true;
bBitmap := TBitmap.Create;
bBitmap.Pixelformat := pf24bit;
Gra.GetBitmap(bBitmap, pBuffer, BufferLen);
bBitMap.Width :=320;
bBitmap.Height :=240;
BitMaptofile(bBitMap);
bBitMap.Free;
bBitMpa := Nil;
bcon := False;
end;
//공통적으로 호출되는 함수
Function TForm.BitMaptofile(var bBitMap : TBitMap):Boolean;
var jp : TJpegImage;
FS : TMemoryStream;
Begin
jp := TJpegImage.Create;
jp.Assign(bBitMap);
Try
jp.CompressionQuality := nImgQu;
jp.Compress; //오류나오는 부분...
Except
jp.Free;
jp := Nil;
Exit;
End;
Jpegtoframe(jp, FS); //이미지를 프레임으로 변환(jpeg 메모리 프리)
;
;
;
파일로 저장..
End;