播放AudioBufferSourceNode两次
Play an AudioBufferSourceNode twice?
我应该能够使用同一个AudioBufferSourceNode
多次播放一个声音吗?出于某种原因,第二次调用noteGrainOn
不会播放音频,即使中间有noteOff
。
此代码只播放一次声音:
var node = audioContext.createBufferSource()
node.buffer = audioBuffer
node.connect(audioContext.destination)
var now = audioContext.currentTime
node.noteGrainOn(now, 0, 2)
node.noteOff(now + 2)
node.noteGrainOn(now + 3, 0, 2)
node.noteOff(now + 5)
一旦回放了源节点,就不能重用它。您需要创建另一个具有相同缓冲区的AudioBufferSourceNode
。查看Web音频常见问题解答了解更多信息(请参阅noteOn()问题)。
我有一些技巧可以轻松切换播放/暂停:)您可以直接将音频映射到现有的音频标签,并使用上的控件
<audio id="sound" src="./test.mp3" controls="controls"></audio>
var audioElement = document.getElementById('sound');
source = audioContext.createMediaElementSource(audioElement);
/* ... */
audioElement.pause();
我在这里运行的示例:http://www.b2bweb.fr/bonus/Braincer/我目前使用Chrome版本18.0.xxxx
其他参考文献:
- 使用Chrome Canary的MediaElementAudioSourceNode的工作示例
- http://updates.html5rocks.com/tag/webaudio
相关文章:
- Meteor Router数据函数被调用两次
- 从MySQL数据库中获取输入数据需要两次页面刷新
- Module.start()已激发两次
- Jquery点击事件必须点击两次
- Append元素在运行两次函数后不显示
- 防止双击执行两次jQuery post请求
- 我必须点击两次才能激活任何按钮操作(离子/角度)
- 单击jQuery会激发两次
- 如何避免在树上走两次
- button.单击两次删除附加操作后不工作
- 由于$compile,Javascript(Angular)嵌套指令加载了两次
- 单击元素两次后执行操作
- AngularJs正在阻止链接被点击两次
- 为什么我的路线处理程序会触发两次
- 为什么Highchart在我的rails应用程序中加载了两次?(未捕获的Highcharts错误#16)
- 在列表中至少使用两次随机生成的nr
- 检查某个键是否按下两次
- 一次点击,两次'单击'事件已启动
- 我的所有代码在使用Webpack编译时都会运行两次
- Backbone.js ListenToOnce被调用两次