我尝试使用Web Audio API进行简单播放:
<html>
<head>
<title>Test</title>
</head>
<body>
<audio id="player" src="audio/song.mp3"></audio>
<script>
try {
audioContext = new (window.AudioContext || window.webkitAudioContext)();
}
catch (e) {
alert('Web Audio API is not supported in this browser');
}
var audioElement = document.getElementById("player");
audioElement.addEventListener('canplay', function() {
var source = audioContext.createMediaElementSource(audioElement);
var gainNode = audioContext.createGain();
gainNode.gain.value = 0.3;
source.connect(gainNode);
gainNode.connect(audioContext.destination);
audioElement.play();
});
</script>
</body>
</html>
这显然可以在Chrome中使用,但不是在Firefox中。在Firefox中发生的事情是,音量逐渐增加到某些极端水平,其中剪辑开始发生(wtf?)。如果这里没有增益节点,它将简单地从可能的最大音量开始播放。
我很困惑为什么这样一个基本任务会在Firefox中引起如此荒谬的问题。由于这可能是我的系统或最新的Firefox的问题,如果有人测试这个,我会很高兴。 我使用的是Firefox 34.0.5。
答案 0 :(得分:1)
&#34; canplay&#34;可以多次开除。这意味着您在Web Audio图形中多次提供HTMLMediaElement,并且由于PCM完全相关,因此会发生剪切。 iirc,Chrome有一个错误,只有第一个HTMLMediaElement通过图表提供(尽管我可能错了),这可以解释这一点。