当前位置:  开发笔记 > 编程语言 > 正文

Windows中低级音频的最佳API?

如何解决《Windows中低级音频的最佳API?》经验,为你挑选了2个好方法。

我正在研究用C语言编写的音频应用程序.我需要在Windows下提供实时音频播放.我需要决定使用哪个音频API.我打算使用基本的waveOut API,但我想查看社区推荐的内容.

我希望代码能够在任何最新版本的Windows上运行,而无需安装库; 我想要最小的延迟.

我不需要或不需要任何"效果",我只需要忠实地播放应用程序生成的任何波形样本.

我的理解是,Windows上的大多数专业音频应用程序都使用ASIO,这提供了出色的低延迟,但我不想要ASIO,因为我希望我的代码能够正常工作,大多数人都没有在他们的计算机上预安装ASIO .(稍后我可以回过头来添加ASIO作为选项,但我会先找到最通用的解决方案.)

那里有什么东西比waveOut更适合我的目的,还是最好的选择呢?



1> John Knoelle..:

这取决于你想要做什么.基本的waveOut音频API更适合流式传输音频.它允许您排队几个缓冲区并让它们连续自动播放.但是如果正在播放音频并且您想要更改它,或者添加一些内容,则相对较难.

DirectX音频更适合基于事件的音频.你可以同时玩几件事情,而不必亲自动手.您可以轻松添加或删除少量音频 - 例如当用户拉动枪上的触发器时播放声音.但是流式传输(即一个接一个地播放1个缓冲区)更难.

waveOut旨在促进播放恒定的音频,如.mp3文件.DirectX专为间歇性音频而设计,如游戏中的反馈.

就编程难度而言,ASIO就像waveOut和DirectX中最差的一样.它不是那么稳定.应用程序通常无法共享音频设备.但它为您提供了对该音频硬件的最低延迟访问.

ASIO还为您提供了一种在多个设备上同步播放的方法.

如果您不需要在播放之前更改要播放的内容,并且您不需要同步多个设备,那么您不需要ASIO.



2> steveha..:

当我问这个问题时,我使用waveOut和waveIn API编写了流代码.从那时起,我发现了一个有用的库:

PortAudio http://www.portaudio.com/

PortAudio是具有商业友好许可证的免费软件.如果您编写代码来调用PortAudio,它应该可以使用waveOut设备,也可以使用Windows下的ASIO设备; 然后可以为Linux重新编译它,并且应该与ALSA设备一起使用; 然后它可以为Mac重新编译,并且应该与CoreAudio设备一起使用.我没有测试过Mac部件,但我的项目在Windows和Linux上运行良好.

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有