繁体   English   中英

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

[英]How to get the size and duration of an mp3 file?

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

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

如果 mp3 文件在同一服务器中,这将完美运行。

但是如果我有来自其他站点的 URL,它会抛出错误。 请帮我。

是否有任何 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);
?>

以下是使用 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()

实际上有一个可以在客户端运行的库,试图获取足够的 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/

也许最简单的解决方案是使用音频 html 元素来获取持续时间并直接从 FileReader 对象返回的文件中获取大小。 这种方法的代码示例如下所示。

一个不利的一面是目前为止提出的所有其他解决方案是音频标签的 durationchanged 事件在加载大文件(例如 > 200MB 文件)时触发所需的 10-20 秒延迟。 显然,有一种更快的方法可以获取此信息,因为当文件作为 file:///.... URL 输入浏览器时,会立即显示持续时间。

function checkMp3SizeAndDuration()
{    
    var files = document.getElementById('upload-file').files;
    var file = files[0];
    if (file.size > MAX_FILE_SIZE) {
        return;
    }

    var reader = new FileReader();
    var audio = document.createElement('audio');
    reader.onload = function (e) {
        audio.src = e.target.result
        audio.addEventListener('durationchange', function() {
            console.log("durationchange: " + audio.duration);
        },false);

        audio.addEventListener('onerror', function() {
            alert("Cannot get duration of this file.");
        }, false);
    };
    reader.readAsDataURL(file);
});

由于无法找到快速且不需要一堆额外样板代码的东西,我调整了现有的服务器端 javascript 实用程序以直接在浏览器中运行。 演示代码位于: https : //github.com/eric-gilbertson/fast-mp3-duration

使用也适用于 VBR 文件的getID3() PHP 库。

此链接可帮助您sourceforge.net

它在开发中非常活跃。

一个非常有名的SPI,可以使用MP3 SPI ,代码也很简单

File file = new File("filename.mp3");
AudioFileFormat baseFileFormat = AudioSystem.getAudioFileFormat(file);
Map properties = baseFileFormat.properties();
Long duration = (Long) properties.get("duration");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM