JavaScript音频持续时间不适用于ALAC文件(HTML音频持续时间属性)

JavaScript音频持续时间不适用于ALAC文件(HTML音频持续时间属性),javascript,audio,html5-audio,Javascript,Audio,Html5 Audio,我在一些JS代码中使用以下实现来获取加载的音频文件的持续时间:(取自。) 我的实现是相同的,即使使用createObjectURL。它适用于MP3、AAC(.m4a)和FLAC,但不适用于ALAC(也适用于.m4a) 有人知道如何使用纯JavaScript获取ALAC文件的持续时间吗?我没有使用任何框架,而且对JS是新手 谢谢我认为只有Safari能够对ALAC编解码器进行本机解码,在那里,它可以工作 但在所有其他浏览器中,由于它们无法解码,因此无法为您提供正确的持续时间 似乎能够对其进行解码并

我在一些JS代码中使用以下实现来获取加载的音频文件的持续时间:(取自。)

我的实现是相同的,即使使用
createObjectURL
。它适用于MP3、AAC(.m4a)和FLAC,但不适用于ALAC(也适用于.m4a)

有人知道如何使用纯JavaScript获取ALAC文件的持续时间吗?我没有使用任何框架,而且对JS是新手


谢谢

我认为只有Safari能够对ALAC编解码器进行本机解码,在那里,它可以工作

但在所有其他浏览器中,由于它们无法解码,因此无法为您提供正确的持续时间

似乎能够对其进行解码并获得其持续时间,因此您可能希望从服务器端获取此信息,或者查看将ffmpeg移植到js的目的。
我自己从来没有尝试过,但它声称已经移植了mp4解码器,因此您可能会在这方面有一些运气。

在关于MDN的文章中,它仅在ALAC编解码器的浏览器支持部分显示了Safari

以下是该文章中的完整浏览器兼容性表:

特征 铬 边缘 火狐 Internet Explorer 歌剧院 游猎 ALAC支持 不 不 不 不 不 对
您使用的是哪种浏览器?它支持ALAC编解码器吗?Firefox没有,Chrome也没有,Safari也有,在那里它工作得很好。@Kaido我在Windows中使用Chrome。这一定是原因。在ALAC程序中,除了获取长度之外,其他一切都可以正常工作,但是由于长度在JS中是异步的(我想?),所以我会在获取长度之后使用其余的代码。难怪,这也解释了我目前正在调试的一些问题,因为在删除这些代码的情况下,ALAC的所有功能(除了长度)都可以正常工作。由于没有浏览器支持,如果没有此实现,您是否知道如何获取ALAC文件的长度?
let length = 0;
let url = URL.createObjectURL(file);
let audio = new Audio(url);
audio.addEventListener('loadeddata', function () {
    length = audio.duration;
}