2017-07-27 154 views
0

正在播放當前正在播放的音頻的c#/。net中是否有任何方法?我在互聯網上搜索了很多,但我能找到的唯一結果是使用麥克風進行錄製。c#/。NET - 正在播放當前正在播放的音頻

我不想記錄使用麥克風輸入,我想記錄什麼是當我點擊一個記錄按鈕時在電腦上播放。

由於

回答

-1

的唯一方法,以便能夠接收從另一個應用程序的數據是如果顯影劑提供了一種接入點,通常通過一些SDK,API,或其它手段。沒有這個,你的應用程序代碼就無法從其他應用程序接收字節。

麥克風工作原因是因爲它正在接收來自應用程序的聲音輸出字節,並將這些聲波字節發送回您的PC以呈現和輸出聲音。由於您可以從麥克風訪問這些字節,因此您可以捕捉聲音。

查看是否存在您嘗試從中獲得聲音的應用程序的開發人員提供的API或SDK。

+0

OP正在討論**音頻**而不是「數據」_。錄製音頻不需要直接訪問源應用程序 – MickyD

+0

@MickyD無論音頻與否都是數據的所有電子信號。它是通過電流傳遞的比特流。所以我相信我的術語是指音頻流作爲數據是有效的。 – CodeSurvivor

+0

它太籠統了,沒有用處,不提示明顯的解決方案,而不需要直接的API到應用程序 – MickyD

2

你這裏有兩種選擇:

  1. 硬件迴環設備 - 虛擬的「立體聲混音」的音頻設備,它作爲一個普通的音頻捕獲設備,並在生產的同時發揮混合音頻饋送的一個副本通過系統的默認音頻輸出設備。由於此類設備顯示爲真正的音頻輸入設備,因此您可以使用標準API,庫和甚至退出的應用程序來從此設備進行記錄。

  2. 編程訪問虛擬回送設備,就好像它是類似麥克風的設備。背景上的API將重放播放的音頻內容,並在播放時提供回讀。好消息是,您可以訪問您感興趣的設備的混合音頻提要。

這兩個選項中詳細Loopback Recording文章MSDN上,並通過標準的音頻的API可用,具體WASAPI說明。

對於C#開發,您可能會使用像NAudio這樣的包裝器。

對於選項1,您會在StackOverflow上找到很多問題,而關於其他選項的關鍵字是AUDCLNT_STREAMFLAGS_LOOPBACK

+0

太好了,謝謝!我會玩一玩,並讓你知道我如何繼續。 –