在Chrome上获得音频持续时间为Android
Get audio duration on Chrome for Android
我正在获取文件的音频/视频持续时间,而不将其附加到屏幕上。"使用相同的代码",当我试图获得双方的视频持续时间,它按预期工作。但是当使用音频文件时,它说持续时间在Android上是0,但它在台式电脑上工作。
// Only working on Desktop
var audio = new Audio(url);
// Hide audio player
// player.appendChild(audio);
audio.addEventListener('loadedmetadata', function() {
alert(audio.duration);
});
下面的代码是工作的:
// Working on Desktop and Android
var video = document.createElement('video');
video.src = url;
// Hide video
// player.appendChild(video);
video.addEventListener('loadedmetadata', function() {
alert(video.duration);
});
你可以尝试一种不同的方法,但如果持续时间不适用于你的设备(在我看来这是一个bug),那么它很可能也不适用;不过值得一试:
audio.seekable.end(audio.seekable.length-1);
或者
audio.buffered.end(audio.buffered.length-1);
尽管后者依赖于所加载的内容,但在这种情况下可能没有帮助
EDIT:使用durationchange事件要容易得多。首先输出0,但是一旦文件被加载(我猜这就是 loaddmetadata 失败的地方),更新的和真实的持续时间将被输出。
audio.addEventListener('durationchange', function(e) {
console.log(e.target.duration); //FIRST 0, THEN REAL DURATION
});
老方法(以上方法更快)
看起来这个"bug"(如果这真的是一个bug的话)仍然存在。Chrome(40)为Android仍然输出0作为音频文件的持续时间。在网上搜索没有找到解决方案,但我发现这个漏洞也出现在iOS上。我想我应该把我的修复在这里给你们。
<我>音频。Duration 输出0,logging audio输出对象,您可以看到持续时间就显示在那里。所有这些都发生在 loaddmetadata 事件中。我>
audio.addEventListener('loadedmetadata', function(e) {
console.log(e.target.duration); //0
});
如果您记录音频。虽然timeupdate事件中的持续时间,但实际的持续时间正在输出。如果要只输出一次,可以这样做:
var fix = true;
audio.addEventListener('timeupdate', function(e) {
if(fix === true) {
console.log(e.target.duration); //REAL DURATION
fix = false;
}
console.log(e.target.currentTime); //UPDATED TIME POSITION
});
我不知道为什么会发生这一切。但让我们高兴的是,没什么大不了的。
相关文章:
- 在jQuery中,短距离长持续时间的精细字体大小动画
- 创建一个倒计时计时器脚本,该脚本计算声音文件的持续时间,而不是特定的日期
- 输入视频文件时获取视频持续时间
- 无填充的滚动魔术持续时间
- 我需要在每5秒内调用一个函数,并重置持续时间
- jQuery动画的持续时间就像一个延迟
- 如何在特定时间重新加载page.php,例如:07:45.非持续时间,例如:每5秒
- 如何在dhtmlxgantt中显示灯箱中的开始日期、结束日期和持续时间
- Javascript - 具有音高和持续时间控制的文本到语音
- setTimeout() 函数在超时持续时间之前调用
- HTML 5 音频 :是否有在更改缓冲持续时间时触发的事件
- 如何获取所有旅行模式的距离和持续时间,例如驾驶,公交,骑自行车,在我的页面中步行以及将其存储在数据库中
- 当用户在文本框中输入日期时,如何计算一年的持续时间
- 如何使用 Javascript 将持续时间字符串解析为秒
- 速度.js动画两个属性时持续时间不同
- d3 动画中的持续时间
- Webkit-css随持续时间变化
- JS:设置src更改的动画持续时间
- 幻灯片放映中的第一张幻灯片超时(持续时间几乎是其他幻灯片的两倍)
- 在Chrome上获得音频持续时间为Android