【发布时间】:2012-04-20 03:15:11
【问题描述】:
我一直在尝试使用 createMediaElementSource 将音频元素连接到网络音频 api 并让它工作,但我需要做的一件事是更改音频标签的播放速率,但我无法让它工作.
如果您尝试运行下面的代码,您会发现它可以正常工作,直到您取消注释我们设置播放速率的行。当这条线在音频中时,音频会被静音。
我知道我可以使用 source.playbackRate.value 在 AudioBufferSourceNode 上设置播放速率,但这不是我想做的,我需要在连接到网络音频时设置音频元素的播放速率api 使用 createMediaElementSource 所以我没有任何 AudioBufferSourceNode。
有人做到了吗?
var _source,
_audio,
_context,
_gainNode;
_context = new webkitAudioContext();
function play(url) {
if (_audio) {
_audio.pause();
}
_audio = new Audio(url);
//_audio.playbackRate = 0.6;
setTimeout(function() {
if (!_gainNode) {
_gainNode = _context.createGainNode();
_gainNode.gain.value = 0.1;
_gainNode.connect(_context.destination);
}
_source = _context.createMediaElementSource(_audio);
_source.connect(_gainNode);
_audio.play();
}, 0);
}
play("http://geo-samples.beatport.com/items/volumes/volume2/items/3000000/200000/40000/9000/400/60/3249465.LOFI.mp3");
setTimeout(function () {
_audio.pause();
}, 4000);
【问题讨论】:
-
奇怪,这在 Chrome 中似乎对我有用。 jsfiddle.net/9gLKM -- Chrome:版本 22.0.1229.94 m
-
这在 Safari 中仍然是一个问题(至少 v13.0.0,但可能更早); Chrome/Firefox 工作正常。连接Web Audio API 节点后,无法再在audio tag 上设置音量和播放速率。对于音量,连接一个GainNode,正如你已经提到的,对于playbackRate,连接一个AudioBufferSourceNode。
标签: javascript html html5-audio web-audio-api