gpt4 book ai didi

javascript - Web Audio API 无法在 iOS 版本 13.3 上播放。适用于旧版本的 iOS

转载 作者:行者123 更新时间:2023-11-29 05:08:56 25 4
gpt4 key购买 nike

我有一个使用网络音频 API 制作的音频可视化工具。它可以在 PC 上运行,也可以在 iOS 上运行,直到我更新到 13.3。

我不知道是什么原因导致它不起作用。我所知道的是,它只发生在较新版本的 iOS 上。

这是我的jsfiddle。 https://jsfiddle.net/r1dobj07/

document.getElementById("btn").addEventListener("click", function() {

var canvas = document.getElementById('canvas');
var audio = new Audio();
audio.loop = true;
audio.autoplay = false;
audio.crossOrigin = "anonymous";

audio.addEventListener('error', function(e) {
console.log(e);
});
audio.src = "https://greggman.github.io/doodles/sounds/DOCTOR VOX - Level Up.mp3";
//audio.play();
audio.controls = true;

document.getElementById("wrapper").append(audio);

var player = document.getElementById('audio_player');
var context = new(window.AudioContext || window.webkitAudioContext)();
var src = context.createMediaElementSource(audio);
var analyser = context.createAnalyser();
src.connect(analyser);
analyser.fftSize = 32;
analyser.connect(context.destination);

var ctx = canvas.getContext("2d");

var bufferLength = analyser.frequencyBinCount;


var dataArray = new Uint8Array(bufferLength);


var WIDTH = canvas.width;
var HEIGHT = canvas.height;

var barWidth = (WIDTH / bufferLength) * 0.5;
var barHeight;
var x = 0;


function renderFrame() {
requestAnimationFrame(renderFrame);
x = 0;
analyser.getByteFrequencyData(dataArray);

ctx.fillStyle = "rgba(0,0,0,0)";
ctx.clearRect(0, 0, WIDTH, HEIGHT);

for (var i = 0; i < bufferLength; i++) {
barHeight = dataArray[i];
if (barHeight === 0) {
barHeight = 20;
}
var barHeightScaled = barHeight / 250;
var barHeightScaled2 = barHeightScaled * HEIGHT;
var newHeight = HEIGHT - barHeightScaled2;
var r = 111;
var g = 121;
var b = 180;

CanvasRenderingContext2D.prototype.roundRect = function(x, y, w, h, r) {
if (w < 2 * r) r = w / 2;
if (h < 2 * r) r = h / 2;
this.beginPath();
this.moveTo(x + r, y);
this.arcTo(x + w, y, x + w, y + h, r);
this.arcTo(x + w, y + h, x, y + h, r);
this.arcTo(x, y + h, x, y, r);
this.arcTo(x, y, x + w, y, r);
this.closePath();
return this;
}


ctx.fillStyle = "rgb(" + r + "," + g + "," + b + ")";
ctx.roundRect(x, newHeight / 2, barWidth, barHeightScaled2, 50).fill();

x += barWidth + 4;
}
}

renderFrame();

}

);

在 PC 上运行良好。在我的 iPhone 上,它不播放音频。我可以看到这些条在 iOS 上呈现,但它们没有移动,因为没有输出音频。

最佳答案

不幸的是,目前有一个 bug in iOS related to the MediaStreamAudioSourceNode 。一旦将 MediaElement 连接到 AudioContext,它就会导致 MediaElement 停止。

关于javascript - Web Audio API 无法在 iOS 版本 13.3 上播放。适用于旧版本的 iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59866930/

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