feat(im): 修复摄像头关闭后画面卡在最后一帧(pickStream 短路 mute 状态)

im
YunaiV 2026-05-18 00:26:14 +08:00
parent ae7f3a8bc5
commit 12a41da241
1 changed files with 9 additions and 2 deletions

View File

@ -98,6 +98,9 @@ export function useLiveKitRoom() {
})
.on(RoomEvent.TrackSubscribed, () => syncRemotes(r))
.on(RoomEvent.TrackUnsubscribed, () => syncRemotes(r))
// mute / unmute 让 pickStream 的 isMuted 短路重算video 元素能解绑 srcObject 而不是卡最后一帧
.on(RoomEvent.TrackMuted, () => syncRemotes(r))
.on(RoomEvent.TrackUnmuted, () => syncRemotes(r))
.on(RoomEvent.ConnectionQualityChanged, (quality) => {
connectionQuality.value = quality
})
@ -241,12 +244,16 @@ export function useLiveKitRoom() {
/**
* MediaStream
* unknown livekit-client cast
* MediaStream watch / srcObject
* MediaStream watch / srcObject
* mute / null video srcObject
*/
function pickStream(participant: unknown, source: Track.Source): MediaStream | null {
const p = participant as Participant
const pub = p.getTrackPublication(source)
const track = pub?.track?.mediaStreamTrack
if (!pub || pub.isMuted) {
return null
}
const track = pub.track?.mediaStreamTrack
if (!track) {
return null
}