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

     2023-02-25     257

关键词:

【中文标题】JavaScript 音频持续时间不适用于 ALAC 文件(HTML 音频持续时间属性)【英文标题】:JavaScript audio duration not working for ALAC files (HTML audio duration property) 【发布时间】:2019-01-04 01:07:19 【问题描述】:

我在一些 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 新手。

谢谢

【问题讨论】:

您使用的是哪个浏览器?它支持 ALAC 编解码器吗? Firefox 没有,Chrome 也没有,Safari 有,而且运行良好。 @Kaiido 我在 Windows 的 Chrome 上。应该是这个原因。 ALAC 程序中的所有其他内容都适用,除了获取长度之外,但由于长度在 JS 中是异步的(我认为?)我在获取长度之后有其余的代码。难怪,这也解释了我目前正在调试的一些问题,因为所有内容(除了长度)都适用于 ALAC 并删除了此代码。由于没有浏览器支持,您有什么想法我怎么可能在没有此实现的情况下获得 ALAC 文件的长度? 【参考方案1】:

在 MDN 上的文章 Web audio codec guide 中,它仅在 ALAC 编解码器的浏览器支持部分显示了 Safari。

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

Feature Chrome Edge Firefox Internet Explorer Opera Safari
ALAC support No No No No No Yes

【讨论】:

【参考方案2】:

我认为只有 Safari 能够对 ALAC 编解码器进行本地解码,而且它可以正常工作。

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

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

【讨论】:

css 过渡持续时间不适用于矢量效果:非缩放笔画

】css过渡持续时间不适用于矢量效果:非缩放笔画【英文标题】:csstransitiondurationdoesn\'tworkwithvector-effect:non-scaling-stroke【发布时间】:2018-08-1209:07:41【问题描述】:我有两个具有不同视口的svgs。我使用vector-effect:non-scaling-stroke使... 查看详情

AVAssetWritter 不适用于音频

】AVAssetWritter不适用于音频【英文标题】:AVAssetWritterdoesnotworkwithaudio【发布时间】:2011-03-0422:41:23【问题描述】:我正在尝试让音频与iOS应用程序的视频一起使用。视频很好。文件中没有录制任何音频(我的iPhone扬声器工作正常... 查看详情

音频播放和录制不适用于 iOS 10

】音频播放和录制不适用于iOS10【英文标题】:AudioplayingandrecordingisnotworkingwithiOS10【发布时间】:2016-11-1112:34:30【问题描述】:我无法在iOS10中播放任何音频文件,即使默认键盘点击声音也无法播放。[[AVAudioSessionsharedInstance]setCate... 查看详情

AVMutableAudioMixInputParameters:setVolume() 不适用于 iOS 9 的音频文件

】AVMutableAudioMixInputParameters:setVolume()不适用于iOS9的音频文件【英文标题】:AVMutableAudioMixInputParameters:setVolume()doesn\'tworkwithaudiofileiOS9【发布时间】:2015-10-2613:41:27【问题描述】:我尝试将视频记录与设备iPod库中的音频文件混合... 查看详情

SoX 不适用于 Opus 音频文件

】SoX不适用于Opus音频文件【英文标题】:SoXdoesn\'tworkwithOpusAudiofiles【发布时间】:2014-04-1420:48:25【问题描述】:我正在使用WebRTC从网页录制输入麦克风,并通过SoX进行处理。问题是,Firefox录音是OpusAudio格式(根据VLC媒体信息)... 查看详情

ng-bind-html 元素不适用于音频标签

】ng-bind-html元素不适用于音频标签【英文标题】:ng-bind-htmlelementnotworkingwithaudiotag【发布时间】:2014-09-1911:37:02【问题描述】:我在result.questionText范围内有一个变量,它包含<i>Howmanytimesarethehandsofaclock</i>atrigh... 查看详情

复制不适用于包含音频/视频文件的 CouchDB 数据库

】复制不适用于包含音频/视频文件的CouchDB数据库【英文标题】:ReplicationnotworkingforCouchDBdatabasecontainingaudio/videofiles【发布时间】:2017-06-0216:34:59【问题描述】:我们使用CouchDB2.0来存储文件(.txt、.doc、.xls、.pdf、.mp3、.mp4、.zip)... 查看详情

Javascript 不适用于 Django 模板继承

】Javascript不适用于Django模板继承【英文标题】:Javascriptdoesen\'tworkwithDjangotemplateinheritance【发布时间】:2012-04-2601:59:25【问题描述】:我在使Javascript与Django模板继承一起工作时遇到了一些问题。根据Opera,所有javascript及其CSS文件... 查看详情

利用浏览器缓存 |修改.htaccess 文件| - 不适用于 javascript 文件

】利用浏览器缓存|修改.htaccess文件|-不适用于javascript文件【英文标题】:Leveragebrowsercaching|modifying.htaccessfile|-notworkingforjavascriptfiles【发布时间】:2012-05-1716:04:46【问题描述】:我正在尝试通过指定资源的过期时间来修改我的.htac... 查看详情

html 音频不适用于 macbook 和 ios,但适用于 imac - 很奇怪

】html音频不适用于macbook和ios,但适用于imac-很奇怪【英文标题】:htmlaudionotworkingonmacbookandios,butworksonimac--weird【发布时间】:2014-08-2206:14:40【问题描述】:在这个网站上工作:http://dev.bobpassaro.com/david/有一些html音频(使用mp3)和... 查看详情

javascript querySelector不适用于':not()'选项[重复]

】javascriptquerySelector不适用于\\\':not()\\\'选项[重复]【英文标题】:javascriptquerySelectornotworkingwithwith\':not()\'option[duplicate]javascriptquerySelector不适用于\':not()\'选项[重复]【发布时间】:2017-05-2412:11:35【问题描述】:您好,这... 查看详情

javascript返回错误;不适用于每个功能

】javascript返回错误;不适用于每个功能【英文标题】:javascriptreturnfalse;isnotworkingoneachfunction【发布时间】:2015-04-1720:18:25【问题描述】:我在下面提到了我的代码,我有返回flase的问题;在每个函数的javascript中$(".current_patient_med... 查看详情

关联数组不适用于 eval() JavaScript

】关联数组不适用于eval()JavaScript【英文标题】:AssociativeArraydoesnotworkwitheval()JavaScript【发布时间】:2011-10-0723:14:39【问题描述】:我正在生成一个表示为Python字典的数据,该字典使用simplejson通过这种格式的url转储。"2":"London","3":... 查看详情

JavaScript 不适用于 Chrome 和 Xampp!

】JavaScript不适用于Chrome和Xampp!【英文标题】:JavaScriptnotworkingwithChrome&Xampp!【发布时间】:2011-03-0112:56:21【问题描述】:我已经尝试了几个小时来弄清楚为什么JavaScript不能工作。代码有效,但无论如何都在这里。<scripttype=... 查看详情

WKWebView 不适用于 JavaScript 类

】WKWebView不适用于JavaScript类【英文标题】:WKWebViewisnotworkingwithJavaScriptClasses【发布时间】:2018-12-0522:55:08【问题描述】:我正在使用WKWebView开发一个项目,并且我从本地项目加载了html。JavaScript按预期工作,但是当我尝试使用一... 查看详情

MP3/wav 音频文件的持续时间

】MP3/wav音频文件的持续时间【英文标题】:DurationofanMP3/wavaudiofile【发布时间】:2009-06-3018:00:48【问题描述】:如何在Delphi中获取(以分钟和秒为单位)?【问题讨论】:您使用什么API来播放MP3文件?TMediaPlayer?不,我不是在播... 查看详情

Ajax 不适用于 javascript。我应该做些啥?

】Ajax不适用于javascript。我应该做些啥?【英文标题】:Ajaxnotworkingwithjavascript.WhatamIsupposedtodo?Ajax不适用于javascript。我应该做些什么?【发布时间】:2012-05-1205:15:37【问题描述】:这是我调用Ajax请求的代码,而不是一个简单的输... 查看详情

AC3 音频不适用于带有 Perian 的 Mountain Lion

】AC3音频不适用于带有Perian的MountainLion【英文标题】:AC3audionotworkingonMountainLionwithPerian【发布时间】:2012-08-1422:54:44【问题描述】:我正在开发一个视频应用程序,它需要打开使用不同编解码器编码的视频文件。在Lion上一切正... 查看详情