@pico-brief/audio-duration
v1.0.0
Published
Get the duration of an audio file in seconds from an ArrayBuffer. Supports MP3, WAV, OGG/Vorbis, FLAC, and AAC/M4A.
Maintainers
Readme
@pico-brief/audio-duration
A lightweight library that tells you how long an audio file is — no dependencies, no native binaries, works in Node.js and the browser.
You give it the raw bytes of an audio file (as an ArrayBuffer), and it gives you back the duration in seconds.
Supported formats: MP3, WAV, OGG/Vorbis, FLAC, AAC/M4A
Installation
npm install @pico-brief/audio-durationUsage
Automatic format detection (recommended)
If you don't know which format the file is, use getAudioDuration. It inspects the file's header bytes to figure out the format automatically.
import { getAudioDuration } from '@pico-brief/audio-duration';
const duration = getAudioDuration(arrayBuffer);
console.log(`Duration: ${duration} seconds`);In Node.js — reading a file from disk
import { readFileSync } from 'node:fs';
import { getAudioDuration } from '@pico-brief/audio-duration';
// Read the file into a Node.js Buffer, then convert to ArrayBuffer
const fileBuffer = readFileSync('./song.mp3');
const arrayBuffer = fileBuffer.buffer.slice(
fileBuffer.byteOffset,
fileBuffer.byteOffset + fileBuffer.byteLength
);
const duration = getAudioDuration(arrayBuffer);
console.log(`Duration: ${duration} seconds`);In the browser — reading a file chosen by the user
<input type="file" id="picker" accept="audio/*" />import { getAudioDuration } from '@pico-brief/audio-duration';
document.getElementById('picker').addEventListener('change', async (event) => {
const file = event.target.files[0];
const arrayBuffer = await file.arrayBuffer();
const duration = getAudioDuration(arrayBuffer);
console.log(`Duration: ${duration} seconds`);
});In the browser — reading a remote audio file
import { getAudioDuration } from '@pico-brief/audio-duration';
const response = await fetch('https://example.com/audio/song.flac');
const arrayBuffer = await response.arrayBuffer();
const duration = getAudioDuration(arrayBuffer);
console.log(`Duration: ${duration} seconds`);API
getAudioDuration(arrayBuffer)
Detects the audio format automatically and returns the duration in seconds. Throws an error if the format is not recognized.
getAudioDuration(arrayBuffer: ArrayBuffer): numberFormat-specific functions
If you already know the format, you can call the parser for that format directly:
| Function | Format |
|---|---|
| getMP3Duration(arrayBuffer) | MP3 |
| getWAVDuration(arrayBuffer) | WAV |
| getOGGDuration(arrayBuffer) | OGG / Vorbis / Opus |
| getFLACDuration(arrayBuffer) | FLAC |
| getM4ADuration(arrayBuffer) | AAC / M4A |
All functions take an ArrayBuffer and return a number (duration in seconds).
License
MIT
