我想:仅通过一个扬声器播放.mp3

问题描述 投票:1回答:1

我正在使用JavaScript,并且我正在尝试编写一个程序,该程序除其他外,将通过左扬声器或右扬声器播放mp3(这会有所不同),但不能同时播放两者。但是,我希望它对其他发言人绝对保持沉默。

[过去,我已经找到了通过一个扬声器大声播放声音的方法,尽管在另一个扬声器中它应该保持静音,但它始终会(尽管安静地)播放。我以为这是我的计算机的故障,直到我发现一个YouTube左右扬声器测试可以正确地通过一个扬声器播放。

我已经搜索了几个小时,尝试使用pannerNodes,拆分器,但是无论如何,它似乎都无法正常工作(或根本无法工作。)>

任何帮助将不胜感激!

理想情况下,这是我想添加到的内容:

sound1 = new Audio();
sound1.src = 'pizza.mp3';
sound1.play();

如果可以添加代码以仅通过左(或右)扬声器进行播放,那就太棒了。如果可能的话,请不要继续阅读!

我已经尝试了分割器代码,该代码已在线上运行,应该能够使左侧或右侧静音,但是似乎只能以左侧音量播放(或更准确地说,无论我选择哪个音量,附加到“ splitter.connect(something,0);”的0点上。此外,它通过左侧音量的两个扬声器播放。这可能是因为我正在使用振荡器作为测试(不确定如何附加一个mp3),或者可能是我做错了什么。就像我说的那样,数小时尝试各种事情以及使用javascript播放音频并不是我的强项。

以下是我根据从MarijnS95中读取的内容尝试使用的内容。但是,就像我说的那样,我无法让它播放.mp3,它始终会以左音量播放,而是通过两个扬声器播放。original post

tone = new AudioContext();
tone.createGain = tone.createGain||tone.createGainNode; //fallback for gain naming
gainL = tone.createGain();
gainR = tone.createGain();

splitter = this.tone.createChannelSplitter(2);

//Connect splitter' outputs to each Gain Nodes
splitter.connect(gainR, 1);
splitter.connect(gainL, 0);

//Connect to source
source = tone.createOscillator();

//Connect the source to the splitter
source.connect(splitter,0,0);

//Connect Left and Right Nodes to the output
//Assuming stereo as initial status
gainL.connect(tone.destination, 0);
gainR.connect(tone.destination, 0);

//Mute left channel and set the right gain to normal
gainL.gain.value = 1;
gainR.gain.value = 0;

source.start();

希望如此。

提前感谢!

我正在使用JavaScript,并且我正在尝试编写一个程序,该程序除其他外,将通过左扬声器或右扬声器播放mp3(这会有所不同),但不能同时播放两者。但是,我希望它是...

javascript audio mono headphones
1个回答
0
投票

您可以使用StereoPannerNode代替增益和分配器:

© www.soinside.com 2019 - 2024. All rights reserved.