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

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

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

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

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

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

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

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

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

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

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

 個人寫的一個小Demo: AudioRecord

posted on 2014-08-21 23:34 Richard Wei 閱讀(15115) 評論(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
博主,你好!
首先感謝你的代碼分享,我從中受益不少。但有個問題想向你反饋,不知道你有沒有解決方法。
在點擊startCapture以后,程序開始采集播放聲卡上的聲音。但在這個過程中,我打開Audition軟件,并有頻繁切換桌面上文件夾。然后,點擊stopCapture停止錄音。并打開StartPlay以后,聽錄下的音源,發(fā)現(xiàn)聲音存在數(shù)據(jù)不連續(xù),丟失的現(xiàn)象。于是,也具體到代碼和日志里面分析,發(fā)現(xiàn)在錄音過程中,博主所用的定時器并非完全按照5ms去探測AudioEndpointBuffer上的數(shù)據(jù),在桌面上操作或打開一些軟件的時候,計時器會受到影響,異常時會出現(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>
            欧美www视频| 黄网站色欧美视频| 久久精品二区| 新狼窝色av性久久久久久| 亚洲黄色在线| 亚洲另类在线视频| 中文国产一区| 久久精品首页| 欧美久色视频| 国产美女精品视频免费观看| 欧美日韩精品是欧美日韩精品| 久久精品视频99| 欧美日本韩国| 国产午夜精品久久久久久免费视| 国产视频一区二区在线观看| 亚洲第一精品电影| 欧美一区二区三区免费观看| 日韩亚洲视频在线| 久久久噜噜噜久久中文字免| 欧美r片在线| 激情亚洲成人| 亚洲欧美日韩区| 亚洲国产日韩一区二区| 99国产精品视频免费观看| 久久久久国产精品www| 欧美日韩情趣电影| 99精品国产99久久久久久福利| 久久嫩草精品久久久精品一| 亚洲乱码国产乱码精品精天堂| 亚洲欧美在线一区二区| 欧美日韩国产精品| 亚洲欧洲日韩综合二区| 午夜精品久久久久久99热软件| 亚洲高清视频中文字幕| 久久久久久久一区二区三区| 国产欧美日韩麻豆91| 性欧美videos另类喷潮| 99成人精品| 国产精品视频免费在线观看| 午夜亚洲视频| 欧美在线一级视频| 亚洲二区视频| 亚洲精品123区| 欧美午夜久久久| 欧美一级淫片aaaaaaa视频| 欧美一区二视频| 亚洲国产精品国自产拍av秋霞| 欧美成年人网站| 欧美精品乱码久久久久久按摩| 99精品热6080yy久久 | 欧美在线日韩在线| 一片黄亚洲嫩模| 欧美精选在线| 欧美在线综合| 猛干欧美女孩| 亚洲免费中文字幕| 免费欧美在线| 欧美在线三级| 欧美日韩极品在线观看一区| 久久久久国产精品午夜一区| 久久综合久久久| 小黄鸭精品密入口导航| 欧美 日韩 国产 一区| 亚洲免费在线视频| 欧美精品不卡| 亚洲人成人99网站| 亚洲高清免费在线| 久久精品二区| 久久久精品日韩欧美| 国产欧美大片| 亚洲视频一区在线观看| 黄色av一区| 久久福利一区| 久久久亚洲国产天美传媒修理工 | 亚洲盗摄视频| 国产一二三精品| 亚洲尤物在线视频观看| 在线视频亚洲| 国产精品扒开腿做爽爽爽视频| 亚洲国产精彩中文乱码av在线播放| 国产一区二三区| 久久精品国产免费看久久精品| 欧美sm视频| 中文久久乱码一区二区| 国产精品视频免费一区| 欧美在线观看www| 在线不卡中文字幕播放| 久久资源在线| 中文久久精品| 欧美二区在线播放| 欧美一区不卡| a91a精品视频在线观看| 国产日产欧产精品推荐色 | 亚洲第一区中文99精品| 亚洲一区二区免费| 亚洲国产精品传媒在线观看 | 久久久久久久综合日本| 亚洲观看高清完整版在线观看| 亚洲视频网站在线观看| 一区福利视频| 国产精自产拍久久久久久| 免费在线欧美黄色| 久久久久久9| 午夜久久久久久| 亚洲视频在线播放| 亚洲天堂网站在线观看视频| 亚洲国产日韩欧美在线图片| 模特精品裸拍一区| 牛牛影视久久网| 欧美成人免费网站| 欧美大片第1页| 亚洲高清不卡一区| 久久av资源网| 午夜在线精品偷拍| 欧美一区二区视频97| 久久九九国产精品怡红院| 久久精品成人一区二区三区蜜臀 | 99re6热在线精品视频播放速度| 国模吧视频一区| 亚洲第一级黄色片| 一区二区三区四区五区精品| 久久影院午夜片一区| 欧美国产第一页| 欧美性色综合| 极品中文字幕一区| 亚洲毛片视频| 欧美一区二区在线视频| 久久精品123| 欧美承认网站| 亚洲欧美成人一区二区在线电影| 性欧美1819sex性高清| 欧美另类一区| 韩国三级电影久久久久久| 亚洲狼人精品一区二区三区| 亚洲女同在线| 亚洲精品一区二区三区av| 久久国产精品色婷婷| 国产精品激情| 一区二区三区免费在线观看| 欧美69视频| 久久福利视频导航| 国产午夜精品美女视频明星a级| 亚洲日本国产| 亚洲国产精品久久久久久女王| 亚洲欧美激情精品一区二区| 欧美三级视频在线| 亚洲日本成人在线观看| 国产精品视频一二| 国模私拍视频一区| 欧美日韩亚洲一区| 国产精品va在线播放| 看欧美日韩国产| 亚洲伦理中文字幕| 欧美激情按摩在线| 久久一区二区三区av| 夜夜嗨av色一区二区不卡| 国产一区二区久久精品| 欧美极品aⅴ影院| 亚洲综合999| 99视频精品全国免费| 91久久精品国产91久久| 性伦欧美刺激片在线观看| 久久躁狠狠躁夜夜爽| 日韩特黄影片| 亚洲欧美在线aaa| 国产一区二区三区免费不卡| 久久精品一区二区三区不卡| 欧美在线免费视屏| 亚洲人成网站色ww在线| 亚洲欧洲一区二区在线观看| 欧美国产在线视频| 欧美一区二区三区免费在线看| 欧美一区二区视频在线观看2020| 国产精品一二三四区| 久久影音先锋| 欧美片第1页综合| 亚洲男人第一网站| 欧美日韩久久| 蜜臀久久99精品久久久久久9| 国产精品看片你懂得| 亚洲福利视频三区| 亚洲国产裸拍裸体视频在线观看乱了中文| 久久香蕉国产线看观看av| 另类尿喷潮videofree| 亚洲一区久久久| 久久se精品一区二区| 亚洲国产精品成人精品| 欧美一区二区三区免费观看| 亚洲国产免费看| 性8sex亚洲区入口| 欧美制服丝袜第一页| 欧美三级在线视频| aa成人免费视频| 1000部精品久久久久久久久| 亚洲午夜电影在线观看| 最近中文字幕日韩精品 | 欧美日韩一区在线| 久久一区激情| 激情综合自拍| 欧美va日韩va|