【发布时间】:2015-12-15 10:21:08
【问题描述】:
我注意到 Safari 在获取音频文件的持续时间方面有点难以预测。我编写了以下代码来获取和存储 MP3 文件的持续时间:
// Get duration and store it in the DB
let audio = document.createElement('audio');
audio.addEventListener('loadedmetadata', function ({target}) {
audio.pause();
audio.currentTime = 0;
audio.volume = 1;
Meteor.call('util/setTrackDuration', track._id, target.duration);
});
audio.src = track.getTrackUrl();
// This stuff is because of Safari.. psh!
audio.volume = 0;
audio.play();
您可以看到我必须添加一些代码,因为在 Safari 中仅将 audio.src 设置为 URL 并不总是足够的,尽管它在 Firefox 和 Chrome 中运行良好并且每次都会触发 loadedmetadata 事件。在 Safari 中,由于某种原因,它只工作了大约一半的时间。
audio.src 设置为 URL 后,是否有原因无法在 Safari 中可靠地触发 loadedmetadata?不得不调用audio.play() 只是为了获取音频文件的持续时间(我使用的是 Amazon S3)真的很浪费带宽。这是一个错误吗?还有更好的方法吗?
【问题讨论】:
标签: javascript safari html5-audio