DirectShow.Net播放带有音频的视频

时间:2014-03-06 08:33:42

标签: c# audio directshow directshow.net

DirectShow.Net包含示例项目DxPlay,它播放没有音频的视频。我需要修改这个项目才能播放音频。我已经阅读过我需要添加一个音频过滤器并连接到pin,但我没有找到办法。

以下是设置过滤器的示例代码:

// 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);

请你告诉我如何让它播放音频?

2 个答案:

答案 0 :(得分:3)

如果您的视频已呈现且音频未呈现,则其他

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

将呈现音频部分。

答案 1 :(得分:0)

添加

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

如果同时存在视频和音频,那么在构建视频部分之后,分割器中仍然存在音频输出引脚。 RenderStream将自动找到并渲染,插入音频解码器和渲染器。