如何确定a<;中的音频通道数;视频>;标签?(HTML5)
我想在视频元素的每个音频通道上附加一个AnalyzerNode,以便进行音频可视化 我的代码目前运行正常,除了AudioContext和MediaElementAudioSourceNode都报告通道计数为2,而不管视频中实际有多少个音频通道如何确定a<;中的音频通道数;视频>;标签?(HTML5),html,audio,video,html5-video,Html,Audio,Video,Html5 Video,我想在视频元素的每个音频通道上附加一个AnalyzerNode,以便进行音频可视化 我的代码目前运行正常,除了AudioContext和MediaElementAudioSourceNode都报告通道计数为2,而不管视频中实际有多少个音频通道 let context = new AudioContext(); let source = context.createMediaElementSource(videoElement); let srcChannelCount = source.chan
let context = new AudioContext();
let source = context.createMediaElementSource(videoElement);
let srcChannelCount = source.channelCount; // Always 2!!!
在我正在测试的情况下,我生成了一个webm文件,其中包含一个包含8个通道的音频流。如果我将srcChannelCount变量硬编码为特定数量的通道(例如,让srcChannelCount=8;
),我的可视化将正确显示8个通道中每个通道的数据,但是我希望代码根据视频文件检测通道数
有人能告诉我如何确定实际的源音频通道数吗?您可以使用音频缓冲区的numberOfChannels属性。但是,您需要使用decodeAudioData(audioData)、函数(buffer){}函数和xhr请求,而不是audio元素。示例如下:
function getData( currSource ) {
source = audioCtx.createBufferSource();
var request = new XMLHttpRequest();
request.open('GET', currSource , true); //for example 'sample.ogg'
request.responseType = 'arraybuffer';
request.onload = function() {
var audioData = request.response;
audioCtx.decodeAudioData(audioData, function(buffer) {
source.buffer = buffer;
console.log('detected '+buffer.numberOfChannels+' audio channels in the selected file');
}, //end succes
function(e){
console.log('error: '+e); //log error
}
).catch(error => {
console.log('failed');
});
}//end request loaded
request.send();
}
这行得通吗:另外请注意,并非所有浏览器都支持所有功能…这里还有一个链接,非网站链接: