如何在c#中只在耳机的左声道和耳机的右声道上播放声音

  • 本文关键字:耳机 声道 播放声音 左声道 c# wpf audio
  • 更新时间 :
  • 英文 :


我要求只在耳机的左声道播放声音(.wav文件),另一个文件只在耳机右声道播放。我是c#的新手,请帮我解决这个问题。

我不认为单独的WPF可以做到这一点,但您可能想看看NAudio。

var input2 = new Mp3FileReader(@"C:UsersPublicMusicSample MusicKalimba.mp3"); 
var input1 = new Mp3FileReader(@"C:UsersPublicMusicSample MusicMaid 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);

这篇关于代码项目的文章展示了一种可视化音频的方法。如果你能主动地可视化音频,你就会明白你的普通立体声波形文件包含两个声道(左声道和右声道)。有了这些关于如何可视化的信息,你可以很容易地调整流以破坏左通道(例如,在左流/右流中设置零)。因此,当你在那之后以常规方式播放时,它只会在左耳或右耳播放音乐。

当你有一个有两个相等通道的立体声文件时,上面是简单的部分。还有一种情况是,你的立体声文件有不同的声道(例如左耳有一把吉他,右耳有一个鼓。)在这种情况下,你必须将两个声道合并为一个声道,找到重复的信息,最后销毁你不想使用的另一个声道。)

第三种可能性是你的音频文件是单声道的,因此只有一个声道。通常情况下,您的计算机会自动将频道从单声道文件复制到立体声文件。所以它在两只耳朵/扬声器上播放。因此,我们永远不会在这里说该文件是mono。然而,在编程中,如果你想让它只在一个耳朵/频道上播放。您必须手动将其转换为立体声文件(通过添加空白通道)。再说一遍,你只需要一只耳朵/扬声器就能发出声音。

希望这能有所帮助。