如何使用网络音频API反向播放音频?
答
你可以做这样的事情:
var context = new AudioContext(),
request = new XMLHttpRequest();
request.open('GET', 'path/to/audio.mp3', true);
request.responseType = 'arraybuffer';
request.addEventListener('load', function(){
context.decodeAudioData(request.response, function(buffer){
var source = context.createBufferSource();
Array.prototype.reverse.call(buffer.getChannelData(0));
Array.prototype.reverse.call(buffer.getChannelData(1));
source.buffer = buffer;
});
});
这是一个超级简单的例子 - 但有一点基本上是可以抢到Float32Array
实例在AudioBuffer每个通道扭转它们。
答
您可以使用html5的<audio>
元素并将playbackRate
属性设置为负值。
在Javascript中,你可以做以下
var song = document.getElementsByTagName('audio')[0];
song.playbackRate = -1;
答
,如果你有一个AudioBufferSourceNode元素:
CNC中
的Webkit不具备该功能。
答
playbackRate = -1.0;
现在在Safari(9.1.2)中工作!
这是工作,谢谢。实际上是在寻找更像是将playbackRate设置为负数的东西,以便我可以轻松地从剪辑中的同一点向前和向后播放某些内容,但由于您使用有效的(和正在工作的!)回答回答了问题,因此我会接受it! – lakenen 2012-06-13 00:30:47
是的,我想你可能是在寻找一些不太冒昧的东西,但这是我能想出的唯一方法。对于它的价值,可能还有可能围绕这种方法构建一些代码你想要什么 - 但我实际上并没有尝试立即反转缓冲区,所以我不能肯定地说。无论哪种方式,很高兴看到其他开发者使用Web音频播放API。希望一些体面的文档将在未来几个月内开始出现。 – 2012-06-13 03:20:59