UNPKG

@omnimedia/omnitool

Version:

open source video processing tools

29 lines (23 loc) 819 B
import {Driver} from "../../../../driver/driver.js" export async function prepAudio(driver: Driver, source: Blob) { const arrayBuffer = await source.arrayBuffer() const audioCTX = new AudioContext({sampleRate: 16000}) try { const audioData = await audioCTX.decodeAudioData(arrayBuffer) let audio: Float32Array if (audioData.numberOfChannels === 2) { const SCALING_FACTOR = Math.sqrt(2) const left = audioData.getChannelData(0) const right = audioData.getChannelData(1) audio = new Float32Array(left.length) for (let i = 0; i < audioData.length; ++i) audio[i] = (SCALING_FACTOR * (left[i] + right[i])) / 2 } else { audio = audioData.getChannelData(0) } const duration = await driver.getAudioDuration(source) return {audio, duration} } finally { await audioCTX.close() } }