UNPKG

@omnimedia/omnitool

Version:

open source video processing tools

47 lines 1.51 kB
import { ALL_FORMATS, Input } from "mediabunny"; import { loadDecoderSource } from "../../driver/utils/load-decoder-source.js"; export class Media { datafile; duration = 0; isImage = false; hasVideo = false; hasAudio = false; constructor(datafile) { this.datafile = datafile; } static async analyze(datafile) { const media = new this(datafile); if (this.#isImage(datafile)) { media.isImage = true; return media; } const duration = (await this.duration(datafile.url)) * 1000; media.duration = duration; const { video, audio } = await this.#has(datafile.url); media.hasAudio = audio; media.hasVideo = video; return media; } static #isImage(datafile) { return datafile.blob.type.startsWith("image/"); } static async duration(source) { const input = new Input({ formats: ALL_FORMATS, source: await loadDecoderSource(source) }); const duration = await input.computeDuration(); return Number(duration.toFixed(5)); // fix weird floating points } static async #has(source) { const input = new Input({ formats: ALL_FORMATS, source: await loadDecoderSource(source) }); return { audio: !!(await input.getPrimaryAudioTrack()), video: !!(await input.getPrimaryVideoTrack()) }; } } //# sourceMappingURL=media.js.map