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

前端 未结 6 884
夕颜
夕颜 2021-01-12 07:13

I need to calculate the total length of an mp3 file.

Currently I am using a PHP class which I found @ http://www.zedwood.com/article/php-calculate-duration-of-mp3.

相关标签:
6条回答
  • 2021-01-12 07:19

    Perhaps the simplest solution is to use the audio html element to get the time duration and to obtain the size directly from the file returned by the FileReader object. A code example of this approach is shown below.

    One down side of this and all the other solutions presented so far is the 10-20 second delay it takes for the audio tag's durationchanged event to fire when loading large, eg > 200MB files. Clearly there is a faster way to get this info because the duration is shown immediately when the file is entered into the browser as a 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);
    });
    
    0 讨论(0)
  • 2021-01-12 07:19

    A Famous and Very SPI that you can use MP3 SPI and the code is also very simple

    File file = new File("filename.mp3");
    AudioFileFormat baseFileFormat = AudioSystem.getAudioFileFormat(file);
    Map properties = baseFileFormat.properties();
    Long duration = (Long) properties.get("duration");
    
    0 讨论(0)
  • 2021-01-12 07:21

    Use getID3() PHP library that works for VBR files as well.

    This link help you sourceforge.net.

    It's very much active in development.

    0 讨论(0)
  • 2021-01-12 07:29

    Having not been able to find something that was fast and didn't require a bunch of extra boilerplate code, I tweaked an existing server side javascript utility to run directly in the browser. Demo code is available at: https://github.com/eric-gilbertson/fast-mp3-duration

    0 讨论(0)
  • 2021-01-12 07:30

    There is actually a library that can run at client-side, attempting to fetch just enough of the MP3 to read the ID3 tags:

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

    or

    Try

    HTML File API.

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

    0 讨论(0)
  • 2021-01-12 07:40

    Here's how you can get mp3 duration using Web Audio API:

    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()

    0 讨论(0)
提交回复
热议问题