2014-02-20 2 views
1

У меня есть требование воспроизвести звук (.wav-файл) только на левом канале наушников и в другом файле, чтобы играть только на правом канале наушников. Я новичок в C#, пожалуйста, помогите мне решить эту проблему.Как воспроизводить звук только на левом канале наушников и только на правом канале наушников в C#?

ответ

1

Я не думаю, что только WPF может это сделать, но вы можете проверить NAudio.

+0

уаг Input2 = новый Mp3FileReader (@ "C: \ Users \ Public \ Music \ Sample Music \ Kalimba.mp3 "); var input1 = новый Mp3FileReader (@ "C: \ Users \ Public \ Music \ Sample Music \ Maid с Flaxen Hair.mp3"); MultiplexingWaveProvider waveProvider = new MultiplexingWaveProvider (новый IWaveProvider [] {input1, input2}, 2); waveProvider.ConnectInputToOutput (1, 1); WaveOut wave = new WaveOut(); wave.Init (waveProvider); волна.Play(); – user3168440

+0

Я использовал приведенный выше код, но его воспроизведение в обоих каналах ... – user3168440

0

Этот article в проекте кода показывает способ визуализации звука. Если вы можете активно визуализировать звук, вы поймете, что ваш общий стереофонический файл содержит два канала (левый и правый каналы). С помощью этой информации о том, как визуализировать ее, вы можете легко адаптировать поток для уничтожения левого канала (E.G. поставить ноль в левый поток/правый поток). И таким образом, когда вы будете играть в него обычным способом, после этого он будет воспроизводить музыку только в левом или правом ухе.

Вышеупомянутая информация является простой частью, когда у вас есть стереофайл, который имеет два равных канала. Существует также случай, когда ваш стереофайл имеет разные каналы (EG гитара на левом ухе барабан на правом ухе). В этом случае вам придется объединить два канала в один канал, найти дублируемую информацию и, наконец, уничтожить другой канал, который вы не хотите использовать.)

Третья возможность заключается в том, что ваш аудиофайл моно и, следовательно, имеет только один канал. Обычно ваш компьютер будет автоматически дублировать канал из монофайла в стереофайл. Таким образом, он играет на обоих ушах/динамиках. Таким образом, мы никогда не увидим, что файл моно. Однако в программировании, если вы хотите заставить его играть только на одном ухе/канале. Вам придется вручную преобразовать его в стереофайл (добавив пустой канал). И снова у вас будет звук только на одном ухе/динамике.

Надеюсь, это поможет.

0
var input2 = new Mp3FileReader(@"C:\Users\Public\Music\Sample Music\Kalimba.mp3"); 
var input1 = new Mp3FileReader(@"C:\Users\Public\Music\Sample Music\Maid with the Flaxen Hair.mp3"); 
MultiplexingWaveProvider waveProvider = new MultiplexingWaveProvider(new IWaveProvider[] { input1, input2 }, 2); 
waveProvider.ConnectInputToOutput(1, 1); 
WaveOut wave = new WaveOut(); 
wave.Init(waveProvider); 
wave.Play(); 

Я добавил следующие строки кода выше, и она работает с 2-мя каналами

waveProvider.ConnectInputToOutput(1, 0); 
waveProvider.ConnectInputToOutput(3, 1); 

и удалены

waveProvider.ConnectInputToOutput(1, 1); 
Смежные вопросы