2014-03-06 4 views
0

DirectShow.Net에는 오디오없이 비디오를 재생하는 샘플 프로젝트 DxPlay가 포함되어 있습니다. 이 프로젝트를 수정하여 오디오를 재생해야합니다. 필자는 오디오 필터를 추가하고 핀에 연결해야한다고 읽었지만이를 수행 할 방법을 찾지 못했습니다.DirectShow.Net 오디오로 비디오 재생

// Add the filters necessary to render the file. This function will 
// work with a number of different file types. 
IBaseFilter sourceFilter = null; 
hr = m_FilterGraph.AddSourceFilter(FileName, FileName, out sourceFilter); 
DsError.ThrowExceptionForHR(hr); 

// Get the SampleGrabber interface 
m_sampGrabber = (ISampleGrabber)new SampleGrabber(); 
IBaseFilter baseGrabFlt = (IBaseFilter)m_sampGrabber; 

// Configure the Sample Grabber 
ConfigureSampleGrabber(m_sampGrabber); 

// Add it to the filter 
hr = m_FilterGraph.AddFilter(baseGrabFlt, "Ds.NET Grabber"); 
DsError.ThrowExceptionForHR(hr); 

// Connect the pieces together, use the default renderer 
hr = icgb2.RenderStream(null, null, sourceFilter, baseGrabFlt, null); 
DsError.ThrowExceptionForHR(hr); 

당신은 내가 오디오를 재생할 수있는 방법을 나에게 힌트를 주 시겠어요 : 여기

는 최대 필터를 설정하는 샘플의 코드인가? 비디오와 오디오 모두가 있으면

+1

두 번째 인수로'MEDIATYPE_Audio'을 ('sourceFilter' /'null'은 3 번째로 나머지는'null's) 또 다른 추가'RenderStream'은 어떻게됩니까? –

+0

@RomanR., 추가 icgb2.RenderStream (null, MediaType.Audio, sourceFilter, null, null) - 작동합니다. 고맙습니다! – SiberianGuy

답변

3

비디오 렌더링 및 오디오 다음, 아닌 경우 추가

icgb2.RenderStream(null, MediaType.Audio, sourceFilter, null, null) 

이 오디오 부분을 렌더링합니다.

0

다만

icgb2.RenderStream(null, null, lavSplitter, null, null); 

을 추가 한 다음에 분할 음성 출력 핀이 여전히 존재 비디오 부분을 제작 한 후에. RenderStream은 그것을 찾아 렌더링하고 오디오 디코더와 렌더러를 자동으로 삽입합니다.

+0

죄송합니다, lavSplitter가 없습니다. 그것은 내가 코드를 가지고 놀 때 등장한 여분의 라인이었습니다. 샘플의 실제 코드는 해당 라인이없는 코드입니다. – SiberianGuy

+0

다음 로마 라인이 올바른 길입니다. –