2013-07-01 68 views
0

我正在研究一个脚本,该脚本会在某个<div>悬停时播放某个html5 <audio>元素。我使用jQuery来检测悬停,并通过动画音量淡入/淡出音频。html5 <audio>:火狐中的音量动画波涛汹涌

这里是我的代码:

<head> 
<!-- unrelated code removed --> 
<script type="text/javascript"> 
$(document).ready(function(){ 
    //unrelated code removed 
    $("#pog").mouseenter(function() { 
     $("#poga").get(0).volume=0; 
     $("#poga").get(0).play(); 
     $("#poga").animate({volume: 1}, 1000); 
    }); 
    $("#pog").mouseleave(function() { 
     $("#poga").animate({volume: 0}, 1000, function() { 
      $("#poga").get(0).pause(); 
     }); 
    }); 
}); 
</script> 
</head> 
<body> 
    <audio preload loop controls id="poga"> 
     <source src="audio/phantogram.mp3"></source> 
     <source src="audio/phantogram.ogg"></source> 
     Your browser isn't invited for super fun audio time. 
    </audio> 
    <div id="pog" class="band">Phantogram</div> 
</body> 

这里有一个的jsfiddle:http://jsfiddle.net/2eG6s/

的问题是,体积动画实在是波涛汹涌。它渐渐淡入淡出(我不知道确切的数量,但有些像100%,60%,20%)。这真的很奇怪,只发生在Firefox 21.0和22.0的Windows 7(Mac版本的Firefox 21.0和22.0正常工作。)

帮助!

回答

1

我认为这是前一段时间固定:https://bugzilla.mozilla.org/show_bug.cgi?id=487504

的问题是音频缓冲和老libsydneyaudio后端可以如何使用它。音量改变时缓冲区没有被清除,所以只有在当前缓冲音频播放结束后才会发出声音变化。

不知何故,根据https://bugzilla.mozilla.org/show_bug.cgi?id=852401已启动并运行的新cubeb后端应该已经修复了这个问题,但显然仍然存在问题,对我而言,这听起来像是一个缓冲问题。

我以前使用的解决方法是在volumechange事件中调用play()方法,这有助于减少波动,但现在似乎在执行此操作时没有区别。

所以,虽然我没有解决方案(如果有一个),我认为这个信息可能是有用的。

+0

感谢您的信息...我会拭目以待,如果有人已经找到了解决方案。愚蠢的错误! :P –

相关问题