【问题标题】:click noise at the start of the audio play by DirectShow在 DirectShow 开始播放音频时单击噪音
【发布时间】:2019-11-12 01:06:22
【问题描述】:

我正在尝试对 DirectShow 音频播放进行编码。 我在每个媒体(mp3)播放开始时听到咔嗒声。 谷歌搜索,我看到 SyncUsingStreamOffset() 但没有帮助。 我做错了吗?或任何解决方法建议表示赞赏。

IAMGraphStreams* pSyncUsing;
m_pMediaControl->QueryInterface(&pSyncUsing);
pSyncUsing->SyncUsingStreamOffset(TRUE);

HRESULT hr = m_pMediaControl->Run();
if (SUCCEEDED(hr)) {
  transportState = TransportState::PLAYING;
}

【问题讨论】:

  • mp3 文件也这样做吗?它是文件还是生成的?在中心开始波浪或淡入可能会有所帮助。取决于您的实际问题,并且该问题没有太多信息...
  • 菲尔,感谢您的评论。这些是从 CD 上翻录的 MP3 集合。由其他播放器如 WMP 播放显示没有问题。我正在考虑淡入,但我的代码肯定缺少一些东西。

标签: c++ directshow


【解决方案1】:

我想我找到了点击噪音问题的原因。 在原始代码中,实例化了 SampleGrabber 以供以后使用 FFT/Visualization。 我以为它只是通过流,但不是,可能会导致一些延迟问题?

如果我删除这个过滤器,点击噪音就会消失。

【讨论】:

  • 这应该是对您的问题的编辑,因为它不是确切的答案。 Sample Grabber 不会增加延迟,但您可能只是在处理过程中添加到缓冲区,这会导致故障。显然你的问题是不完整的,因为你刚刚添加了一个非常重要的细节,然后仍然不清楚 pin 上的媒体类型是什么,以及你在 Sample Grabber 处理中做了什么。故障肯定与您的代码有关,并且整个框架在这里完美地完成了它的工作。
猜你喜欢
  • 2012-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多