Add metadata-based duration retrieval

This commit is contained in:
Vanilagy
2026-03-13 17:03:36 +01:00
parent c43ca025d9
commit a9a455e132
23 changed files with 517 additions and 49 deletions
+19
View File
@@ -97,6 +97,17 @@ export class FlacDemuxer extends Demuxer {
return [this.track];
}
async getDurationFromMetadata(): Promise<number | null> {
await this.readMetadata();
assert(this.audioInfo);
if (this.audioInfo.totalSamples === 0) {
return null;
}
return this.audioInfo.totalSamples / this.audioInfo.sampleRate;
}
async getMimeType() {
return 'audio/flac';
}
@@ -252,6 +263,10 @@ export class FlacDemuxer extends Demuxer {
break;
}
}
if (!this.audioInfo) {
throw new Error('Missing STREAMINFO metadata block! Corrupted FLAC file.');
}
})());
}
@@ -578,6 +593,10 @@ class FlacAudioTrackBacking implements InputAudioTrackBacking {
return null;
}
getDurationFromMetadata() {
return this.demuxer.getDurationFromMetadata();
}
async getLiveRefreshInterval() {
return null;
}