From 52da5b16e7002fc15343d2df73838b3f8220cccd Mon Sep 17 00:00:00 2001 From: Likename Haojie Date: Mon, 23 Sep 2024 18:44:24 +0800 Subject: [PATCH] fixbug tts(stream) not work on ios safari(17.1+) (#8645) Co-authored-by: crazywoola <427733928@qq.com> --- web/app/components/base/audio-btn/audio.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/web/app/components/base/audio-btn/audio.ts b/web/app/components/base/audio-btn/audio.ts index a61fd085d4..baf675d0be 100644 --- a/web/app/components/base/audio-btn/audio.ts +++ b/web/app/components/base/audio-btn/audio.ts @@ -12,7 +12,7 @@ export default class AudioPlayer { mediaSource: MediaSource | null audio: HTMLAudioElement audioContext: AudioContext - sourceBuffer?: SourceBuffer + sourceBuffer?: any cacheBuffers: ArrayBuffer[] = [] pauseTimer: number | null = null msgId: string | undefined @@ -33,7 +33,7 @@ export default class AudioPlayer { this.callback = callback // Compatible with iphone ios17 ManagedMediaSource - const MediaSource = window.MediaSource || window.ManagedMediaSource + const MediaSource = window.ManagedMediaSource || window.MediaSource if (!MediaSource) { Toast.notify({ message: 'Your browser does not support audio streaming, if you are using an iPhone, please update to iOS 17.1 or later.', @@ -43,6 +43,10 @@ export default class AudioPlayer { this.mediaSource = MediaSource ? new MediaSource() : null this.audio = new Audio() 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.autoplay = true