gpt4 book ai didi

javascript - 在连接到网络音频 api 的音频元素上设置 playbackRate

转载 作者:太空狗 更新时间:2023-10-29 16:37:29 29 4
gpt4 key购买 nike

我一直在尝试使用 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);

最佳答案

您必须在音频开始播放后设置播放速率。我发现使这项工作唯一可移植的方法是等待,直到您获得具有有效 currentTimetimeupdate 事件:

_audio.addEventListener('timeupdate', function(){
_if(!isNaN(audio.currentTime)) {
_audio.playbackRate = 0.6;
}
});

请注意,android 目前不支持播放速率,Chrome(桌面版)不支持低于 0.5 的播放速率。

关于javascript - 在连接到网络音频 api 的音频元素上设置 playbackRate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10239757/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com