2012-11-07 5 views
2

소리를 재생하려면 웨이브 선택 장치가 필요합니다. 그러나 나는 그것을 할 수 없다.NAudio WaveOut 장치 ID

void Initialize() 
{ 
_WaveOut = new WaveOut(); 
var reader = new WaveFileReader(FileName); 
_WaveOut.Init(new WaveChannel32(reader)); 
} 

이 함수가 시작되면 양식이 시작됩니다. 이 후 내 양식에, 나는 combobox와 waveout 장치를 선택합니다. Combobox는 다음 코드로 채워집니다.

for (int i = 0; i < WaveOut.DeviceCount; i++) 
{ 
    WaveOutCapabilities WOC = WaveOut.GetCapabilities(i); 
    comboBox2.Items.Add(WOC.ProductName); 

} 

이 후, 내 장치를 선택합니다.

int WaveOutDeviceId = comboBox2.SelectedIndex; 

그리고 시작 재생 기능 :

void Play() 
{ 
_WaveOut.DeviceNumber = WaveOutDeviceId; 
_WaveOut.Play(); 
} 

하지만 내 소리가 항상 기본 장치 (번호와 = 0)에서 재생합니다. 마이크에 대해 이렇게하면이 코드가 올바르게 작동합니다.

답변

5

Init을 호출하면 DeviceId을 변경하기에는 너무 늦었습니다. 기기를 변경하려는 경우 WaveOut의 새 인스턴스를 만드는 것이 좋습니다.

+0

감사합니다. 귀하의 답변은 매우 유용합니다. – EXTRAM