在javascript中播放音频时更改左/右平衡

在javascript中播放音频时更改左/右平衡,javascript,html,html5-audio,Javascript,Html,Html5 Audio,我知道html5音频的东西都很新,但是有没有办法改变声音的左/右平衡 大概是这样的: var snd = new Audio("test.mp3"); snd.balance = -1; // only left snd.play(); 从2021年起,可以使用。更多信息。 原始答复: 目前,这是不受支持的 您可以查看w3c规范中支持的属性和方法。请注意,浏览器通常提供更多/更少或不同的内容。但在这种情况下:没有浏览器支持音频平衡更改 这可以通过音频Web API实现 有关如何使用音量和立

我知道html5音频的东西都很新,但是有没有办法改变声音的左/右平衡

大概是这样的:

var snd = new Audio("test.mp3");
snd.balance = -1; // only left
snd.play();
从2021年起,可以使用。更多信息。
原始答复:

目前,这是不受支持的

您可以查看w3c规范中支持的属性和方法。请注意,浏览器通常提供更多/更少或不同的内容。但在这种情况下:没有浏览器支持音频平衡更改

这可以通过音频Web API实现

  • 有关如何使用音量和立体声控件创建“音箱”的教程:
  • 或者您可以在此处看到一个正在运行的演示:
  • 附加示例
    此答案使用
    StereoPannerNode
    控制单个
    AudioNode
    中的平衡。但是,如果您想分割音频并分别操纵每个频道(左/右),则需要
    ChannelSplitterNode
    ChannelMergerNode
    。您可以在这里找到如何使用它们的完整示例:

    看来,html音频标记中根本不支持通道平衡。
    <audio src="myCoolTrack.mp3"></audio>
    
    // for legacy browsers
    const AudioContext = window.AudioContext || window.webkitAudioContext;
    
    const audioContext = new AudioContext();
    
    // get the audio element
    const audioElement = document.querySelector('audio');
    
    // pass it into the audio context
    const track = audioContext.createMediaElementSource(audioElement);
    
    // default pan set to 0 - center
    const stereoNode = new StereoPannerNode(audioContext, { pan: 0 });
    
    // change the value of the balance by updating the pan value
    stereoNode.pan.value = -1; // left
    stereoNode.pan.value = 0; // center
    stereoNode.pan.value = 1; // right
    
    track.connect(stereoNode).connect(audioContext.destination);