如何获取mp3文件的大小和持续时间?

Ric*_*cky 7 javascript php jquery

我需要计算一个mp3文件的总长度.

目前我正在使用PHP类,我发现@ http://www.zedwood.com/article/php-calculate-duration-of-mp3.

如果同一服务器中的mp3文件,这是完美的工作.

但如果我有来自其他网站的网址,则会抛出错误.请帮我.

是否有任何JavaScript J-Query函数来获取mp3文件的长度

<?php include("mp3.class.php");
$f = 'http://cdn.enjoypur.vc/upload_file/5570/5738/5739/7924/Blue%20Eyes%20-%20Yo%20Yo%20Honey%20Singh%20(PagalWorld.com)%20-192Kbps%20.mp3';
$m = new mp3file($f);
$a = $m->get_metadata();

if ($a['Encoding']=='Unknown')
    echo "?";
else if ($a['Encoding']=='VBR')
    print_r($a);
else if ($a['Encoding']=='CBR')
    print_r($a);
unset($a);
?>
Run Code Online (Sandbox Code Playgroud)

Ily*_*ich 6

以下是使用 Web Audio API 获取 mp3 持续时间的方法:

const mp3file = 'https://raw.githubusercontent.com/prof3ssorSt3v3/media-sample-files/master/doorbell.mp3'
const audioContext = new (window.AudioContext || window.webkitAudioContext)()
const request = new XMLHttpRequest()
request.open('GET', mp3file, true)
request.responseType = 'arraybuffer'
request.onload = function() {
    audioContext.decodeAudioData(request.response,
        function(buffer) {
            let duration = buffer.duration
            console.log(duration)
            document.write(duration)
        }
    )
}
request.send()
Run Code Online (Sandbox Code Playgroud)


use*_*495 3

实际上有一个库可以在客户端运行,尝试获取足够的 MP3 来读取 ID3 标签:

http://github.com/aadsm/JavaScript-ID3-Reader

或者

尝试

HTML 文件 API。

http://lostechies.com/derickbailey/2013/09/23/getting-audio-file-information-with-htmls-file-api-and-audio-element/

  • MP3 文件的持续时间通常存储在 ID3 标签中,并且必须通过扫描所有音频帧来计算。 (3认同)