我在网站上使用Web Audio API。 可以说我有这段代码:
var audioContext = new Audiocontext()
var audio = new Audio()
audio.src = "someaudiofile.wav"
var mediaSourceNode = audioContext.CreateMediaElementSource(audio)
mediaSourceNode.connect(audioContext.destination)
audio.playbackRate = 0.5
当我将播放速度设置为0.5时,音频会变得有点机械/失真。
我们还有一个基于Bass .Net库的基于.Net的旧音频播放器,该播放器通过根据新速度设置属性Bass_attrib_tempo_option_sequence_ms来解决此问题,但是我没有在Web Audio api中找到相应的属性。
有人对此有任何经验吗? 谢谢!
答案 0 :(得分:0)
您已经发现AudioBufferSourceNode只是对音频重新采样以使其变慢或加快。此行为由spec定义。
我对Bass .Net库的源代码不熟悉,但是通过查看它公开的选项,我猜想它在后台使用了SOLA algorithm的实现。幸运的是,还有一个JavaScript(soundtouchjs)实现,有望为您带来与上述.Net库类似的结果。