Ich habe eine Anforderung, den Ton (.wav-Datei) nur im linken Kanal des Kopfhörers abzuspielen, und eine andere Datei nur im rechten Kanal des Kopfhörers abzuspielen. Ich bin neu in c#, bitte helfen Sie mir, dieses Problem zu lösen.
Antworten
Zu viele Anzeigen?Ich glaube nicht, dass WPF das allein bewerkstelligen kann, aber du könntest NAudio ausprobieren.
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, 0);
waveProvider.ConnectInputToOutput(3, 1);
WaveOut wave = new WaveOut();
wave.Init(waveProvider);
wave.Play();
Ich habe gerade die folgenden Zeilen zum obigen Code hinzugefügt und es funktioniert mit 2 Kanälen
waveProvider.ConnectInputToOutput(1, 0);
waveProvider.ConnectInputToOutput(3, 1);
und entfernt
waveProvider.ConnectInputToOutput(1, 1);
Dieser Artikel auf dem Code-Projekt zeigt einen Weg, um Audio zu visualisieren. Wenn Sie Audio aktiv visualisieren können, werden Sie verstehen, dass Ihre übliche Stereowave-Datei zwei Kanäle enthält (einen linken und einen rechten Kanal). Mit diesen Informationen, wie man es visualisieren kann, können Sie den Stream leicht anpassen, um den linken Kanal zu zerstören (zum Beispiel Nullen in den linken Stream/rechten Stream setzen). Und so würde, wenn Sie es auf herkömmliche Weise abspielen würden, danach die Musik nur im linken oder im rechten Ohr abgespielt werden.
Das oben Genannte ist der einfache Teil, wenn Sie eine Stereodatei mit zwei gleichen Kanälen haben. Es gibt auch den Fall, dass Ihre Stereodatei verschiedene Kanäle hat (zum Beispiel eine Gitarre im linken Ohr und ein Schlagzeug im rechten Ohr). In diesem Fall müssen Sie zwei Kanäle zu einem Kanal zusammenführen, doppelte Informationen finden und schließlich den anderen Kanal zerstören, den Sie nicht verwenden möchten.
Die dritte Möglichkeit ist, dass Ihre Audiodatei mono ist und daher nur einen Kanal hat. Normalerweise dupliziert Ihr Computer automatisch den Kanal aus einer Mono-Datei in eine Stereodatei. So wird es auf beiden Ohren/Lautsprechern abgespielt. Daher werden wir niemals hören, dass die Datei mono ist. Wenn Sie es jedoch in der Programmierung wünschen, auf nur einem Ohr/Kanal abzuspielen, müssten Sie es manuell in eine Stereodatei konvertieren (indem Sie einen leeren Kanal hinzufügen). Und dann hätten Sie wieder Sound auf nur einem Ohr/Lautsprecher.
Hoffentlich hilft das.