2015-11-08 75 views
0

選擇一個waveout設備後,我想每秒收聽一次,以便監控其音量。我如何去做這件事?我還沒有找到有關收聽播放設備輸出的示例。收聽WaveOutDevice

int waveOutDevices = WaveOut.DeviceCount; 
for (int i = 0; i < waveOutDevices; i++) 
{ 
    WaveOutCapabilities deviceInfo = WaveOut.GetCapabilities(i); 
    Console.WriteLine("Device {0}: {1}, {2} channels", i, deviceInfo.ProductName, deviceInfo.Channels); 
} 
+0

目前尚不清楚你正在嘗試做什麼。通常情況下,人們會通過連接揚聲器或耳機來收聽波形設備。 – jaket

+0

@jaket基本上試圖做一些像[this](http://www.codeproject.com/Articles/15003/VolumeMeter-Managed-DirectX)但NAudio。 – lbrahim

+0

[如何從Wave Out捕獲PCM數據]可能的重複(http://stackoverflow.com/questions/111603/how-to-capture-pcm-data-from-wave-out) –

回答

1

這不是WaveOut API支持的東西。如果您使用的是Vista或更高版本,則可以使用WasapiLoopbackCapture來攔截來自任何渲染設備的音頻,並且WASAPI還支持註冊音量通知,這對我們的場景來說非常理想。

+0

非常好!如果它沒有任何問題,你是否也可以通過截聽音頻來告訴我是否可以每秒鐘監聽音頻的分貝數? – lbrahim

+1

當然,你可以做一個計算來將樣本的值轉換成dB –