Web Audio API,获取两个数组中左/右声道的 getByteTimeDomainData。
Web Audio API, get getByteTimeDomainData for left / right channel in two arrays.
我目前正在尝试使用网络音频创建音频可视化 api,即我正在尝试从给定的音频源生成李萨茹图形。
我遇到了这个 post,但我缺少一些先决条件。如何获取左/右声道的时域数据?目前看来我只得到合并的数据。
如有任何帮助或提示,我们将不胜感激。
$(document).ready(function () {
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
var audioElement = document.getElementById('audioElement');
var audioSrc = audioCtx.createMediaElementSource(audioElement);
var analyser = audioCtx.createAnalyser();
// Bind analyser to media element source.
audioSrc.connect(analyser);
audioSrc.connect(audioCtx.destination);
//var timeDomainData = new Uint8Array(analyser.frequencyBinCount);
var timeDomainData = new Uint8Array(200);
// loop and update time domain data array.
function renderChart() {
requestAnimationFrame(renderChart);
// Copy frequency data to timeDomainData array.
analyser.getByteTimeDomainData(timeDomainData);
// debugging: print to console
console.log(timeDomainData);
}
// Run the loop
renderChart();
});
观察正确,波形是缩混后的结果。来自current spec(我强调):
Copies the current down-mixed time-domain (waveform) data into the
passed unsigned byte array. [...]
要解决这个问题,您可以使用通道分离器 (createChannelSplitter()
) 并将每个通道分配给两个单独的分析器节点。
有关 createChannelSplitter()
的更多详细信息,请参阅 this link。
我目前正在尝试使用网络音频创建音频可视化 api,即我正在尝试从给定的音频源生成李萨茹图形。
我遇到了这个 post,但我缺少一些先决条件。如何获取左/右声道的时域数据?目前看来我只得到合并的数据。
如有任何帮助或提示,我们将不胜感激。
$(document).ready(function () {
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
var audioElement = document.getElementById('audioElement');
var audioSrc = audioCtx.createMediaElementSource(audioElement);
var analyser = audioCtx.createAnalyser();
// Bind analyser to media element source.
audioSrc.connect(analyser);
audioSrc.connect(audioCtx.destination);
//var timeDomainData = new Uint8Array(analyser.frequencyBinCount);
var timeDomainData = new Uint8Array(200);
// loop and update time domain data array.
function renderChart() {
requestAnimationFrame(renderChart);
// Copy frequency data to timeDomainData array.
analyser.getByteTimeDomainData(timeDomainData);
// debugging: print to console
console.log(timeDomainData);
}
// Run the loop
renderChart();
});
观察正确,波形是缩混后的结果。来自current spec(我强调):
Copies the current down-mixed time-domain (waveform) data into the passed unsigned byte array. [...]
要解决这个问题,您可以使用通道分离器 (createChannelSplitter()
) 并将每个通道分配给两个单独的分析器节点。
有关 createChannelSplitter()
的更多详细信息,请参阅 this link。