|
|
|
|
|
|
|
|
mediaSource: MediaSource | null |
|
|
mediaSource: MediaSource | null |
|
|
audio: HTMLAudioElement |
|
|
audio: HTMLAudioElement |
|
|
audioContext: AudioContext |
|
|
audioContext: AudioContext |
|
|
sourceBuffer?: SourceBuffer |
|
|
|
|
|
|
|
|
sourceBuffer?: any |
|
|
cacheBuffers: ArrayBuffer[] = [] |
|
|
cacheBuffers: ArrayBuffer[] = [] |
|
|
pauseTimer: number | null = null |
|
|
pauseTimer: number | null = null |
|
|
msgId: string | undefined |
|
|
msgId: string | undefined |
|
|
|
|
|
|
|
|
this.callback = callback |
|
|
this.callback = callback |
|
|
|
|
|
|
|
|
// Compatible with iphone ios17 ManagedMediaSource |
|
|
// Compatible with iphone ios17 ManagedMediaSource |
|
|
const MediaSource = window.MediaSource || window.ManagedMediaSource |
|
|
|
|
|
|
|
|
const MediaSource = window.ManagedMediaSource || window.MediaSource |
|
|
if (!MediaSource) { |
|
|
if (!MediaSource) { |
|
|
Toast.notify({ |
|
|
Toast.notify({ |
|
|
message: 'Your browser does not support audio streaming, if you are using an iPhone, please update to iOS 17.1 or later.', |
|
|
message: 'Your browser does not support audio streaming, if you are using an iPhone, please update to iOS 17.1 or later.', |
|
|
|
|
|
|
|
|
this.mediaSource = MediaSource ? new MediaSource() : null |
|
|
this.mediaSource = MediaSource ? new MediaSource() : null |
|
|
this.audio = new Audio() |
|
|
this.audio = new Audio() |
|
|
this.setCallback(callback) |
|
|
this.setCallback(callback) |
|
|
|
|
|
if (!window.MediaSource) { // if use ManagedMediaSource |
|
|
|
|
|
this.audio.disableRemotePlayback = true |
|
|
|
|
|
this.audio.controls = true |
|
|
|
|
|
} |
|
|
this.audio.src = this.mediaSource ? URL.createObjectURL(this.mediaSource) : '' |
|
|
this.audio.src = this.mediaSource ? URL.createObjectURL(this.mediaSource) : '' |
|
|
this.audio.autoplay = true |
|
|
this.audio.autoplay = true |
|
|
|
|
|
|