Windows下如何對聲卡音頻輸出進行錄音

對系統播放出來的聲音進行錄音是一個比較常見的需求,比如各類直播工具,就會把主播的聲音經過麥克風採集下來,再與電腦裏播放的音樂合成(也就是混音),再推送到CDN,分發給觀衆;再比如屏幕錄製也希望能夠同時錄製系統的聲音輸出。

微軟提供的Core Audio APIs中的WASAPI即是用來實現這一功能的。

先看這個https://docs.microsoft.com/zh-cn/windows/win32/coreaudio/core-audio-apis-in-windows-vista

大意是說從windows vista開始提供的這套接口,它爲更高層次的接口如DirectSound和waveXxx提供基石,開放出來滿足更低層的開發。

再看這個關於WASAPI的介紹:https://docs.microsoft.com/zh-cn/windows/win32/coreaudio/wasapi?redirectedfrom=MSDN

大意是說WASAPI使得客戶端的應用能夠在應用與音頻端點設備之間管理音頻數據流,頭文件Audioclient.h和Audiopolicy.h給出了WASAPI接口的定義。

再看這個https://docs.microsoft.com/zh-cn/windows/win32/coreaudio/capturing-a-stream

講到了客戶端調用IAudioCaptureClient接口從端點緩衝中讀取捕捉的數據,可以用共享模式或獨佔模式。介紹了IAudioClient和IAudioCaptureClient這兩個接口的一些方法的使用。並且附帶了一個例子,是從默認的採集設備錄製音頻流的,如果要捕捉聲卡輸出的音頻流,需要將eCapture改爲eRender。

再看這個關於Loopback Recording的https://docs.microsoft.com/zh-cn/windows/win32/coreaudio/loopback-recording

在loopback模式下,WASAPI客戶端能夠捕捉正在被渲染端點設備播放的音頻流,如何以loopback模式打開一個流。

最後提一下用到該項技術的開源軟件OBS:https://github.com/obsproject/obs-studio

具體源碼參考插件win-wasapi的實現。

此外還有兩處文章值得參考:

1.http://blog.sina.com.cn/s/blog_bb2d37f30102xdhf.html

2.https://blog.csdn.net/u013898698/article/details/80251150

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章