Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当iphone中的html5音频标签进入锁屏时会发生什么变化?_Javascript_Input_Mobile Safari_Html5 Audio - Fatal编程技术网

Javascript 当iphone中的html5音频标签进入锁屏时会发生什么变化?

Javascript 当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)上,一旦屏幕锁定,它就无法工作。它

我正在尝试通过html音频标签“顺序播放aka播放列表”。文件源来自用户的手机本身。用户将从输入中选择多个文件,如果是Android,它将在加载时自动开始播放,如果是iphone,用户必须首先单击播放

因此,我尝试了URL.createObjectURLweb音频api文件读取器。 在安卓系统中,一切都很好。当第一个音频文件完成播放时,使用onended listener,它将播放下一个文件。“上一步/下一步”按钮也正常工作。但在iphone(ios 13)上,一旦屏幕锁定,它就无法工作。它只允许结束第一个文件

起初,我以为问题是

safari不允许在没有用户交互的情况下使用audio.play()

为了缩小错误的原因,我链接了来自GoogleDrive或Dropbox的文件源。在这种情况下,无论iphone上的屏幕是否锁定,下一个文件都会优雅地播放

所以问题一定是在iphone中使用本地文件。当点击播放按钮时,它会播放第一个。然后,第一个文件将完成播放,当它转到下一个加载时,如果文件来自本地并且屏幕关闭了一段时间,它将抛出错误(音频元素错误事件中的代码:4)。合一事件以及上一个/下一个按钮单击

我无法使用web音频api进行检查,因为相同的代码在Android环境下工作的iphone上不起作用。它甚至连第一个文件都不能播放。“播放”按钮根本不起作用

源代码

Html

<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();
}