问题标签 [webkitaudiocontext]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1032 浏览

angular - Safari 上的 AudioContext decodeAudioData 问题

我想将 .ogg 内容解码为 ArrayBuffer。

我的 Angular 应用程序组件中有以下代码:

这适用于 Chrome,但在 Safari 11 上,会触发错误:

解码音频数据时出错 null

我会错过什么?

0 投票
0 回答
31 浏览

javascript - 移动应用 浏览器 录音机 高频

在 chrome PC 中,我可以记录高频,但在移动 chrome 应用程序或任何其他浏览器移动应用程序中,高频会被切断。任何想法?

我试图用 来创建高通滤波器createBiquadFilter,但没有用。

我正在使用音频上下文。

0 投票
1 回答
68 浏览

safari - Safari - WebkitAudioContext 因未知原因阻塞某些 mp3 文件

我仅在 Safari 中遇到某些 MP3 文件的问题。

这是一个代码笔: https ://codepen.io/parliament718/pen/ExjwWEp

在 chrome 中,两个按钮都可以播放两个文件。在 Safari 中,只有第一个按钮有效。

为什么是这样?当 safari 没有看到“.mp3”后缀时,它会窒息还是其他什么?

  • 两个请求都返回“audio/mp3”Content-Type 标头。
  • 这两个文件都可以下载为 mp3 并在任何音频播放器中播放
  • 两个文件都可以通过safari地址栏直接播放

但只有其中一个文件使用 WebkitAudioContext 以编程方式播放。

失败代码:

0 投票
0 回答
297 浏览

javascript - Safari createMediaElementSource 在 HLS/m3u8 视频源上是否损坏?

我目前正在尝试在处理 HLS 和原始 MP4 文件的视频播放器上集成自定义音频过滤器。我在 Chrome 和 Firefox 上集成它几乎没有问题 - 另一方面,Safari 没有相应的行为。我偶然发现safari 从通话中路由音频的方式不一致。createMediaElementSource

我创建了一个小演示来说明问题(Safari ONLY for native HLS support),我明确省略了任何音频过滤器代码,因为它与主要问题几乎没有相关性:

https://codepen.io/edvincandonus/pen/ZEGVbPG

在演示中,一旦通过用户手势实例化并“解锁”了 audioContext ,我通过创建 MediaElementAudioSourceNodeaudioCtx.createMediaElementSource(video)并将其悬空(如未连接)。因此,HTMLMediaElement 将被重新路由到 AudioContext 的处理图中,并且由于没有与 建立连接,因此audioCtx.destination在视频播放开始时应该会丢失音频播放。

这是 Firefox 上的行为。如果 MediaElementAudioSourceNode 没有最终目标节点,Chrome 会更进一步并阻止视频播放(尝试在 chrome 上播放演示中的 MP4)

至于 Safari:只有当视频源是原始 MP4 文件时才会满足这种期望 - 但是当切换到m3u8/hls 流时,HTMLMediaElement 的音频没有正确路由到 AudioContext,因为您可以清楚地听到视频的声音。

这是一个已知的野生动物园限制吗?如果没有,是否有任何解决方法可以使用 Safari 对该协议的本机支持从 HLS 流中正确访问和路由音频?

我偶然发现了旧的 stackoverflow 答案,表明 createMediaElementSource 在 Safari 上一直存在问题,但我认为他们现在应该已经修复了。

0 投票
1 回答
20 浏览

javascript - audioContext 振荡器在一秒钟后“卡住”并且不会停止

我想创建一个振荡器,当用户按下一个键(现在只是空格键)时启动和停止。但是如果按键时间过长,比如一秒钟 - 振荡器会卡住并且不会停止();

0 投票
0 回答
96 浏览

audio - Safari:AudioContext MediaElementAudioSourceNode 不尊重playbackRate

我目前正在开发一个使用 AudioContext api 来控制视频剪辑和背景音频的音频的应用程序。我们想使用 AudioContext(因此MediaElementAudioSourceNodes),以便我们可以通过编程方式调整音频。

因为应用程序正在将媒体同步到时间线,这通常意味着调整playbackRate媒体元素以赶上。在 Chrome 中,这可以正常工作:您进行调整playbackRate,媒体会相应地加速或减速。现在在 Safari 中,通过 a 管道传输的任何音频MediaElementAudioSourceNode都不会尊重更改的媒体playbackRate,以正常速度播放音频,然后会在几秒钟后喷出。(Safari 音频尊重playbackRate直接从媒体元素播放的时间,特别是没有音高校正,但这是一个单独的已知问题)

这是一个复制问题的 CodeSandbox。页面上的第一个播放器将直接播放来自 的音频HTMLMediaElement,而第二个播放器将通过MediaElementAudioSourceNode.

我们尝试了其他几种途径,例如使用AudioBufferSourceNode音频源,但由于我们经常使用的剪辑大小,这不是理想的途径。如果可能的话,我们希望仍然AudioContext为 Chrome 和 Safari 使用 api。

0 投票
1 回答
163 浏览

javascript - Javascript webkitAudioContext 在 Safari 中没有播放

我正在尝试设置无法在 Safari 14.0.3 上运行的音频播放,但在 Chrome 88.0.4324.146 中运行良好。我有一个返回 AudioContext 或 webkitAudioContext 的函数。我遵循了这个答案:https ://stackoverflow.com/a/29373891/586006

现场示例:http ://www.mysterysystem.com/stuff/test.html

0 投票
0 回答
47 浏览

audio - 记录从缓冲区处理的音频结果并将其放置在音频元素中

我有一个 JavaScript 文件,它获取一个音频文件,将其放在缓冲区中,然后允许处理缓冲区中的音频(通过更改速度和循环持续时间)。

我希望记录生成的音频,包括操作,并将其放置在一个<audio>元素中。我试图通过在这里集成第一个答案中给出的代码来做到这一点:

录制 webaudio api 的音频上下文的声音

与我的 JavaScript 文件。但是,当我按下播放按钮(也应该开始录制)时出现以下错误:

我相信我没有正确连接媒体记录器。有人可以帮忙吗?

谢谢,

我的html是:

我的 JavaScript 是:

原始 decodeAudioData 示例(我没有尝试记录)来自此处的 Mozilla 文档: https ://mdn.github.io/webaudio-examples/decode-audio-data/ by chrisdavidmills

0 投票
0 回答
31 浏览

javascript - audiocontext 不播放 wav 文件

我正在尝试学习如何使用 Audiocontext 为我的声音提供环境效果。

我花了很多时间试图在 jfiddle 或类似的东西上建立一个简单的例子,我非常沮丧,无法建立最简单的例子,直到我找到以下链接:

https://codepen.io/Rumyra/pen/qyMzqN/

其中包括此音频参考:

它有效!但后来我将 HTML 部分的 .mp3 文件替换为我自己的文件之一,该文件是一个 wav 文件,但它停止了工作。我尝试了另一个 wav 文件:https://www2.cs.uic.edu/~i101/SoundFiles/StarWars3.wav,它也没有工作。

似乎我一直以来的问题是我在不允许的情况下使用了音频上下文的 wav 文件?,在我找到的所有教程中都没有找到任何关于它的线索,谁能确认问题是格式我想使用的文件?