C++ 单击DirectShow音频播放开始处的“噪波”

C++ 单击DirectShow音频播放开始处的“噪波”,c++,directshow,C++,Directshow,我正在尝试编写DirectShow音频播放代码。 在开始播放每个媒体(mp3)时,我都会听到咔嗒声。 Google和我看到SyncUsingStreamOffset()但没有帮助。 我做错了吗?或任何解决方案建议,不胜感激 IAMGraphStreams* pSyncUsing; m_pMediaControl->QueryInterface(&pSyncUsing); pSyncUsing->SyncUsingStreamOffset(TRUE); HRESULT hr

我正在尝试编写DirectShow音频播放代码。 在开始播放每个媒体(mp3)时,我都会听到咔嗒声。 Google和我看到SyncUsingStreamOffset()但没有帮助。 我做错了吗?或任何解决方案建议,不胜感激

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

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

我想我找到了咔嗒噪音问题的原因。 在原始代码中,实例化了采样捕获器,以便以后使用FFT/可视化。 我以为它只是通过流,但不是,可能会导致一些延迟问题


如果我删除此过滤器,咔哒声就会消失。

mp3文件也会这样做吗?它是文件还是生成的?在中心或淡入时开始波浪可能会有所帮助。这取决于你的实际问题,而且这个问题没有太多的信息……菲尔,谢谢你的评论。这些是从CD中摘取的MP3的集合。由像WMP这样的其他玩家进行比赛没有问题。淡入是我正在考虑的,但我的代码肯定遗漏了一些东西。这应该是对你的问题的编辑,因为它不是确切的答案。Sample Grabber不会增加延迟,但您可能只是在处理过程中添加到缓冲区,这会导致出现故障。显然,您的问题是不完整的,因为您刚刚添加了一个非常重要的细节,然后仍然不清楚引脚上的媒体类型,以及您在样本采集处理中所做的工作。这个小故障当然与您的代码和框架有关,总体而言,它在这里完美地完成了它的工作。