Web 音频 api 5.1 环绕声示例在 Firefox 中不起作用
Web audio api 5.1 surround example not working in firefox
我最近在 Firefox 和 Chrome 上经常使用 Web Audio Api。几天前,我开始尝试使用环绕声。当我在网络音频 api 中尝试环绕音频时,我注意到我的示例在 Chrome v59 中运行良好,但在 Firefox v54 中运行不正常。
// create web audio api context
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
audioCtx.destination.channelInterpretation = 'discrete';
audioCtx.destination.channelCountMode = 'explicit';
audioCtx.destination.channelCount = 6;
var oscillators = [];
var merger = audioCtx.createChannelMerger(6);
console.log(audioCtx.destination, merger);
//merger.channelInterpretation = 'discrete';
//merger.channelCountMode = 'explicit';
//merger.channelCount = 6;
var addOscilator = function(channel, frequency) {
var oscillator = audioCtx.createOscillator();
oscillator.frequency.value = frequency; // value in hertz
oscillator.connect(merger,0,channel);
oscillator.start();
oscillators.push(oscillator);
};
addOscilator(0,300);
addOscilator(1,500);
addOscilator(2,700);
addOscilator(3,900);
addOscilator(4,1100);
addOscilator(5,1300);
merger.connect(audioCtx.destination);
当我对音频上下文目标执行控制台日志时,maxChannelCount 是 6,channelCount 也是 6,但我仍然只在左右声道上获得输出。这些通道播放所有输出。 (所以它从 5.1 缩混到立体声)
我还尝试在 firefox 的 html-audio 元素中播放 5.1 环绕声音频文件,效果很好。换句话说,浏览器正在识别并能够输出环绕集。
我在这个例子中做错了什么,或者这是 firefox 尚未实现的功能(因为网络音频 api 仍然是草稿)?我找不到任何这样的报告,所以我认为这是我的错,但浏览器之间的不一致让我怀疑。
提前致谢
经过更深入的研究,结果证明这是 firefox v54 中的一个错误。
https://bugzilla.mozilla.org/show_bug.cgi?id=1378070
通道将被处理,但最终混合为立体声。 Mozilla 在撰写本文时正在修复。
在 firefox v57 中标记为已解决。
我最近在 Firefox 和 Chrome 上经常使用 Web Audio Api。几天前,我开始尝试使用环绕声。当我在网络音频 api 中尝试环绕音频时,我注意到我的示例在 Chrome v59 中运行良好,但在 Firefox v54 中运行不正常。
// create web audio api context
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
audioCtx.destination.channelInterpretation = 'discrete';
audioCtx.destination.channelCountMode = 'explicit';
audioCtx.destination.channelCount = 6;
var oscillators = [];
var merger = audioCtx.createChannelMerger(6);
console.log(audioCtx.destination, merger);
//merger.channelInterpretation = 'discrete';
//merger.channelCountMode = 'explicit';
//merger.channelCount = 6;
var addOscilator = function(channel, frequency) {
var oscillator = audioCtx.createOscillator();
oscillator.frequency.value = frequency; // value in hertz
oscillator.connect(merger,0,channel);
oscillator.start();
oscillators.push(oscillator);
};
addOscilator(0,300);
addOscilator(1,500);
addOscilator(2,700);
addOscilator(3,900);
addOscilator(4,1100);
addOscilator(5,1300);
merger.connect(audioCtx.destination);
当我对音频上下文目标执行控制台日志时,maxChannelCount 是 6,channelCount 也是 6,但我仍然只在左右声道上获得输出。这些通道播放所有输出。 (所以它从 5.1 缩混到立体声)
我还尝试在 firefox 的 html-audio 元素中播放 5.1 环绕声音频文件,效果很好。换句话说,浏览器正在识别并能够输出环绕集。
我在这个例子中做错了什么,或者这是 firefox 尚未实现的功能(因为网络音频 api 仍然是草稿)?我找不到任何这样的报告,所以我认为这是我的错,但浏览器之间的不一致让我怀疑。
提前致谢
经过更深入的研究,结果证明这是 firefox v54 中的一个错误。
https://bugzilla.mozilla.org/show_bug.cgi?id=1378070
通道将被处理,但最终混合为立体声。 Mozilla 在撰写本文时正在修复。
在 firefox v57 中标记为已解决。