0
我正在尝试使用Web Audio API创建多轨音频播放器。目前我的播放按钮的点击也被类似处理...Web音频API:同时启动多个MediaElementAudioSourceNode
function playProject(){
var p = $(".play-button");
p.hide();
p.siblings('.pause-button').show();
for(var i=0 ; i<audio.length ; i++){
audio[i].play();
}
}
我的网络音频设置是这样的......
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
var audio = [];
var channelVolume = [];
var vol = audioCtx.createGain();
$(document).ready(function(){
var obj = JSON.parse('<?php echo $json ?>');
var audioPath = "../wp-content/themes/blankslate-child/projects/"+"<?php echo $data->name ?>"+"/";
var sources = [];
var merger = audioCtx.createChannelMerger(2);
for(var i = 0; i<obj.length;i++){
audio.push(new Audio());
audio[i].src = audioPath+obj[i].name;
audio[i].loop = true;
sources.push(audioCtx.createMediaElementSource(audio[i]));
channelVolume.push(audioCtx.createGain())
sources[i].connect(channelVolume[i]);
channelVolume[i].connect(merger,0,0);
}
merger.connect(vol);
vol.connect(audioCtx.destination);
})
基本上我遍历所有我的音乐元素,并发挥他们。虽然这有效,但我觉得它可能不是最干净的方法。有什么方法可以在单个函数调用的同时播放所有音频源?
这并不回答你的问题,但你应该注意将数据回传到JavaScript中。你应该做的是使用'json_encode()'使你的数据在脚本中安全使用。另外,如果您直接将JSON正确回显到JS中,则不需要JS中的'JSON.parse()'。 – Brad
我确实使用了json编码来创建$ json变量@Brad – Yawnolly
正确,但是您在'audioPath'中丢失了它。另外,您不需要'JSON.parse()'...您可以直接将JSON编码的对象回显到脚本中。 – Brad