fix(room): в Chrome пропадал звук после возврата из мини-окна
RoomAudioRenderer жил внутри RoomStage и рендерился дважды — в ветке variant="pip" и в основной. При открытии Document PiP сцена размонтируется в основном окне и монтируется в PiP-окне, поэтому скрытые <audio> с чужими аудиотреками физически переезжали в ДРУГОЙ документ, а при возврате — обратно. После такого переезда Chrome теряет аудиовыход у remote-трека: пакеты продолжают приходить (packetsReceived растёт), но totalSamplesDuration и totalAudioEnergy замирают, и трек молчит даже в свежесозданном <audio> со свежим MediaStream. Тот же цикл detach/attach в пределах одного документа безвреден — дело именно в переезде между документами. В Safari бага не было: там Document PiP не используется (video-фолбэк), сцена остаётся в основном окне. Рендерер вынесен в RoomPage — один экземпляр, всегда в основном документе. В PiP-окне аудиоэлементов теперь нет вовсе, цикл «открыл мини-окно → вернул» их не касается.
This commit is contained in:
@@ -4,7 +4,6 @@ import { Track, type Participant } from 'livekit-client'
|
||||
import {
|
||||
CarouselLayout,
|
||||
FocusLayoutContainer,
|
||||
RoomAudioRenderer,
|
||||
isTrackReference,
|
||||
useRoomContext,
|
||||
useSpeakingParticipants,
|
||||
@@ -400,7 +399,6 @@ export function RoomStage({
|
||||
<section className="stage room-single-tile">
|
||||
{focusTrack && <RoomParticipantTile trackRef={focusTrack} onStopSharing={handleStopSharing} />}
|
||||
<PipMicToggle />
|
||||
<RoomAudioRenderer />
|
||||
</section>
|
||||
)
|
||||
}
|
||||
@@ -496,7 +494,6 @@ export function RoomStage({
|
||||
<span>Показать остальных ({sideTracks.length})</span>
|
||||
</button>
|
||||
)}
|
||||
<RoomAudioRenderer />
|
||||
</section>
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user