2010-03-12 4 views
4

마이크에서 오디오를 캡처하여 파일로 스트리밍하기 위해 필터 그래프를 구성하는 샘플 애플리케이션을 만들었습니다. 대신 메모리 버퍼로 스트림 할 수있는 필터가 있습니까?DirectShow를 사용하는 파일 대신 오디오 스트림을 메모리 버퍼에 쓰려면 어떻게해야합니까?

나는 msdn에 대한 기사에서 설명 된 접근법을 따르고 있으며, 현재 CLSID_FileWriter 개체를 사용하여 오디오를 파일에 쓰고 있습니다. 이것은 잘 작동하지만 메모리 버퍼에 쓰는 방법을 알 수는 없습니다.

메모리 싱크 필터가 있습니까? 아니면 직접 만들어야합니까?

+0

메모리 버퍼를 만든 후에는 무엇을하고 싶습니까? 임시 파일을 Win32 임시 파일 API와 함께 사용할 수 있습니까? IIRC는 버퍼가 마치 프로세스가 종료 될 때 자동 삭제 기능을 지원합니다. – jnoss

+0

@electronherer 이미 메모리에있는 문서 구조에 임베드했습니다. 나는 임시 파일을 사용하는 것에 대해 생각해 왔지만 디스크에 저장할 필요가 전혀 없기 때문에 차라리 사용하지 않을 것입니다. –

답변

5

(안하지만 가장 우아한)이 작업을 수행하는 가장 쉬운 방법 (I는 윈도우 XP와 함께 제공됩니다 하나를 선호하는 것은) 그래프를 종료하기 위해 Null Renderer 필터 다음에 Sample Grabber 필터를 사용하는 것입니다. 이렇게하면 샘플 그래버의 ISampleGrabber 인터페이스를 사용하여 원시 미디어 스트림에 액세스 할 수 있습니다. 일단 샘플이 있으면 원하는 샘플을 샘플과 함께 사용할 수 있습니다.

+0

정말 고마워! 필자는 메모리 소스/싱크 필터를 표준 directshow/windows에서 사용할 수 있었으면 좋겠다. –

+0

ISampleGrabber가 사용되지 않습니다. 나는 대신 [IMediaSample] (http://msdn.microsoft.com/en-us/library/dd407001.aspx)을 사용하여 원시 메모리에 직접 액세스한다고 말하고 싶습니다. – bobobobo

관련 문제