青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

工作中有個(gè)需求是關(guān)于抓取揚(yáng)聲器的聲音, 為什么會有這個(gè)需求? 
試想我們在共享遠(yuǎn)程桌面時(shí),如果能夠把本地桌面應(yīng)用程序的聲音也一起發(fā)給對方, 用戶體驗(yàn)該是多么棒。

在考慮如何實(shí)現(xiàn)這個(gè)需求前,我們先討論下電腦聲音的三種模式:

1) render模式
該方式實(shí)際上就是播放(output)聲音,常見的API如PlaySound, WaveOutXXX, DirectSound等

2) capture模式
該方式實(shí)際上就是錄入(input)聲音, 也就是我們通過麥克風(fēng)輸入聲音,常見API如WaveInXXX

3)loopback模式
該方式就是我們需要實(shí)現(xiàn)的方式,即把揚(yáng)聲器里播放的聲音抓取下來。

對于上面3種方式,render和capture方式應(yīng)該比較好理解, 也都是系統(tǒng)有API直接支持的方式, loopback方式就比較奇怪了,在XP上該方式系統(tǒng)實(shí)際都沒有正式支持, loopback的錄制方式實(shí)際上也涉及到CD的版權(quán)問題。

下面是XP時(shí)代的Audio架構(gòu)圖, 該架構(gòu)下audio的合成和壓縮都是在系統(tǒng)內(nèi)核里進(jìn)行的:
在XP這種方式下,我們要抓去聲卡播放的聲音沒有正規(guī)的方式, 一般來說只有2中: 
一種是虛擬聲卡,還有一種就是Hook audio 播放相關(guān)的API (很多時(shí)候我們會發(fā)現(xiàn)API hook是沒有辦法時(shí)的全能辦法 ^_^)

但是在Vista之后,微軟修改了原來的媒體架構(gòu), 以COM的方式重新封裝了core audio API:
可以看到原來Auido的API (waveXXX, mixerXXX和DirectSound)都依賴下層的新封裝的Core Audio APIs,而且這些APi都工作在用戶模式, 也就是說聲音的合成是在用戶模式下通過軟件實(shí)現(xiàn)的。在Vista之后, 可以看到我們可以單獨(dú)控制每個(gè)應(yīng)用程序的聲音了, 因?yàn)槊柯稟udio都可以工作在不同的Audio session了。通過新的Core Audio API, 我們可以很容易的實(shí)現(xiàn)聲卡聲音的抓取, 具體可參考這里:http://msdn.microsoft.com/en-us/library/ms679146.aspx

但是很快我們又發(fā)現(xiàn)了另外一個(gè)問題, 在一個(gè)網(wǎng)絡(luò)會議里面, 如果共享自己桌面的人加入了VOIP, 另外也有其他與會者也加入了VOIP, 與會者說話的聲音會在共享桌面端播放出來,但是該聲音和共享的應(yīng)用程序的聲音又被一起被抓下來后發(fā)給了原來的與會者, 這樣就有回聲了。

這里就涉及到抓取聲卡聲音時(shí)能否排除掉某個(gè)聲音,可惜答案是系統(tǒng)WASAPI不支持這種方式。但是因?yàn)榕c會者VOIP的聲音是我們自己播放的,所以我們有該聲音樣本, 理論上我們可以通過噪聲消除從混音里過濾掉與會者的聲音,當(dāng)然這塊知識太高深,需要專門的人才能做了。
 一些Audio相關(guān)的例子:http://msdn.microsoft.com/zh-cn/subscriptions/downloads/dd316764.aspx

 個(gè)人寫的一個(gè)小Demo: AudioRecord

posted on 2014-08-21 23:34 Richard Wei 閱讀(15122) 評論(5)  編輯 收藏 引用 所屬分類: windows desktop

FeedBack:
# re: 如何抓取揚(yáng)聲器的聲音
2015-03-23 19:35 | 王小亮
恩,這里代碼不錯的。正在學(xué)習(xí)中。  回復(fù)  更多評論
  
# re: 如何抓取揚(yáng)聲器的聲音[未登錄]
2015-06-15 16:22 |
8錯。關(guān)于聲卡的LOOPBACK模式,這里也有介紹http://v.youku.com/v_show/id_XMTI2Mjc1MTg2OA==.html?from=y1.7-1.2  回復(fù)  更多評論
  
# re: 如何抓取揚(yáng)聲器的聲音
2016-01-05 13:43 | josanna
博主,你好!
首先感謝你的代碼分享,我從中受益不少。但有個(gè)問題想向你反饋,不知道你有沒有解決方法。
在點(diǎn)擊startCapture以后,程序開始采集播放聲卡上的聲音。但在這個(gè)過程中,我打開Audition軟件,并有頻繁切換桌面上文件夾。然后,點(diǎn)擊stopCapture停止錄音。并打開StartPlay以后,聽錄下的音源,發(fā)現(xiàn)聲音存在數(shù)據(jù)不連續(xù),丟失的現(xiàn)象。于是,也具體到代碼和日志里面分析,發(fā)現(xiàn)在錄音過程中,博主所用的定時(shí)器并非完全按照5ms去探測AudioEndpointBuffer上的數(shù)據(jù),在桌面上操作或打開一些軟件的時(shí)候,計(jì)時(shí)器會受到影響,異常時(shí)會出現(xiàn)幾次一兩百毫秒周期,出現(xiàn)了音頻數(shù)據(jù)的丟失。針對這種情況,博主,你有相關(guān)的解決方法嗎?  回復(fù)  更多評論
  
# re: 如何抓取揚(yáng)聲器的聲音
2016-01-05 19:36 | Richard Wei
@josanna
不行就開線程吧,還不行可以嘗試提高線程的優(yōu)先級  回復(fù)  更多評論
  
# re: 如何抓取揚(yáng)聲器的聲音
2016-01-06 08:45 | josanna
@Richard Wei
好的 我去試試,多謝!  回復(fù)  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美成人中文字幕在线| 在线免费观看视频一区| 久久精品九九| 欧美日本亚洲| 蜜臀av在线播放一区二区三区| 欧美精品 日韩| 乱人伦精品视频在线观看| 国产精品videossex久久发布| 美国十次了思思久久精品导航| 国产精品www.| 亚洲美洲欧洲综合国产一区| 亚洲第一精品电影| 久久激情综合| 久久一区二区三区国产精品| 国产麻豆91精品| 亚洲亚洲精品在线观看| 亚洲一区二区三区在线| 欧美xxx成人| 亚洲福利视频免费观看| 国产一区二区三区免费观看 | 亚洲午夜久久久久久久久电影院 | 一本色道久久综合亚洲精品婷婷| 噜噜噜躁狠狠躁狠狠精品视频| 裸体一区二区三区| 韩日精品在线| 蜜桃av噜噜一区| 最新中文字幕亚洲| 国产精品99久久久久久久vr| 欧美精品日韩综合在线| 99国产精品99久久久久久粉嫩| 亚洲砖区区免费| 国产一区二区三区久久悠悠色av | 欧美日韩大片| 亚洲一区二区三区在线| 久久超碰97人人做人人爱| 国产情人综合久久777777| 久久久91精品国产一区二区精品| 久久综合给合久久狠狠狠97色69| 在线免费不卡视频| 欧美精品一区在线播放| 亚洲一区二区三区中文字幕| 久久三级福利| 99国产精品自拍| 国产日韩欧美日韩| 欧美日韩理论| 欧美在线观看视频在线 | 久久国产精品亚洲77777| 欧美激情成人在线视频| 亚洲国产精品综合| 久久亚洲风情| 免费在线亚洲欧美| 欧美韩日一区二区| 一区二区日韩免费看| 国产精品亚发布| 欧美激情久久久| 香蕉视频成人在线观看 | 91久久精品国产91久久| 欧美一级理论性理论a| 亚洲国产精品一区二区尤物区| 欧美国产一区二区三区激情无套| 亚洲高清资源| 亚洲欧洲在线看| 亚洲精品裸体| 亚洲精品1234| 亚洲高清视频的网址| 国产午夜精品在线| 欧美成人精品h版在线观看| 先锋影音国产一区| 亚洲另类视频| 狼人社综合社区| 久久动漫亚洲| 欧美一区二区高清| 亚洲国产婷婷香蕉久久久久久| 国产精品一区一区三区| 欧美日韩不卡一区| 欧美理论片在线观看| 免费看成人av| 欧美激情视频一区二区三区在线播放| 欧美成人影音| 亚洲社区在线观看| 欧美国产精品一区| 亚洲一级免费视频| 欧美激情一区| 在线观看的日韩av| 一本久久青青| 亚洲欧美日韩国产中文| 久久精品123| 欧美成人中文字幕| 99在线视频精品| 亚洲免费在线视频| 麻豆精品在线播放| 欧美连裤袜在线视频| 欧美四级伦理在线| 韩国在线一区| 亚洲精品免费一区二区三区| 亚洲视频精选在线| 久久精品国产清自在天天线| 欧美国产日韩一二三区| 亚洲欧美在线观看| 久久久久久免费| 欧美日韩99| 狠狠色狠狠色综合日日五| 亚洲图片你懂的| 亚洲综合好骚| 欧美成人黑人xx视频免费观看 | 亚洲人在线视频| 午夜精品久久久久影视| 久久久水蜜桃| 国产精品av免费在线观看| 国产欧美日韩三区| 日韩一区二区福利| 毛片精品免费在线观看| 亚洲精品中文字幕有码专区| 久久er99精品| 国产精品嫩草99av在线| 亚洲三级视频| 亚洲成在线观看| 美女免费视频一区| 亚洲成人原创| 亚洲第一精品福利| 欧美激情一区二区久久久| 亚洲欧洲一区二区三区| av成人天堂| 国产欧美日韩中文字幕在线| 99视频精品| 亚洲精品日韩激情在线电影 | 亚洲影院高清在线| 欧美成人精品一区二区| 欧美成人一二三| 久久九九国产精品| 在线观看日韩国产| 老司机67194精品线观看| 亚洲综合日韩中文字幕v在线| 亚洲精品一二区| 欧美日本中文字幕| 在线视频你懂得一区二区三区| 亚洲精品久久久久中文字幕欢迎你| 另类激情亚洲| 一区二区三区日韩在线观看| 亚洲欧洲日韩综合二区| 欧美特黄视频| 亚洲一区二区三区影院| 宅男精品视频| 国精品一区二区| 美女亚洲精品| 欧美久久久久久| 亚洲综合精品| 中文精品视频| 亚洲精品久久久久久久久| 99re在线精品| 精品99一区二区三区| 亚洲日本电影在线| 国产日韩欧美一区二区| 亚洲国产精品日韩| 国产裸体写真av一区二区| 老司机67194精品线观看| 欧美日本一区| 免费欧美日韩| 国产精品丝袜xxxxxxx| 亚洲大片精品永久免费| 老司机成人网| 欧美韩日一区| 久久久久亚洲综合| 欧美日韩无遮挡| 女人色偷偷aa久久天堂| 欧美精品成人| 久久久久久亚洲精品杨幂换脸| 欧美激情成人在线| 国产日韩av高清| 亚洲视频1区2区| 艳妇臀荡乳欲伦亚洲一区| 欧美在线一二三| 欧美中文在线字幕| 国产精品久久久久高潮| 亚洲国产合集| 亚洲国产经典视频| 久久精品30| 久久久精品日韩欧美| 国产精品卡一卡二卡三| 99视频一区二区| 性亚洲最疯狂xxxx高清| 欧美系列亚洲系列| 亚洲乱码国产乱码精品精| 最新中文字幕亚洲| 免费成人av在线| 亚洲高清三级视频| 一区二区欧美日韩| 欧美日韩在线大尺度| 亚洲精品少妇网址| 新67194成人永久网站| 欧美性大战久久久久久久| 亚洲欧美另类在线| 久久―日本道色综合久久| 狠狠色丁香久久综合频道| 久久久天天操| 亚洲三级观看| 久久亚洲不卡| 亚洲人午夜精品免费| 欧美日韩三区四区| 午夜精品理论片|