Javascript 当iphone中的html5音频标签进入锁屏时会发生什么变化?
我正在尝试通过html音频标签“顺序播放aka播放列表”。文件源来自用户的手机本身。用户将从输入中选择多个文件,如果是Android,它将在加载时自动开始播放,如果是iphone,用户必须首先单击播放 因此,我尝试了URL.createObjectURL,web音频api,文件读取器。 在安卓系统中,一切都很好。当第一个音频文件完成播放时,使用onended listener,它将播放下一个文件。“上一步/下一步”按钮也正常工作。但在iphone(ios 13)上,一旦屏幕锁定,它就无法工作。它只允许结束第一个文件 起初,我以为问题是 safari不允许在没有用户交互的情况下使用audio.play() 为了缩小错误的原因,我链接了来自GoogleDrive或Dropbox的文件源。在这种情况下,无论iphone上的屏幕是否锁定,下一个文件都会优雅地播放 所以问题一定是在iphone中使用本地文件。当点击播放按钮时,它会播放第一个。然后,第一个文件将完成播放,当它转到下一个加载时,如果文件来自本地并且屏幕关闭了一段时间,它将抛出错误(音频元素错误事件中的代码:4)。合一事件以及上一个/下一个按钮单击 我无法使用web音频api进行检查,因为相同的代码在Android环境下工作的iphone上不起作用。它甚至连第一个文件都不能播放。“播放”按钮根本不起作用 源代码 HtmlJavascript 当iphone中的html5音频标签进入锁屏时会发生什么变化?,javascript,input,mobile-safari,html5-audio,Javascript,Input,Mobile Safari,Html5 Audio,我正在尝试通过html音频标签“顺序播放aka播放列表”。文件源来自用户的手机本身。用户将从输入中选择多个文件,如果是Android,它将在加载时自动开始播放,如果是iphone,用户必须首先单击播放 因此,我尝试了URL.createObjectURL,web音频api,文件读取器。 在安卓系统中,一切都很好。当第一个音频文件完成播放时,使用onended listener,它将播放下一个文件。“上一步/下一步”按钮也正常工作。但在iphone(ios 13)上,一旦屏幕锁定,它就无法工作。它
<label class="custom-file-upload">
<input type="file" accept='audio/*' multiple> Load </label>
<audio type="audio/mp4" controls></audio>
然后在功能播放列表中
const track = audioContext.createMediaElementSource(audio);
track.connect(audioContext.destination);
if (audioContext.state === 'suspended') {
audioContext.resume();
}
其工作原理与Android中的其他两种方法完全相同。但它在iphone上根本无法播放
作为最后的手段,我想试试这个web音频api。但由于它不起作用,我不能确定结果是否与其他两个相同。我也怀疑,问题是否出在获取文件本身
如何使此web音频api在iphone上工作?在iphone上使用input[type=file]有任何限制吗
**编辑**
我发现甚至音频元素也会抛出错误,filereader的url和url.createObjectURL会得到url ok。最后似乎有点音频标签的问题。仍然没有解决方案…您需要连接到音频结束事件,并将src更改为新的音频文件@Chris Love谢谢您的关注。听起来可能有用。然而,我放弃了对iPhone的支持。所以我不能肯定。无论如何,再次感谢。您需要连接到音频结束事件,并将src更改为新的音频文件@chrislove谢谢您的关注。听起来可能有用。然而,我放弃了对iPhone的支持。所以我不能肯定。无论如何,再次谢谢你。
const audioContext = new (window.AudioContext || window.webkitAudioContext)();
const track = audioContext.createMediaElementSource(audio);
track.connect(audioContext.destination);
if (audioContext.state === 'suspended') {
audioContext.resume();
}