Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有办法从左声道或右声道播放视频音频?_Javascript_Video Streaming_Html5 Video_Html5 Audio_Audio Streaming - Fatal编程技术网

Javascript 有没有办法从左声道或右声道播放视频音频?

Javascript 有没有办法从左声道或右声道播放视频音频?,javascript,video-streaming,html5-video,html5-audio,audio-streaming,Javascript,Video Streaming,Html5 Video,Html5 Audio,Audio Streaming,我正在使用Javascript、HTML和CSS创建一个自定义视频播放器。视频播放器需要一个功能,用户可以在左声道和右声道之间切换。但是,我注意到视频属性似乎不支持L-R频道切换,有没有可能解决这个问题 更新 我本来没有用我应该说的措辞来回答这个问题(我的错)。我试图做的是访问一个频道上的声音,并将它们重定向到通过两个扬声器播放。例如,如果我有一个单一的音频文件,其中包含热带雨林噪音和鸟的乳酪在左声道播放,青蛙在右声道呱呱叫,我只想播放右声道的声音,例如青蛙呱呱叫 更新 我正在尝试拆分节点,但在

我正在使用Javascript、HTML和CSS创建一个自定义视频播放器。视频播放器需要一个功能,用户可以在左声道和右声道之间切换。但是,我注意到视频属性似乎不支持L-R频道切换,有没有可能解决这个问题

更新 我本来没有用我应该说的措辞来回答这个问题(我的错)。我试图做的是访问一个频道上的声音,并将它们重定向到通过两个扬声器播放。例如,如果我有一个单一的音频文件,其中包含热带雨林噪音和鸟的乳酪在左声道播放,青蛙在右声道呱呱叫,我只想播放右声道的声音,例如青蛙呱呱叫

更新 我正在尝试拆分节点,但在实现过程中遇到困难,我发现的示例是AudioBuffer,不使用文件。如何获取音频上下文以使用音频文件,并以可播放的方式将音频文件的目标设置回该音频文件?理想情况下,我需要能够关闭任一频道的函数,例如playFrogNoises()和playBirdNoises()


var myAudio=document.getElementById('myAudio')
var context=新的AudioContext();
var audioSource=context.createMediaElementSource(myAudio)
var splitter=context.createChannelSplitter(2);
音频源。连接(分路器);
var merge=context.createchannelmerge(2)
//只减少左声道的音量
var gainNode=context.createGain();
gainNode.gain.setValueAtTime(0.5,context.currentTime);
拆分器。连接(gainNode,0);
//将拆分器连接回合并的第二个输入
连接(合并,0,1);
splitter.connect(合并,1,0);
var destination=context.createMediaStreamDestination();
合并连接(目的地)
myAudio.play()

您必须将WebAudio Api与paneer节点一起使用

(或者你需要什么,基本上你可以用这种方式用你的音频频道做任何事情)


const context=new AudioContext(),
audioSource=context.createMediaElementSource(document.getElementById(“我的视频”)),
panner=context.createStereoPanner();
音频源连接(panner);
panner.connect(context.destination);
//配置panner-左1,右1。
panner.pan.setValueAtTime(-1,context.currentTime)

您必须将WebAudio Api与paneer节点一起使用

(或者你需要什么,基本上你可以用这种方式用你的音频频道做任何事情)


const context=new AudioContext(),
audioSource=context.createMediaElementSource(document.getElementById(“我的视频”)),
panner=context.createStereoPanner();
音频源连接(panner);
panner.connect(context.destination);
//配置panner-左1,右1。
panner.pan.setValueAtTime(-1,context.currentTime)

您需要交换频道吗?比如,R在L上玩,而我在R上玩?或者,您是否只需要平移特定频道上的所有频道?或者,你需要调整信用证和信用证之间的平衡吗?我想调整一下平衡。我需要他们在某些点上听到右声道上的内容,在其他点上听到左声道上的内容。最好是通过两个扬声器播放频道上的内容,您需要交换频道吗?比如,R在L上玩,而我在R上玩?或者,您是否只需要平移特定频道上的所有频道?或者,你需要调整信用证和信用证之间的平衡吗?我想调整一下平衡。我需要他们在某些点上听到右声道上的内容,在其他点上听到左声道上的内容。最好是通过两个扬声器播放频道上的内容,这个解决方案有效!这不是我真正想要的(但这是因为我的问题,抱歉的措辞)\n您可以分割每个通道设置增益,并将它们按所需关系混合在一起。或者将两个通道混合到一起,然后将此单声道发送到两个通道。请阅读更多关于网络音频api的信息。明白了!!!!感谢@robert的帮助,此解决方案有效!这不是我真正想要的(但这是因为我的问题,抱歉的措辞)\n您可以分割每个通道设置增益,并将它们按所需关系混合在一起。或者将两个通道混合到一起,然后将此单声道发送到两个通道。请阅读更多关于网络音频api的信息。明白了!!!!谢谢你的帮助@Robert
<body>
  <audio id="myAudio" src="audio/Squirrel Nut Zippers - Trou Macacq.mp3"></audio>
</body>
<script>
  var myAudio = document.getElementById('myAudio')
  var context = new AudioContext();
  var audioSource = context.createMediaElementSource(myAudio)
  var splitter = context.createChannelSplitter(2);
  audioSource.connect(splitter);
  var merger = context.createChannelMerger(2)

  //REDUCE VOLUME OF LEFT CHANNEL ONLY
  var gainNode = context.createGain();
  gainNode.gain.setValueAtTime(0.5, context.currentTime);
  splitter.connect(gainNode, 0);

  //CONNECT SPLITTER BACK TO SECOND INPUT OF THE MERGER
  gainNode.connect(merger, 0, 1);
  splitter.connect(merger, 1, 0);

  var destination = context.createMediaStreamDestination();

  merger.connect(destination)

  myAudio.play()

</script>