UNPKG

stream-chat-react

Version:

React components to create chat conversations or livestream style chat

31 lines (30 loc) 1.64 kB
import { readFileAsArrayBuffer } from '../../ReactFileUtilities'; /** * In the context of resampling audio data, AudioContext is used to decode the input audio file into an AudioBuffer, * which is a fundamental data structure representing audio data. * @param file */ export const toAudioBuffer = async (file) => { const audioCtx = new AudioContext(); const arrayBuffer = await readFileAsArrayBuffer(file); const decodedData = await audioCtx.decodeAudioData(arrayBuffer); if (audioCtx.state !== 'closed') await audioCtx.close(); return decodedData; }; /** * OfflineAudioContext is a specialized type of AudioContext that does not render audio in real-time and is used for offline audio processing tasks. * It allows performing audio processing and rendering without actually playing the audio through speakers or outputting it to a destination. * In the context of resampling audio data, OfflineAudioContext is used to resample the decoded AudioBuffer from a file to the desired sample rate. * It provides more flexibility and control over audio processing, as it can operate at different sample rates and durations compared to real-time audio contexts. * @param audioBuffer * @param sampleRate */ export const renderAudio = async (audioBuffer, sampleRate) => { const offlineAudioCtx = new OfflineAudioContext(audioBuffer.numberOfChannels, audioBuffer.duration * sampleRate, sampleRate); const source = offlineAudioCtx.createBufferSource(); source.buffer = audioBuffer; source.connect(offlineAudioCtx.destination); source.start(); return await offlineAudioCtx.startRendering(); };