gpt4 book ai didi

javascript - 有没有办法在网络应用程序中以编程方式播放音频?

转载 作者:太空宇宙 更新时间:2023-11-04 15:32:58 24 4
gpt4 key购买 nike

我正在构建一个网络应用程序,其中涉及在新订单进入应用程序时播放声音。在桌面上这一切都工作正常。

但是,在 iOS 上,音频根本无法播放。经过一些investigation我发现 iOS 在播放音频方面有限制。

  • 仅在用户交互之后
  • 仅当页面处于事件状态且位于前台时
  • 仅当手机屏幕打开时
  • 无法阻止屏幕关闭,因此您的音频将在第一首歌曲后停止。

有没有办法请求用户许可以允许以编程方式播放音频?

最佳答案

是的,这是真的!用户请求之前没有音频缓冲区。使用一些弹出窗口或任何美观的动画来吸引用户点击。您初始化播放,同时下一个代码行暂停,您将初始缓冲,然后您可以播放音频可编程性。(就像老版本的自动播放问题一样)

在我的内存中... Android 和 iOS 没有相同的行为,它与我们可以使用此技巧启动缓冲区的最大音频数量有关(单击或触摸)。您需要对其进行测试。我的设备是 android 6,适用于 iOS 3 视频/音频。

如果您希望相同的音频在同一时刻播放多次:最好使用相同的源创建更多音频 html 标签。

I 'm a fan of javascript but this time it is better to have html audio tags in html form (subjective feeling/ no proof).

    var EXE_JUST_ONE_TIME = false;

document.addEventListener("touchstart" , function(e) {

if (EXE_JUST_ONE_TIME == false){

EXE_JUST_ONE_TIME = true;

document.getElementById("LaserShot").play(); // need for play pause just for buffering start
document.getElementById("LaserShot").pause();
// now you can play programmability from js
document.getElementById("LaserShot_CLONE").play();
document.getElementById("LaserShot_CLONE").pause();

}
else if(EXE_JUST_ONE_TIME = true){

document.getElementById("MakeReadyotherAudio1").play();
document.getElementById("MakeReadyotherAudio1").pause();

document.getElementById("MakeReadyotherAudio2").play();
document.getElementById("MakeReadyotherAudio2").pause();

EXE_JUST_ONE_TIME = 'NOMORE'

}


}

关于javascript - 有没有办法在网络应用程序中以编程方式播放音频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44650634/

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