directsound
之前写过一篇文章,谈到我在折腾 RtAudio 5.0 版本。它支持 directsound、ASIO和WASAPI 三种底层,最初的时候,使用 DS 肯定是最省事了,上篇文章也实现了这个功能。但它的问题是,如果每次“喂”给DS的音频流只有 96 个 samples,就会因为太短而导致声音支离破碎。
使用 ASIO、WASAPI 几乎不需要修改代码,可以解决这个问题。但需要注意几个点。
1、 DS、ASIO和WASAPI都支持16bit sint 的采样格式。
2、ASIO 必须得 48k 采样率(也许44.1k以上都行,但没试过),32k不出声,无提示。
3、WASAPI 的 channel 数不能为 1,不然没任何提示,就是不出声音。我们改用 2 个通道就好了。也许需要 2 个或以上才行,但我们没有试更多的情况。2019.1.30更新:给官方提了issue #180,已经修复了,channel数可以为 1。
4、ASIO 需要安装 ASIO4all 驱动,但它的官网好像挂了,csdn download 或其他地方可以下载到汉化或魔改的版本的,经测试还是可用的。
5、WASAPI 需要 windows vista 或更高的版本,Win10 以下的都需要打 SP,但具体到 SP 几需要自自己找下。我们在 windows 7 + sp1 上是可以的。
6、ASIO和WASAPI的实时性非常好。
7、RtAudio 相关的分享非常少,估计现在我这两篇是中文网络上最有价值的相关资料了。但我只是临时性地用一下,不会长久用,如果你将来有新的问题,估计我也帮不上。
相关阅读
过去PC机上播放声音和音乐比登天还难!然而,随着DirectSound和DirectMusic的出现,这一切变得相当容易了。本文根据《Windows游戏编程
DirectSound播放PCM(可播放实时采集的音频数据)
前言该篇整理的原始来源为http://blog.csdn.net/leixiaohua1020/article/details/40540147。非常感谢该博主的无私奉献,写了不少关