Browse Source

fixbug tts(stream) not work on ios safari(17.1+) (#8645)

Co-authored-by: crazywoola <427733928@qq.com>
tags/0.9.0
Likename Haojie 1 year ago
parent
commit
52da5b16e7
No account linked to committer's email address
1 changed files with 6 additions and 2 deletions
  1. 6
    2
      web/app/components/base/audio-btn/audio.ts

+ 6
- 2
web/app/components/base/audio-btn/audio.ts View File

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



Loading…
Cancel
Save