我正在某些JS代码中使用以下实现方式来获取音频文件的持续时间:http://jsfiddle.net/derickbailey/s4P2v/(摘自https://lostechies.com/derickbailey/2013/09/23/getting-audio-file-information-with-htmls-file-api-and-audio-element/。)
即使使用createObjectURL
,我的实现也是相同的。它可以与MP3,AAC(.m4a)和FLAC兼容,但不适用于ALAC(也为.m4a)。
let length = 0;
let url = URL.createObjectURL(file);
let audio = new Audio(url);
audio.addEventListener('loadeddata', function () {
length = audio.duration;
}
有人知道我如何使用纯JavaScript获得 ALAC 文件的持续时间吗?我没有使用任何框架,对JS还是陌生的。
谢谢
答案 0 :(得分:2)
在 MDN 上的文章 Web audio codec guide 中,它仅在 ALAC 编解码器的浏览器支持部分显示了 Safari。
这是该文章中完整的浏览器兼容性表:
功能 | 铬 | 边缘 | 火狐 | Internet Explorer | 歌剧 | Safari |
---|---|---|---|---|---|---|
ALAC 支持 | 没有 | 没有 | 没有 | 没有 | 没有 | 是 |
答案 1 :(得分:0)
我认为只有Safari才能本地解码ALAC编解码器,并且可以正常工作。
但是在所有其他浏览器中,由于它们无法解码,因此无法为您提供正确的持续时间。
ffmpeg似乎能够对其进行解码并获得其持续时间,因此您可能希望从服务器端获取此信息,或者看看this project旨在将ffmpeg移植到js。
我从来没有亲自尝试过,但是它声称已经移植了mp4解码器,因此您可能会遇到麻烦。