- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在构建一个音频程序,并在 .createMediaElementSource 方法上遇到了障碍。我能够解决该问题,但我不太清楚为什么该解决方案有效。
在我的 HTML 中,我创建了一个音频播放器:<audio id="myAudio><source src="music.mp3"></audio>
现在在我的 JS 中:
context = new AudioContext();
audio = document.getElementById('myAudio');
source = context.createMediaElementSource(audio);
audio.play();
不起作用。音频元素加载,但不播放歌曲,也没有音频。
但是!此 JS 代码有效:
context = ...; //same as above
audio...;
source = context.createMediaElementSource(audio[0]);
audio.play();
我所做的只是在音频中添加了一个 [0],然后程序突然又开始工作了。由于 .getElementById 不返回数组,因此我不知道为什么将音频引用为数组有效,但仅引用音频则不行。
最佳答案
晚了几个月,但以防万一其他人偶然发现这一点并想要答案:
the Web Audio API spec 中描述了此行为:
The createMediaElementSource method
Creates a MediaElementAudioSourceNode given an HTMLMediaElement. As a consequence of calling this method, audio playback from the HTMLMediaElement will be re-routed into the processing graph of the AudioContext.
强调我的。由于音频元素的输出现在路由到新创建的 MediaElementAudioSourceNode
实例(而不是原始目的地,通常是您的扬声器),因此您需要将该实例的输出路由回原始目的地:
var audio = document.getElementById('myAudio');
var ctx = new AudioContext();
var src = ctx.createMediaElementSource(audio);
src.connect(ctx.destination); // connect the output of the source to your speakers
audio.play();
添加 [0]
后它起作用的原因是 document.getElementById
不返回数组或定义键为“0”的元素。因此,您可能还编写了 ctx.createMediaElementSource(undefined)
,它不会从 #myAudio
元素重新路由音频。
关于javascript - 关于 createMediaElementSource() 的奇怪之处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28727587/
我正在使用Web Audio API分析使用从HTML createMediaElementSource()标记播放的音乐。现在,当我从js调用audio元素上的play()/pause()时,在发生
我已经为这个问题到处搜索,但找不到任何东西。我处于需要删除 source = createMediaElementSource 以便重新创建它的情况。我正在使用音频分析器,每次使用 ajax 加载指定
我的网站有一个简单的音频分析器: var analyser = document.getElementById('analyzer'); var beat = document.getElementB
我正在构建一个音频程序,并在 .createMediaElementSource 方法上遇到了障碍。我能够解决该问题,但我不太清楚为什么该解决方案有效。 在我的 HTML 中,我创建了一个音频播放器:
假设我不想拥有一个具有可变音频源作为音频标签的应用程序,如下所示: 根据播放的是哪一个,它应该被传递给 createMediaElementSource,然后声音将被发送到分析器,并用它完成各种事
每当我使用 XMLHttpRequest 播放音乐时,我必须等待至少 10 秒左右才能听到声音。 短声音会立即加载。 较大的声音(3 分钟)至少需要 10 秒才能播放。 哪些因素会影响加载时间?我的意
我正在尝试分析来自 url 的实时音频流。 我已经用麦克风输入测试了我的代码,它运行良好,但是当我改变时 createMediaStreamSource(micStream) 到 var stream
我很难找到有关 createMediaElementSource() 支持的信息。 mozilla MDN 显示支持从版本 6.0 开始,但 caniuse.com 声明 safari 显然不支持它。
我正在使用音频 API 在 iOS 6 中的网页中即时播放声音。我已经使用 Ajax 调用完成了此操作,就像建议的文档一样,效果很好。但是,我读到您可以使用 createMediaElementSou
我将 WebAudio API 与 new Audio() 对象用作源。以下是我正在做的事情的简化版本。然而,这不会在 firefox 25.0.1 中播放任何声音。 var context; if(
我正在尝试可视化来自网页元素的音频。该元素的来源是通过 sip.js 连接到 Asterisk 调用的 WebRTC 流。音频按预期工作。 但是,当我尝试使用网络音频 api 获取频率数据时,它返回一
createMediaElementSource test var audioContext, mediaElementSource, analyzer, anal
在 javascript 中,如何将音频上下文连接到从 blob 获取其数据的视频(视频使用 MediaStream 功能)。无论我做什么,音频上下文都会返回一个空缓冲区。有什么办法可以将两者联系起来
我正在尝试使用网络音频 Api 同时播放多个音轨(最终目标是创建一个基于地理定位的地理空间声音引擎) 我无法设法将两个或多个 html5 音频源正确连接到音频上下文。但在非常简单的用例中,它适用于命令
我无法在移动设备中使用 AudioContext.createMediaElementSource 使 AnalayserNode 工作。它不适用于 iOS 上的 Safari,也不适用于 Andro
你好,我有一个 javaScript 项目,它对我来说是新项目,我使用音频 Web API,代码允许我播放音乐并使用相同的按钮停止一切看起来不错,但控制台显示此消息错误,请任何人提供帮助我来解决这个问
我想在 iPhone 上进行现场声音分析。为此我使用webkitAudioContext 分析器。 var ctx = new (window.AudioContext || window.webki
我正在学习 webgl,我正在通过 this 教程从 mp3 文件中提取频率,以便它们可以被可视化。 我让它在给定一个 mp3 文件的地方工作,它播放文件。但是如果我尝试使用 createMediaE
是否可以从 加载音频文件? -元素来自 createMediaElementSource然后将音频数据加载到 AudioBufferSourceNode? 使用音频元素作为源 (MediaEleme
根据Mozilla's WebAudio API Rollout ,WebAudio 应该在 Firefox 25.0.1 中可用。然而,我无法让 createMediaElementSource 在
我是一名优秀的程序员,十分优秀!