首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AudioContext没有暂停属性吗?

AudioContext没有暂停属性吗?
EN

Stack Overflow用户
提问于 2019-08-21 08:04:52
回答 1查看 1.1K关注 0票数 2

我以前使用过javascript Audio(),但是现在我需要在音频中添加一些混响效果,并且我正在使用使用AudioContext api的reverb.js。我有“开始”属性可用,但没有“暂停”属性?我如何暂停或停止音频??

这是我的代码:

代码语言:javascript
运行
复制
<script src="http://reverbjs.org/reverb.js"></script>
<script>
// 1) Setup your audio context (once) and extend with Reverb.js.
var audioContext = new (window.AudioContext || window.webkitAudioContext)();
reverbjs.extend(audioContext);

// 2) Load the impulse response; upon load, connect it to the audio output.
var reverbUrl = "http://reverbjs.org/Library/SaintLawrenceChurchMolenbeekWersbeekBelgium.m4a";
var reverbNode = audioContext.createReverbFromUrl(reverbUrl, function() {
  reverbNode.connect(audioContext.destination);
});

// 3) Load a test sound; upon load, connect it to the reverb node.
var sourceUrl = "./sample.mp3";
var sourceNode = audioContext.createSourceFromUrl(sourceUrl, function() {
  sourceNode.connect(reverbNode);
});
</script>
<a href="javascript:sourceNode.start()">Play</a>
<a href="javascript:sourceNode.stop()">Stop</a>

另外,我尝试使用stop(),它可以工作,但是当我单击stop后触发start()时,start()就不能工作了。你能帮我解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-21 08:38:35

您可以使用suspend()resume()方法的AudioContext暂停和恢复音频:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/suspend

使用播放/暂停/恢复的单个按钮实现此功能的一种方法是添加一个控制player状态的函数。例如:

代码语言:javascript
运行
复制
let started = false;
function pauseOrResume() {
    if (!started) {
        sourceNode.start();
        started = true;
        document.getElementById("pauseButton").innerHTML = 'Pause';
    } else if (audioContext.state === 'running') {
        audioContext.suspend().then(function () {
            document.getElementById("pauseButton").innerHTML = 'Resume';
        });
    } else if (audioContext.state === 'suspended') {
        audioContext.resume().then(function () {
            document.getElementById("pauseButton").innerHTML = 'Pause';
        });
    }
}

并将现有的“播放”按钮替换为:

代码语言:javascript
运行
复制
<a id="pauseButton" href="javascript:pauseOrResume()">Play</a>

这样做的目的如下:

  • 如果音频尚未启动,链接将显示"Play“。
  • 如果用户点击“播放”,音频将开始播放,链接的文本将更改为“暂停”。
  • 如果用户在播放音频时单击“暂停”,它将被暂停,链接的文本将更改为“恢复”。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57587071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档