AudioPlayer
ug-js-sdk / AudioPlayer
Class: AudioPlayer
Defined in: playback-manager/audio-player/AudioPlayer.ts:62
Audio player for streaming MP3 playback in the browser.
Handles real-time audio streaming by decoding MP3 frames and scheduling playback through the Web Audio API. Used internally by the SDK for text-to-speech audio playback.
Main Methods for Users:
- initialize - Initialize the audio context (call first, requires user gesture)
- play - Start audio playback
- pause - Pause playback
- resume - Resume paused playback
- stop - Stop playback and clear queue
- dispose - Clean up resources when done
Events emitted:
AudioPlayerEvents.Ready- Audio is ready to playAudioPlayerEvents.Playing- Playback startedAudioPlayerEvents.Paused- Playback pausedAudioPlayerEvents.Stopped- Playback stoppedAudioPlayerEvents.Finished- All audio finished playingAudioPlayerEvents.AboutToComplete- Audio is about to finish (for pre-loading)
Example
const player = new AudioPlayer();
// Initialize (requires user gesture like button click)
await player.initialize();
// Listen for events
player.on(AudioPlayerEvents.Ready, () => player.play());
player.on(AudioPlayerEvents.Finished, () => console.log('Done'));
// Enqueue audio data (base64 MP3 chunks)
player.enqueue(base64AudioChunk);
player.markComplete(); // Signal no more audio coming
// Control playback
await player.pause();
await player.resume();
await player.stop();
// Clean up when done
player.dispose();
Fires
AudioPlayerEvents.Ready - When audio is queued and ready to play
Fires
AudioPlayerEvents.Playing - When playback starts or resumes
Fires
AudioPlayerEvents.Paused - When playback is paused
Fires
AudioPlayerEvents.Stopped - When playback is stopped
Fires
AudioPlayerEvents.Finished - When all audio has finished playing
Fires
AudioPlayerEvents.AboutToComplete - When audio is about to finish
Extends
EventEmitter
Implements
IAudioPlayer
Constructors
Constructor
new AudioPlayer():
AudioPlayer
Defined in: playback-manager/audio-player/AudioPlayer.ts:96
Returns
AudioPlayer
Overrides
EventEmitter.constructor
Properties
logger
protectedlogger:ILogger
Defined in: core/EventEmitter.ts:5
Implementation of
IAudioPlayer.logger
Inherited from
EventEmitter.logger
Methods
on()
on<
K>(event,callback):void
Defined in: core/EventEmitter.ts:11
Type Parameters
K
K extends string
Parameters
event
K
callback
any
Returns
void
Implementation of
IAudioPlayer.on
Inherited from
EventEmitter.on
off()
off<
K>(event,callback):void
Defined in: core/EventEmitter.ts:18
Type Parameters
K
K extends string
Parameters
event
K
callback
any
Returns
void
Implementation of
IAudioPlayer.off
Inherited from
EventEmitter.off
emit()
emit<
K>(event,data?):Promise<void>
Defined in: core/EventEmitter.ts:28
Type Parameters
K
K extends string
Parameters
event
K
data?
unknown
Returns
Promise<void>
Implementation of
IAudioPlayer.emit
Inherited from
EventEmitter.emit
removeAllListeners()
removeAllListeners(
event?):void
Defined in: core/EventEmitter.ts:73
Parameters
event?
string
Returns
void
Implementation of
IAudioPlayer.removeAllListeners
Inherited from
EventEmitter.removeAllListeners
initialize()
initialize():
Promise<void>
Defined in: playback-manager/audio-player/AudioPlayer.ts:131
Initialize the audio player and prepare for playback.
Must be called before any other methods. Should be called in response to a user gesture (click, tap) to ensure the AudioContext can start.
Returns
Promise<void>
Example
// In a button click handler
button.onclick = async () => {
await player.initialize();
// Now ready to receive and play audio
};
Implementation of
IAudioPlayer.initialize
reset()
reset():
void
Defined in: playback-manager/audio-player/AudioPlayer.ts:189
Returns
void
Implementation of
IAudioPlayer.reset
enqueue()
enqueue(
audioData):void
Defined in: playback-manager/audio-player/AudioPlayer.ts:209
Enqueue audio data for playback.
Add base64-encoded MP3 audio chunks to the playback queue. Call markComplete when all audio has been enqueued.
Parameters
audioData
string
Base64-encoded MP3 audio chunk
Returns
void
Example
// Enqueue streaming audio chunks
player.enqueue(chunk1);
player.enqueue(chunk2);
player.markComplete(); // Signal end of audio
Implementation of
IAudioPlayer.enqueue
markComplete()
markComplete():
void
Defined in: playback-manager/audio-player/AudioPlayer.ts:237
Signal that all audio has been enqueued.
Call this after enqueuing all audio chunks to indicate that no more
audio will be added. This triggers the Finished event when playback completes.
Returns
void
Example
player.enqueue(chunk1);
player.enqueue(chunk2);
player.markComplete(); // No more audio coming
Implementation of
IAudioPlayer.markComplete
play()
play():
Promise<void>
Defined in: playback-manager/audio-player/AudioPlayer.ts:483
Start audio playback.
Begins playing audio from the queue. Emits Playing event on success.
Does nothing if already playing or queue is empty.
Returns
Promise<void>
Fires
AudioPlayerEvents.Playing - When playback starts
Example
player.on(AudioPlayerEvents.Ready, async () => {
await player.play();
});
Implementation of
IAudioPlayer.play
pause()
pause():
Promise<void>
Defined in: playback-manager/audio-player/AudioPlayer.ts:588
Pause audio playback.
Suspends the audio context, pausing playback at the current position. Use resume to continue playback.
Returns
Promise<void>
Fires
AudioPlayerEvents.Paused - When playback is paused
Example
await player.pause();
// Later...
await player.resume();
Implementation of
IAudioPlayer.pause
resume()
resume():
Promise<void>
Defined in: playback-manager/audio-player/AudioPlayer.ts:611
Resume paused audio playback.
Continues playback from where it was paused.
Returns
Promise<void>
Fires
AudioPlayerEvents.Playing - When playback resumes
Example
await player.pause();
// Later...
await player.resume();
Implementation of
IAudioPlayer.resume
stop()
stop():
Promise<void>
Defined in: playback-manager/audio-player/AudioPlayer.ts:637
Stop audio playback and clear the queue.
Immediately stops all playback and clears any queued audio. To play again, you'll need to enqueue new audio.
Returns
Promise<void>
Fires
AudioPlayerEvents.Stopped - When playback is stopped
Example
// Stop playback immediately
await player.stop();
Implementation of
IAudioPlayer.stop
getCurrentTime()
getCurrentTime():
number
Defined in: playback-manager/audio-player/AudioPlayer.ts:643
Returns
number
Implementation of
IAudioPlayer.getCurrentTime
getQueueLength()
getQueueLength():
number
Defined in: playback-manager/audio-player/AudioPlayer.ts:650
Returns
number
Implementation of
IAudioPlayer.getQueueLength
getRemainingAudioSeconds()
getRemainingAudioSeconds():
number
Defined in: playback-manager/audio-player/AudioPlayer.ts:658
Get the total remaining audio playback time in seconds. Includes both queued buffers and currently scheduled (playing) audio.
Returns
number
Implementation of
IAudioPlayer.getRemainingAudioSeconds
flush()
flush():
Promise<void>
Defined in: playback-manager/audio-player/AudioPlayer.ts:740
Returns
Promise<void>
resetAboutToComplete()
resetAboutToComplete():
void
Defined in: playback-manager/audio-player/AudioPlayer.ts:775
Returns
void
Implementation of
IAudioPlayer.resetAboutToComplete
getFrameStats()
getFrameStats():
object
Defined in: playback-manager/audio-player/AudioPlayer.ts:782
Get frame statistics for debugging
Returns
object
totalFramesExtracted
totalFramesExtracted:
number
totalFramesDecoded
totalFramesDecoded:
number
totalFramesFailed
totalFramesFailed:
number
extractorRemainingBufferSize
extractorRemainingBufferSize:
number
dispose()
dispose():
void
Defined in: playback-manager/audio-player/AudioPlayer.ts:800
Dispose of all resources and clean up. Should be called when the audio player is no longer needed.
Returns
void
Implementation of
IAudioPlayer.dispose
destroy()
destroy():
void
Defined in: playback-manager/audio-player/AudioPlayer.ts:855
Destroy the audio player and clean up resources
Returns
void
Deprecated
Use dispose() instead