工作中有个需求是关于抓取扬声器的声音, 为什么会有这个需求bsp; 试想我们在共享远程桌面时,如果能够把本地桌面应用程序的声音也一起发给对方,然后播放出来, 用户体验该是多么棒。
在考虑如何实现这个需求前,我们先讨论下电脑声音的三种模式: 1) render模式 该方式实际上就是播放(output)声音,常见的API如PlaySound, WaveOutXXX, DirectSound等
2) capture模式 该方式实际上就是录入(input)声音, 也就是我们通过麦克风输入声音,常见API如WaveInXXX
3)loopback模式 该方式就是我们需要实现的方式,即把扬声器里播放的声音抓取下来。
对于上面3种方式,render和capture方式应该比较好理解, 也都是系统有API直接支持的方式, loopback方式就比较奇怪了,在XP上该方式系统实际都没有正式支持, loopback的录制方式实际上也涉及到CD的版权问题。
下面是XP时代的Audio架构图, 该架构下audio的合成和压缩都是在系统内核里进行的:
但是在Vista之后,微软修改了原来的媒体架构, 以COM的方式重新封装了core audio API:
相关资源:视美乐购smlg2020-9-25版.apk-互联 文档类资源-CSDN文库
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!