나는 웹캠 캡처 응용 프로그램을 가지고 있으며 내 WPF UI에서 비디오 미리보기를 구현하려고합니다. 캡처는 C++ DLL에서 발생합니다. 현재 솔루션이 있지만 너무 만족스럽지 않습니다. 주요 목표는 UI에서의 비디오 미리보기가 비디오 프레임을 압축하여 디스크에 기록해야하기 때문에 C++ DLL에 많은 영향을 미치지 않는 것입니다. 압축은 CPU를 많이 사용하기 때문에 모든 프레임을 표시 할 수 없습니다.C에서 비디오 미리보기
나의 현재 비디오 미리보기 솔루션입니다 : 이미지 컨트롤 내 창에 사용되며, 소스 속성이 데이터 바인더 제본 BitmapSource는이다
라는 VideoPreviewSource
나는 시스템을 설정 .Threading.TimerCallback 내 미리보기를 업데이트 할 수 있습니다. 타이머 콜백 함수는 UpdatePreview()를 호출하는 UI (this.Dispatcher.BeginInvoke 사용)를 업데이트 할 수있는 스레드로 전달됩니다.
UpdatePreview()는 C++ DLL에 비디오 프레임을 요청합니다. DLL을 호출하면 이미지의 원시 데이터가 byte [] _rawImageData로 저장되며,이 데이터는 윈도우의 생성자에서 한 번 할당됩니다.
UpdatePreview()는 다음과 같이 VideoPreviewSource를 설정합니다. BitmapSource.Create (width, height, 96, 96, pf, null, _rawImageData, width * 4); 마지막으로 OnPropertyChanged ("VideoPreviewSource")가 호출되었습니다.
타이머를 자주 만들면 가비지 수집이 덜 자주 호출되고 기본적으로 메모리 누수처럼 보입니다.
비디오 미리보기에 더 좋은 방법이 있습니까?
C++ DLL에서 제공하는 데이터를 릴리스해야합니까? –