iOS 6 Web Audio API 没有声音

2024-02-06

我很高兴看到 iOS 6 支持 Web Audio API,因为我们制作 HTML5 游戏。但是,我无法让 iOS 6 使用 Web Audio API 播放任何声音,其中的示例在桌面 Chrome 中运行良好。

这是一个带有触摸控制并通过 Web Audio API 播放音频的 HTML5 游戏(如果存在 - 如果不存在,它将回退到 HTML5 音频):

http://www.scirra.com/labs/sbios6b/ http://www.scirra.com/labs/sbios6b/

编辑:@Srikumar 建议了一些解决方法。我在下面的版本中应用了它们。还是不行!

http://www.scirra.com/labs/sbios6f/ http://www.scirra.com/labs/sbios6f/

在桌面版 Chrome 上一切都运行良好,但 iOS 6 根本不发出任何声音。我在调试它时遇到了麻烦,因为我只进行 Windows 开发,而 iOS 6 用远程 Web 检查器替换了调试模式,这显然在 Windows 版 Safari 上不可用。使用一些警报,我确实发现它正确识别了 Web Audio API,使用它,检测到没有 Vorbis 支持,因此回退到 AAC 音频,解码缓冲区然后播放它,并且没有抛出任何错误,但我什么也没听到。当然,我尝试将音量调到最大:)

不应该有编解码器问题,因为 iOS 6 可以很好地播放 AAC - 您可以浏览游戏播放的 .m4a 之一 http://www.scirra.com/labs/sbios6b/media/epicarpg.m4a直接从 Safari 访问它效果很好。

查看 iOS 6 上的 Web Audio API 示例:http://chromium.googlecode.com/svn/trunk/samples/audio/samples.html http://chromium.googlecode.com/svn/trunk/samples/audio/samples.html- 其中一些有效,而另一些则无效。例如,Chrome 音频可视化工具 http://www.htmlfivewow.com/demos/audio-visualizer/index.html有效,但是JavaScript 无人机 http://matt-diamond.com/drone.html没有。

iOS 6 上的网络音频和桌面 Chrome 之间肯定存在一些微妙的不兼容性。我缺少什么?


编辑(2015 年 11 月):iOS 9 不再允许音频以touchstart事件,这破坏了下面的解决方案。然而它的工作原理是touchend事件。 iOS 6 的原始答案在下面保持不变,但对于 iOS 9 支持,请确保使用touchend.

好吧,很抱歉回答我自己的赏金问题,但经过几个小时的调试我终于找到了答案。 iOS 6 上的 Safari 启动时 Web Audio API 已静音。它不会取消静音直到您尝试在用户输入事件中播放声音(创建一个缓冲区源,将其连接到目标,然后调用noteOn())。此后,它会取消静音,并且音频会不受限制地播放。这是 Web Audio API 如何在 iOS 6 上工作的一个未记录的方面(苹果的文档在这里 http://developer.apple.com/library/safari/#documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/PlayingandSynthesizingSounds/PlayingandSynthesizingSounds.html,希望他们尽快更新并提及这一点!)

用户可以经常触摸屏幕来参与游戏。但它仍将保持沉默。你have在用户输入事件中播放,例如touchstart [edit: touchend对于 iOS 9+],一次,然后所有音频取消静音。之后,您可以随时播放音频(不必在用户输入事件中)。

请注意,这与 HTML5 音频的限制不同:通常您只能在用户输入事件中启动音频,并且一次只能播放一种声音; Web Audio API 在用户输入第一次播放后完全取消静音,以便您可以随时播放声音,然后可以进行和弦混合、处理炫酷效果等。

这意味着许多已经在网络上使用 Web Audio API 的游戏将永远不会播放音频,因为它们不会在触摸事件中发出 noteOn。您必须调整它以等待第一个用户输入事件。

有几种方法可以解决这个问题:在用户触摸屏幕之前不要播放标题音乐;有一个初始的“触摸启用音频”屏幕并播放声音,然后在触摸时开始游戏;等等。希望这能帮助其他遇到同样问题的人节省一些调试时间!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 6 Web Audio API 没有声音 的相关文章

  • Jquery从下拉列表中获取所选值的id

    我有一个下拉列表 可以从数据库获取值 如下所示 get getJobs function jobs seljobs jobs var i 0 jobs forEach function n alert job id n id 32 67 4
  • 动画进度元素值

    我有一个progress元素 该元素如下所示 div class container div div div
  • 如何使用canvas.toDataURL()将画布保存为图像?

    我目前正在构建一个 HTML5 Web 应用程序 Phonegap 本机应用程序 我似乎不知道如何将画布保存为图像canvas toDataURL 有人可以帮我吗 这是代码 有什么问题吗 我的画布被命名为 canvasSignature J
  • Leaflet js虚构地图

    我是 Leaflet 的新手 我想了解如何创建完全交互式的虚构地图 我有一张图像想要转换为传单地图 该图像基本上像图表一样具有许多连接和点 我想首先将该图像转换为地图 能够将鼠标悬停在这些点上 突出显示它们并显示有关它们的信息 并且还可以在
  • 使用 CryptoJS 更改密钥 [重复]

    这个问题在这里已经有答案了 我正在使用 CryptoJS 来加密和解密文本 在这里 我只是获取消息并显示加密和解密消息 我使用DES算法进行加密和解密 这是我的 HTML 文件
  • 是否可以使用 javascript 测试用户的浏览器/操作系统是否支持给定类型的链接?

    是否可以使用 javascript 或其他任何东西 测试用户的操作系统 浏览器是否支持给定的 url 方案 例如 大多数仅使用网络邮件的用户计算机上未设置 mailto 是否有可能以某种方式捕获单击 mailto 链接的尝试并弹出比浏览器错
  • 如何更改 Bootstrap 3 div 列顺序

    正在做我的第一个响应式设计 在 Bootstrap 3 中可能会出现类似的情况 在 lg 上更改此设置 a b c sm 上的这个 a c b 您可以使用两个 div 一个用于第一类型的布置 另一个用于第二类型的布置 第一个仅在 lg 中显
  • 在闪亮的数据表中为每个单元格显示工具提示或弹出窗口?

    有没有什么方法可以为 r闪亮数据表中的每个单元格获取工具提示 有很多方法可以获取悬停行或列 但我找不到一种方法来获取行和列索引并为每个单元格显示不同的悬停工具提示 任何人都可以修改以下代码吗 library shiny library DT
  • Jquery 中的动态滚动位置

    请帮助我解决以下情况 我有 3 个页面 当滚动到达第二页时 用户滚动页面 它必须找到特定的 ID 然后触发一个函数 一旦第三页开始 另一个函数就会触发 根据要求我不应该使用任何插件
  • Javascript - 将值从下拉框传递到 Google Maps API

    我正在使用 Google 地图 API 为一家出租车公司创建报价表 目前 用户在 2 个文本框中输入出发点和接载点 API 会计算两点之间的距离以及行程费用 我正在尝试添加两个具有设定位置的下拉框 以便用户可以选择这些位置之一或使用文本框输
  • 如何延迟加载嵌入在 iframe 上的 YouTube 视频?

    如何将延迟加载应用于iframe嵌入视频 我尝试添加loading eager loading auto and loading lazyload 您可以使用srcdoc你里面的属性iframe标签来加载图像 请参阅以下示例作为参考
  • 未捕获的错误:找不到模块“jquery”

    我在用Electron https github com atom electron制作桌面应用程序 在我的应用程序中 我正在加载一个外部站点 Atom 应用程序之外 可以说http mydummysite index html http
  • 是否有任何非轮询方式来检测 DOM 元素的大小或位置何时发生变化?

    很长一段时间以来 我一直在寻找一种方法来检测 DOM 元素的大小或位置何时发生变化 这可能是因为窗口调整了大小 或者因为向该元素添加了新的子元素 或者因为在该元素周围添加了新元素 或者因为 CSS 规则已更改 或者因为用户更改了浏览器的字体
  • 在d3.js中将2D形状转换为3D,并根据ANGULAR中的值调整高度

    我正在使用 d3 js v6 创建以下 2D 图表表示的 3D 图表 这个圆圈中有多个正方形 每个正方形都根据值分配了一种颜色 值越大 正方形越暗 现在我想将其转换为 3D 形状 其中当值变高时 只有特定正方形的高度会增加 因此结果在某种程
  • 如何在 Angular 中从父组件访问子组件?

    I have mat paginator在子组件a中 如下所示 子组件 html
  • JS用正则表达式替换数字

    我有元素的标识符 如下所示 form book 1 2 3 我想要的是用其他值替换该标识符中的第二个数字 我将函数 match 与以下正则表达式一起使用 var regexp d d d 但它返回我包含的数组 1 2 3 2 因此 当我尝试
  • 将 javascript 整数转换为字节数组并返回

    function intFromBytes x var val 0 for var i 0 i lt x length i val x i if i lt x length 1 val val lt lt 8 return val func
  • 无法在前端使用 JavaScript Fetch API 将文件上传到 FastAPI 后端

    我正在尝试弄清楚如何将图像发送到我的 API 并验证生成的token那是在header的请求 到目前为止 这就是我所处的位置 app post endreProfilbilde async def endreProfilbilde requ
  • 三级十进制有序列表 CSS

    我有一个 html 中的三级有序列表 我想为其提供如下样式 1 Item 1 1 1 Item 2 1 1 1 Item 3 下一个 plunker 中有一个 html 示例 http plnkr co edit DqhZ5pJILTUHG
  • 使用异步调用时如何从 javascript 更新元刷新?

    我有一个系统 它使用元刷新来注销页面 该系统会在空闲用户后进行清理 不用担心 服务器也会导致会话超时 我开始通过 ajax 进行一些操作 不是真正的 xml 但这不是重点 我可以运行从异步请求返回的javascript 所以我想知道是否可以

随机推荐

  • HTTPS 使用非对称加密还是对称加密?

    我今天上午都在搜索 但我找到了一些网站 据说数据是 通过使用 TLS 协议的非对称加密发送的 然后我发现相反 请你告诉我哪个是真的 谢谢 有谁知道逐步解释 tls 协议通过 https 握手的指南吗 最好的答案是两者兼而有之 TLS 使用非
  • Dart HttpRequest 轮询

    我有一个网络应用程序 它有一个计时器 每 3 秒触发一次轮询以获取数据 它工作正常大约 2 5 分钟 然后 Chromium 崩溃了 我的请求 Dart 看起来像这样 HttpRequest getString data get load
  • BigQuery:404“表被截断。”当在截断之后插入时

    我通过执行此处描述的 queryJob 来截断我的表 https cloud google com bigquery docs quickstarts quickstart client libraries https cloud goog
  • 将命令与 TabItem 一起使用

    我想在选择 TabControl 的 TabItem 时调用命令 有没有办法在不破坏 MVVM 模式的情况下做到这一点 Use an 附加命令行为 http marlongrech wordpress com 2008 12 13 atta
  • ResultSetImpl 抛出 NullPointerException

    我正在使用 mysql 5 1 18 连接器运行 mysql 5 5 一个简单的样式查询 select from my table where column a in aaa bbb and column b 1 从java应用程序中执行
  • 如何在 Mountebank 中使用代理记录请求和响应?

    我正在使用创建一个冒名顶替者进程骗子 http www mbtest org docs gettingStarted并想要记录请求和响应 为了创建一个http imposter 我使用了以下命令CURL命令如其文档中所述 curl i X
  • 根据后代节点的属性选择节点的最佳 LINQ-to-XML 查询?

    我有以下 XML 文档
  • 属性的延迟加载

    如何实现对象属性的延迟加载 即如果访问属性但尚不存在 则调用一些应该加载这些属性的对象方法 我的第一次尝试是 def lazyload cls def getattr obj attr if loaded not in obj dict o
  • EF Code First 和 SQL Server 视图

    在 ASP NET MVC3 中 使用 EF Code First 时如何显示 SQL Server 视图中的数据 只需使用视图的名称作为表的名称即可
  • 检测后如何从图像中提取文本区域

    我正在尝试使用 opencv python 从图像中提取所有文本区域 我已成功检测到文本区域 但无法提取它 我提取了文本区域的较小子矩阵 但无法将它们聚合成我们在图像中视为文本区域的更大矩阵 import numpy as np impor
  • 没有实际块的 if 块内的声明是否有效?

    以下代码有效吗 如果有的话 范围是什么x int main if true int x 42 我的直觉告诉我 没有创建任何范围if因为没有实际的块 遵循它 GCC 4 7 2 向我们展示了 虽然代码是valid 的范围x仍然是简单的条件式
  • 我可以将 iPhone/iPad 作为 Eddystone Beacon 进行广播吗?

    我们可以让 iOS 设备充当 iBeacon 发射器 如果我们知道附近的 iBeacon 的 Proximity UUID 我们就可以找到它们 通过Google的Proximity Beacon API 可以配置和注册真正的Beacon硬件
  • 如何在 PostgreSQL 中高效设置减连接表?

    我有以下表格 work units 不言自明 workers 不言自明 skills 如果你想从事每个工作单位 都需要一些技能 每个工人都精通多项技能 work units skills 连接表 workers skills 连接表 工作人
  • 如何在 C# 中锁定整数?

    C 有没有办法锁定整数 整数不能与锁一起使用 因为它们是装箱的 并且仅锁定引用上的锁 场景如下 我有一个基于论坛的网站 具有审核功能 我想要做的是确保在任何给定时间只有一位版主可以审核帖子 为了实现这一点 我想锁定帖子的 ID 到目前为止
  • Memcache 打开后 Magento 会话消失

    我们遇到一个问题 当我们启用 memcache 在 nginx Web 服务器上 时 会话会从 Magento 1 10 中随机消失 我们在 Magento 中设置 cookie 过期时间似乎并不重要 由于某种原因 会话在一小时内的任何随机
  • 带有 mysql (Cloud SQL) 的谷歌应用程序引擎是否支持 GIS?

    我试图在应用程序引擎和云 sql 网站上找到一些关于此的文档 但找不到任何引用它的内容 我知道您可以对其自定义 sql 选项执行 GIS 查询 并且我知道 mysql 支持开箱即用的 GIS 但我也知道它需要一些支持有限的 C 库 更具体地
  • 如何保护我的网站免遭会话固定?

    目前我们面临着会话固定的问题 我们确实有一个受保护的站点 即 HTTPS 并且没有对其进行身份验证 这意味着它具有匿名访问权限 因此 我们面临着黑客的会话固定问题 有人可以帮助和指导吗 您应该在这里找到您需要的信息 OWASP https
  • java.lang.IllegalArgumentException:不是有效的类名:ANDROID NDK javah

    我正在学习在 WINDOWS Eclipse 上的 NDK 中编写 Android 代码 一直在关注 Sylvain Ratabouil 的教程书 所以我在跑步 外部工具 外部工具配置 创建新的程序配置 名称 MyProject javah
  • ADO.NET 数据服务 - 上传文件

    我正在尝试编写 REST Web 服务 通过该服务我们的客户可以将文件上传到我们的文件服务器上 是否有示例或任何有用的链接可供我参考以获取指导 我还没有看到很多使用 ADO NET 数据服务进行 POST 操作的示例 我已使用 POST 将
  • iOS 6 Web Audio API 没有声音

    我很高兴看到 iOS 6 支持 Web Audio API 因为我们制作 HTML5 游戏 但是 我无法让 iOS 6 使用 Web Audio API 播放任何声音 其中的示例在桌面 Chrome 中运行良好 这是一个带有触摸控制并通过