【问题标题】:DirectShow.Net play video with audioDirectShow.Net 播放带音频的视频
【发布时间】:2014-03-06 08:33:42
【问题描述】:

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

能否请您提示我如何让它播放音频?

【问题讨论】:

  • 另外一个RenderStreamMEDIATYPE_Audio 作为第二个参数(sourceFilter/null 作为第三个参数,其余的是nulls)怎么样?
  • @RomanR.,添加了 icgb2.RenderStream(null, MediaType.Audio, sourceFilter, null, null) - 它有效。谢谢!

标签: c# audio directshow directshow.net


【解决方案1】:

如果您的视频已渲染而音频未渲染,则附加

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

将渲染音频部分。

【讨论】:

    【解决方案2】:

    只需添加

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

    如果同时存在视频和音频,则在构建视频部分后,分离器中仍有一个音频输出引脚。 RenderStream 会找到并渲染,自动插入音频解码器和渲染器。

    【讨论】:

    • 对不起,我没有 lavSplitter。这是我在玩代码时出现的额外行。示例中的真实代码是没有该行的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-13
    • 1970-01-01
    相关资源
    最近更新 更多