gpt4 book ai didi

javascript - 音频上下文在 Android 上无法正常工作

转载 作者:行者123 更新时间:2023-12-03 07:06:44 24 4
gpt4 key购买 nike

我在 android 上遇到了这个问题(无论是 android 浏览器还是 android chrome):getByteFrequencyData 方法返回 0 值。

有人说 Android 移动设备不支持 Web Audio Api(IOS 支持),但我刚刚检查了这个 link ,其中表示 chrome 49 支持 Audio Api。

有人说这是旧的issue

还有人说问题出在媒体元素上,如果你能用XHR将媒体加载到缓冲区中并播放它,就会work (我测试过,但没有成功)

我正在尝试使用 Audio APi + Canvas 制作一个在 android cordova 上工作的音频可视化工具有什么帮助吗?

最佳答案

我让它工作了,带有两个参数的createBuffer()方法不再在chrome版本上工作,所以我必须使用decodeAudioData来获取缓冲区源:

// Create AudioContext and buffer source
var audioCtx = new AudioContext();
source = audioCtx.createBufferSource();
// load in an audio track via XHR and decodeAudioData
function getData() {
request = new XMLHttpRequest();
request.open('GET', 'Test.mp3', true);
request.responseType = 'arraybuffer';
request.onload = function() {
var audioData = request.response;

audioCtx.decodeAudioData(audioData, function(buffer) {
myBuffer = buffer;
source.buffer = myBuffer;

analyser = audioCtx.createAnalyser(); // AnalyserNode method
canvas = document.getElementById('CanvasDiv');
canvasContext = canvas.getContext('2d');
source.connect(analyser);
analyser.connect(audioCtx.destination);

frameLooper();
},
function(e){"Error with decoding audio data" + e.err});
}
request.send();
}
function frameLooper(){
ionic.requestAnimationFrame(frameLooper); //You can use window instead of ionic
fbc_array = new Uint8Array(analyser.frequencyBinCount);
analyser.getByteFrequencyData(fbc_array);
canvasContext.clearRect(0, 0, canvas.width, canvas.height); // Clear the canvas
canvasContext.fillStyle = '#00CCFF'; // Color of the bars
bars = 100;

for (var i = 0; i < bars; i++) {
bar_x = i * 3;
bar_width = 2;
bar_height = -(fbc_array[i] / 2);
// fillRect( x, y, width, height ) // Explanation of the parameters below
canvasContext.fillRect(bar_x, canvas.height, bar_width, bar_height);
}
}
getData();
var audio = document.getElementById('audioTagId');
Callback = function(){
source.start();
}
document.getElementById("PlayButton").addEventListener("click", Callback);

关于javascript - 音频上下文在 Android 上无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36796357/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com