Giter VIP home page Giter VIP logo

Comments (5)

Borewit avatar Borewit commented on June 28, 2024 1

That could very well be the reason.

On a good quality (using a recent Lame encoder) MP3 encoded file, it will do the duration calculation on the VBR/Xing/Info header. That header specifies the number of frames.

I just removed a silly rounding from that calculation. It is pretty accurate only thing what is missing is subtracting the "empty" space in the very last frame.

from music-metadata.

Borewit avatar Borewit commented on June 28, 2024

It should already work according your suggestion.

Taken from MpegParser.ts:421

if (this.frameCount === 3) {
        // the stream is CBR if the first 3 frame bitrates are the same
        if (this.areAllSame(this.bitrates)) {
          // subtract non audio stream data from duration calculation
          // The 128 bytes is based on a very unsafe assumtion that a ID3v1 will follow (ToDo: improve)
          const size = this.tokenizer.fileSize - (this.headerSize === 0 ? 128 : this.headerSize);
          this.format.duration = (size * 8) / header.bitrate;
          this.format.codecProfile = "CBR";
          return; // Done
        } else if (!this.readDuration) {
          return; // Done
        }
      }

I will ensure that clear test cases will demonstrate this, that does not seem to be the case.

from music-metadata.

mycoboco avatar mycoboco commented on June 28, 2024

Oh, I thought that approximation for CBR got removed because music-metadata took much more time to scan 4000+ mp3 files than its old version did; in fact, I couldn't see the scanning finish due to the "out-of-memory" error. Probably, this issue is related to #34. I'll check again after #34 resolved.

from music-metadata.

mycoboco avatar mycoboco commented on June 28, 2024

The test result with the latest release, 0.8.2 is very impressive!

To fully scan 4500+ files,

  • music-metadata + mp3-duration for fallback takes only 7mins
  • while musicmetadata + mp3-duration for fallback took 20mins.

I think I can get rid of mp3-duration from canary even if music-metadata still fails to calculate playtime for 6 files; I'll open this as a separate issue soon.

Thanks for the outstanding work!

from music-metadata.

Borewit avatar Borewit commented on June 28, 2024

@mycoboco, thanks for your reply and promising the benchmark.

Feel free to open an issue for the remaining 6 files or re-open this one.

from music-metadata.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.