jamp3
Version:
mp3, id3v1, id3v2 - reader & writer
34 lines • 1.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.analyzeBitrateMode = void 0;
const mp3_mpeg_frame_1 = require("./mp3.mpeg.frame");
function analyzeBitrateMode(frames) {
const bitRates = {};
let duration = 0;
let audioBytes = 0;
let count = 0;
frames.forEach(frame => {
const header = (0, mp3_mpeg_frame_1.expandRawHeader)((0, mp3_mpeg_frame_1.expandRawHeaderArray)(frame));
bitRates[header.bitRate] = (bitRates[header.bitRate] || 0) + 1;
duration += header.time;
audioBytes += header.size;
count++;
});
let encoded = 'CBR';
const first = frames.length > 0 ? (0, mp3_mpeg_frame_1.expandRawHeader)((0, mp3_mpeg_frame_1.expandRawHeaderArray)(frames[0])) : undefined;
let bitRate = first ? first.bitRate : 0;
const rates = Object.keys(bitRates).map(s => parseInt(s, 10));
if (rates.length > 1) {
encoded = 'VBR';
let sumBitrate = 0;
let countBitrate = 0;
rates.forEach(rate => {
sumBitrate += (rate * bitRates[rate]);
countBitrate += bitRates[rate];
});
bitRate = Math.trunc(sumBitrate / countBitrate);
}
return { encoded, bitRate, duration, count, audioBytes };
}
exports.analyzeBitrateMode = analyzeBitrateMode;
//# sourceMappingURL=mp3.bitrate.js.map