Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

声道的离合与平衡

  音频文件可能是双声道甚至多声道的,如果我们需要对不同的声道做不同的处理就需要将他们分离出来。当然,ScriptProcessor也可以处理,但性能上显然有点拙计。AudioAPI中提供了ChannelSplitter和ChannelMerger可以方便地处理此类操作。
  声道分离最常用的场景就是声道的平衡:[实例] L<input type="range" min="0" max="100" id="equalizer" />R
<script>
var AudioContext=AudioContext||webkitAudioContext;
var context=new AudioContext;
//加载音乐
var audio=new Audio("/files/SuperMario.mp3");
//创建节点
var media=context.createMediaElementSource(audio);
var lGain=context.createGain();
var rGain=context.createGain();
//创建声道离合器
var splitter=context.createChannelSplitter(2);
var merger=context.createChannelMerger(2);
/*
                 → lGain
media → splitter         → merger → destination
                 → rGain
*/
media.connect(splitter);
splitter.connect(lGain,0);
splitter.connect(rGain,1);
lGain.connect(merger,0,0);
rGain.connect(merger,0,1);
merger.connect(context.destination);
//控制
onload=equalizer.onchange=function(){
  lGain.gain.value=100-equalizer.value;
  rGain.gain.value=equalizer.value;
};
//播放
audio.play();
</script>
网名:
34.203.213.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^