移动Safari上的MediaElementSourceNode

时间:2019-11-26 08:01:50

标签: ios mobile-safari web-audio-api

我正在尝试使用Web Audio API开发HTML5 / Javascript混合应用程序。我偶然发现了在移动Safari(iPadOS 13.2.3)中使用MediaElementSourceNodes的Web Audio API的问题。

一个最小的示例显示音频元素正在加载数据,但是在播放时,听不到声音。下面是我用于示例的代码。我首先认为问题与我的Javascript有关,因为我使用了onclick处理程序来播放声音而不是音频元素的控件。事实并非如此。在调查播放承诺时,事实证明,除了实际的声音输出之外,其他所有东西都按预期工作。音频元素的按钮变为“暂停”,但是没有播放进度。承诺似乎会返回成功。我的代码中奇怪的是,结果是“未定义的”,而在连接到iPad的Mac上从Javascript控制台调用play()时,返回的承诺状态为“待处理”。

但是,我还通过here尝试了Web Audio文档中的示例页面。在该页面上,单击iPad上的播放按钮时也没有声音。

我在互联网上搜索了一段时间,但没有找到任何提示。

在我的示例代码下方,可以访问here

const AudioContext = window.AudioContext || window.webkitAudioContext;
const audioContext = new AudioContext();
const master = audioContext.createGain();

window.onload = function() {
  var button = document.querySelector("#button");
  var audio = document.querySelector("audio");
  var source = audioContext.createMediaElementSource(audio);
  source.connect(master);
  master.connect(audioContext.destination);
  button.addEventListener('click', function() {
    if (audioContext.state === 'suspended') {
      audioContext.resume();
    }
    audio.play().then(result => {
      console.log("success");
      console.log(result);
    });
    console.log("Play");
  });
  console.log("Loaded");
};
<html>

<head>
  <meta charset="utf-8">
</head>

<body>
  <audio controls src="test.wav"></audio>
  <a id="button">Click me</a>
</body>

</html>

0 个答案:

没有答案