XAudio2 延迟,缓冲区大小小



我正在写一个视频播放器。对于音频部分,我使用的是XAudio2。为此,我有单独的线程正在等待 BufferEnd 事件,然后用新数据填充缓冲区并调用 SubmitSourceBuffer。问题是,如果缓冲区大小较小(1024 字节(,XAudio2(驱动程序或声卡(在播放下一个缓冲区之前会有很大的延迟。我进行了测量,XAudio需要两倍的时间才能播放这样的块。(1024 字节的 48kHz 原始 2 通道 PCM 块应该在近 5 毫秒内播放,但在我的电脑上它播放长达 10 毫秒(。如果我制作 4KB 或更多的缓冲区,几乎没有延迟。我需要这么小的缓冲区才能与视频时钟或外部时钟同步(就像ffplay一样(。如果我使缓冲区太大,那么由于同步内容,最终用户将在输出中听到很多噪音。

此外,我还对所有解码

和同步音频或任何其他可能阻止或产生延迟的功能进行了测量,它们需要 0 或 1 毫秒才能执行,因此它们不是 100% 的问题。

有谁知道它会是什么以及为什么会发生?任何人都可以检查他是否有与小缓冲区相同的延迟问题吗?

我没有遇到任何使用.wav文件的延迟或暂停。如果您使用的是mp3格式,则在压缩操作期间,它可能会在声音的开头和结尾增加静音,从而导致声音播放延迟。有关更多信息,请参阅此帖子。

相关内容

  • 没有找到相关文章

最新更新