Comments (5)
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.
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.
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.
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.
@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)
- any plan or recommend of video metadata browser HOT 1
- ESM, CJS, and everything HOT 3
- ambiguous indirect export: parseFile HOT 1
- After importing the music-metadata, the terminal prompted two errors. I am a novice and I am currently confused. HOT 1
- [email protected] typescript definition is lacking HOT 1
- React Native Compatability HOT 1
- does not provide an export named 'parseFile' HOT 2
- Duration: +Infinity when parsing m4a file HOT 3
- File ratings set in Winamp are not parsed correctly HOT 7
- Get duration of webm audio HOT 3
- Can't parseFile() in Bun.sh
- Parsing WebM consumes a lot of CPU and is slow HOT 1
- expose `core` as separate package export entry in version 8 HOT 4
- Does it support lyrics? HOT 5
- gg audio-codec not recognized (id=HXR 5) HOT 1
- No duration in metadata.format when using parseBuffer HOT 1
- Excessive memory use when parsing certain ID3 headers HOT 3
- Cannot read properties of undefined (reading 'docType') HOT 2
- Error: "Invalid FLAC preamble" for streams in FLAC format HOT 2
- Documenation: metadata.quality
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from music-metadata.