我正在使用 AudioContext 加载游戏的 .mp3 文件。它曾经工作得很好,但在 Safari 15 发布后,我收到人们的报告,声音无法播放。在他们升级浏览器之前,声音曾经对他们来说工作得很好。
在我自己的 Safari 15 上,它工作正常,但对于某些人来说,调用audioContext.decodeAudioData失败,他们只是得到EncodingError: Decoding failed,没有额外的信息。我尝试使用 .aac 文件而不是 .mp3,但发生了同样的事情。
很难弄清楚这一点,因为我自己无法重现它。有任何想法吗?
Java和iOS也有类似的问题,但我想知道如何通过getUserMedia(). 所以给出:
navigator.mediaDevices.getUserMedia({ audio: true })
.then(stream => {
const mediaRecorder = new MediaRecorder(stream);
mediaRecorder.start();
const audioChunks = [];
mediaRecorder.addEventListener("dataavailable", event => {
audioChunks.push(event.data);
});
mediaRecorder.addEventListener("stop", () => {
const audioBlob = new Blob(audioChunks);
const audioUrl = URL.createObjectURL(audioBlob);
const audio = new Audio(audioUrl);
audio.play();
});
});
Run Code Online (Sandbox Code Playgroud)
我想知道如果没有音频,是否可以检查Blob、URL或Audio对象上的任何内容。如果麦克风不好或选择了虚拟设备 - 任何类似的事情。我之前检查了 blob 的大小,但无声音频仍然有文件大小。我可以通过在后端执行此操作,但希望纯 JS 有一种方法可以简化。stopffmpeg