【问题标题】:Appending data to an already existing AudioBuffer object将数据附加到已经存在的 AudioBuffer 对象
【发布时间】:2014-09-26 21:01:19
【问题描述】:

我希望将数据附加到已经现有的AudioBuffer 正在使用网络音频播放。


收到要播放的音频数据后,我创建一个AudioBuffer,然后将数据分配给 ArrayBuffer 响应。

    var audioBuffer = context.createBuffer(1, audioToPlay.length, 16000);
    audioBuffer.getChannelData(0).set(audioToPlay);

然后我创建一个buffer source node 并将音频缓冲区连接到网络音频上下文。

    var source = context.createBufferSource();
    source.buffer = audioBuffer;
    source.connect(context.destination);
    source.start(0);

现在,我想做的是将更多数据(另一个 ArrayBuffer)附加到 当前播放 缓冲区,同时 避免 必须使用 onended 回调创建一个新的缓冲区..

有没有办法做到这一点?据我所知,这似乎不受支持。

【问题讨论】:

标签: javascript audio web-audio-api


【解决方案1】:

你不能这样做。一旦通过 start() 将播放缓冲区移交给音频线程,您就无法对其进行修改。

但是,话虽如此,您也绝对不应该使用 onended。您应该做的是跟踪安排的最后一个音频缓冲区和它开始的当前时间,并在时间 = lastCurrentTimeStart+lastBufferDuration 创建和播放一个新的音频缓冲区。您应该能够获得流畅、不间断的播放。

【讨论】:

  • 感谢您的验证。所以听起来我还必须跟踪播放器的状态? (即,如果用户暂停,如果播放速率不同等)
猜你喜欢
  • 2013-04-27
  • 2012-09-12
  • 2019-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-12
相关资源
最近更新 更多