AudioContext.createChannelMerger()
åºçº¿
广æ³å¯ç¨
èª 2021å¹´4æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
AudioContext.createChannelMerger() æ¹æ³ï¼ä¼å建ä¸ä¸ª ChannelMergerNodeï¼åè
å¯ä»¥æå¤ä¸ªé³é¢æµçééæ´åå°ä¸ä¸ªé³é¢æµã
è¯æ³
js
var audioCtx = new AudioContext();
var merger = audioCtx.createChannelMerger(2);
åæ°
- numberOfInputs
-
ééè¾å ¥é³é¢æµçæ°éï¼è¾åºæµå°å å«è¿ä¸ªæ°éçééãé»è®¤å¼ 6ã
è¿åå¼
ä¸ä¸ª ChannelMergerNode.
示ä¾
ä¸é¢çä¾åå±ç¤ºäºå¦ä½å离ç«ä½é³è½¨ï¼å°±æ¯ä¸æ®µé³ä¹ï¼ï¼å¤ç使左å³å£°éä¸åã使ç¨çæ¶åï¼éè¦æå® AudioNode.connect(AudioNode) æ¹æ³ç第äºä¸ªå第ä¸ä¸ªåæ°ï¼åå«ç¨æ¥æå®éé龿¥æ¥æºçç´¢å¼åè¾åºçç´¢å¼ã
js
var ac = new AudioContext();
ac.decodeAudioData(someStereoBuffer, function (data) {
var source = ac.createBufferSource();
source.buffer = data;
var splitter = ac.createChannelSplitter(2);
source.connect(splitter);
var merger = ac.createChannelMerger(2);
// Reduce the volume of the left channel only
var gainNode = ac.createGain();
gainNode.gain.value = 0.5;
splitter.connect(gainNode, 0);
// Connect the splitter back to the second input of the merger: we
// effectively swap the channels, here, reversing the stereo image.
gainNode.connect(merger, 0, 1);
splitter.connect(merger, 1, 0);
var dest = ac.createMediaStreamDestination();
// Because we have used a ChannelMergerNode, we now have a stereo
// MediaStream we can use to pipe the Web Audio graph to WebRTC,
// MediaRecorder, etc.
merger.connect(dest);
});
è§è
| è§è |
|---|
| Web Audio API > # dom-baseaudiocontext-createchannelmerger > |