我正在使用默认的audio
元素(不向用户提供控件),我正在通过jQuery进行交互(更改源代码,播放/暂停 - 通常)。现在我正试着淡入下一个音轨(第二个音频元素),提前5秒开始无缝转换。
根据我从media events和audio element attributes页面收集的内容,默认情况下不存在任何方法 - 最接近的事物似乎是onended
事件(它也会触发)显然已经很晚了)和loop
属性,它有同样的问题。
我将之前的尝试分成了一个答案,以便从未答复的队列中删除该问题,但最初包含在此处
任何有助于更有效地解决此问题的帮助,本身以我错过的方式或改进现有解决方案都非常有用!提前谢谢。
答案 0 :(得分:1)
此时,我看到的唯一解决方案是提前检查轨道的持续时间,然后设置以下超时:
$('audio').bind('loadedmetadata', function() {
duration = $(this).prop('duration') * 1000; // get duration in milliseconds
var fadetimer = setTimeout(function(){
// set up next audio file
}, duration - 5000); // execute timeout 5 seconds before end of playback
});
然而,这对我来说似乎效率极低。我也不确定这种方法是否会留下垃圾"在后台运行的超时或事件绑定,最终会使应用程序加起来并减慢速度。