2012-11-07 4 views
2

Мне нужно выбрать устройство всплеска, чтобы воспроизвести звук. Но я не могу этого сделать.NAudio WaveOut Device ID

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

Эта функция начинается, затем начинается форма. После этого в моей форме я выбираю устройство всплытия с помощью combobox. 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

Смежные вопросы