OS X有兩個應用程序,允許您在音頻被硬件播放之前預放大音頻:音頻劫持(預放大特定應用程序的輸出)和Boom(預放大所有系統音頻)。這些應用程序通過在預先存在的音頻流上進行均衡處理(具有較高的前置放大器設置),然後將它們發送到聲卡。預放大音頻操作系統X
我的問題是:如何劫持系統音頻流,然後將其發送到聲卡。這是在API的某個地方,還是需要改變一個系統庫?
OS X有兩個應用程序,允許您在音頻被硬件播放之前預放大音頻:音頻劫持(預放大特定應用程序的輸出)和Boom(預放大所有系統音頻)。這些應用程序通過在預先存在的音頻流上進行均衡處理(具有較高的前置放大器設置),然後將它們發送到聲卡。預放大音頻操作系統X
我的問題是:如何劫持系統音頻流,然後將其發送到聲卡。這是在API的某個地方,還是需要改變一個系統庫?
1)創建出現在音頻系統首選項中的標準音響設備。這必須採用內核擴展(kext)的形式。通過閱讀蘋果文檔很難創建 - 嘗試查看名爲Soundflower的應用程序。
2)加載kext並獲得新的音頻設備後,請在首選項中將其選爲系統音頻的默認輸出設備。
3)現在您需要改變音頻並將其轉換爲真實的系統輸出。這可以在附帶的應用程序中完成,該應用程序將回調「IOProc」功能添加到a)新設備和b)計算機的內置輸出設備。然後,您可以將音頻緩衝區從一個設備複製到另一個設備,以將音頻傳輸到揚聲器。要增加音量,請將緩衝區中的所有字節乘以某個因子。看到Soundflower的隨行應用程序。
- 感謝保羅的指針。這是我學到的東西。 – Colin
查看許多類似的問題,例如http://stackoverflow.com/questions/965045/osx-audio-hijack-style-audio-recording-from-other-applications-cocoa –