问题标签 [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.
angular - Safari 上的 AudioContext decodeAudioData 问题
我想将 .ogg 内容解码为 ArrayBuffer。
我的 Angular 应用程序组件中有以下代码:
这适用于 Chrome,但在 Safari 11 上,会触发错误:
解码音频数据时出错 null
我会错过什么?
javascript - 移动应用 浏览器 录音机 高频
在 chrome PC 中,我可以记录高频,但在移动 chrome 应用程序或任何其他浏览器移动应用程序中,高频会被切断。任何想法?
我试图用 来创建高通滤波器createBiquadFilter
,但没有用。
我正在使用音频上下文。
safari - Safari - WebkitAudioContext 因未知原因阻塞某些 mp3 文件
我仅在 Safari 中遇到某些 MP3 文件的问题。
这是一个代码笔: https ://codepen.io/parliament718/pen/ExjwWEp
在 chrome 中,两个按钮都可以播放两个文件。在 Safari 中,只有第一个按钮有效。
为什么是这样?当 safari 没有看到“.mp3”后缀时,它会窒息还是其他什么?
- 两个请求都返回“audio/mp3”Content-Type 标头。
- 这两个文件都可以下载为 mp3 并在任何音频播放器中播放
- 两个文件都可以通过safari地址栏直接播放
但只有其中一个文件使用 WebkitAudioContext 以编程方式播放。
失败代码:
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 上一直存在问题,但我认为他们现在应该已经修复了。
javascript - audioContext 振荡器在一秒钟后“卡住”并且不会停止
我想创建一个振荡器,当用户按下一个键(现在只是空格键)时启动和停止。但是如果按键时间过长,比如一秒钟 - 振荡器会卡住并且不会停止();
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。
javascript - Javascript webkitAudioContext 在 Safari 中没有播放
我正在尝试设置无法在 Safari 14.0.3 上运行的音频播放,但在 Chrome 88.0.4324.146 中运行良好。我有一个返回 AudioContext 或 webkitAudioContext 的函数。我遵循了这个答案:https ://stackoverflow.com/a/29373891/586006
audio - 记录从缓冲区处理的音频结果并将其放置在音频元素中
我有一个 JavaScript 文件,它获取一个音频文件,将其放在缓冲区中,然后允许处理缓冲区中的音频(通过更改速度和循环持续时间)。
我希望记录生成的音频,包括操作,并将其放置在一个<audio>
元素中。我试图通过在这里集成第一个答案中给出的代码来做到这一点:
与我的 JavaScript 文件。但是,当我按下播放按钮(也应该开始录制)时出现以下错误:
我相信我没有正确连接媒体记录器。有人可以帮忙吗?
谢谢,
我的html是:
我的 JavaScript 是:
原始 decodeAudioData 示例(我没有尝试记录)来自此处的 Mozilla 文档: https ://mdn.github.io/webaudio-examples/decode-audio-data/ by chrisdavidmills
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 文件?,在我找到的所有教程中都没有找到任何关于它的线索,谁能确认问题是格式我想使用的文件?