用waveOut进行放音的问题

xxgclj 2008-12-10 11:56:49
我用采集卡将声音采集到电脑缓冲中,用waveOut函数进行放音,各段数据之间总是能感受到小的停顿,不是那么连贯,请问如何解决?我用两缓冲轮流放也不行啊。
...全文
568 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
greenspan 2008-12-23
  • 打赏
  • 举报
回复
hi
wenyongjie 2008-12-15
  • 打赏
  • 举报
回复
MARK
blackboycpp 2008-12-11
  • 打赏
  • 举报
回复
还有一点东西, 都是google的, 希望有帮助.

Waveout 是在32位的Windows上的一种老旧且过时,用来播放数字音讯的应用程序接口(ApplicationProgramming Interface,简称API)。旧的Windows操作系统(如Win9x WinNT4)在 Waveout的完成度很高(因为 waveout 是针对这些操作系统设计的),如果你想获得最好的效能,你应该在这些操作系统上使用 Waveout输出。然而Waveout的功能有所局限,它无法支持「混和多重音讯流」的功能。这显示在Win2k/XP下的Waveout,只是为了旧的软件的兼容性所提供的,也因此Win2k/XP下 Waveout的完成度很糟,它没有使用任何的硬件加速功能,所有的混音动作都是用软件来执行(因此当CPU的使用率很高时,常常会发生类似CD跳针的断音现象)。

Directsound 是种较新、较现代化的声音播放 API,都已经内建在最近的32位Windows操作系统中。 Directsound支持混和多重音讯流、独立的音量控制、硬件加速层及硬件仿真层(如果某些功能硬件无法支持 ,可以用软件来仿真,因此程序设计师无须担心他们的新l33t 码无法在旧的声霸卡16上运作)。一般来说,只要你的操作系统安装了适当的声卡驱动程序及最新的 DirectX,Direstsound都应该可以运作的很好(除了WinNT4以外)。在Win2k/XP下,Directsound 比 waveout更好,因为在这些操作系统里,Directsound 的完成度相对的比 waveout 来的更高(比 waveout占用较少的CPU资源,自由度较高,且不会有 Waveout 常见的小毛病)。Directsound原本是被设计来让游戏利用系统的硬件加速功能,而无须直接接触低阶的硬件函数(就如同 DirectX 其它的组件)。
blackboycpp 2008-12-11
  • 打赏
  • 举报
回复
ave out标准的称呼应该是 Multimedia Extensions(MME,多媒体扩展),早在Windows 3.1时代就出现了,它在Win 9X和NT 4.0中已经非常完善了,Wave out可以在这些操作系统上获得最好的效果。不过,Wave out毕竟非常老旧了,它的局限很多:声音输出的延时较长,没有任何硬件加速功能,混音是靠软件来完成的,在CPU占用率很高的时候,甚至会发生声音不连续的现象。Win 2000/XP提供的Wave out输出的目的只是为了和旧的软硬件兼容,所以,在这些操作系统下的录音和播放软件中应该避免使用Wave out。
xxgclj 2008-12-11
  • 打赏
  • 举报
回复
没人做过吗?

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧