fix(камера): не держать превью-камеру весь звонок (лампочка горела при выкл. видео)
Первопричина: LocalVideoControlButton/LocalAudioControlButton на mounted() подписываются на useDevices и держат подписку весь звонок; initializeDevices безусловно грабит камеру (getUserMedia video:true) для превью, хотя кнопкам нужен лишь список устройств. Камера отпускалась только по завершении звонка → индикатор горел при выключенном видео (медиа-конвейер звонка свой трек останавливает корректно, но превью-подсистема — нет). Фикс: разделены подписка на СПИСОК устройств и на ЖИВОЙ превью-поток. streamSubscribersCount + единая точка контроля в updateAudio/VideoStream (без превью-подписчика поток не грабится и останавливается — защищает и от watch). Кнопки звонка: requestStream:false. Диалог настроек — без изменений (превью работает). enableDeviceEvents использует enumerateDevices (без камеры). Сборка OK. НЕ деплоено — ждёт тест-фазу (docs/f7-fixes/camera-led-on-with-video-off.md).
This commit is contained in:
@@ -303,11 +303,13 @@ export default {
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.subscribeToDevices()
|
||||
// [F7] Кнопке нужен только СПИСОК устройств — не живой поток микрофона.
|
||||
// (Симметрично видео-кнопке; звук звонка идёт через медиа-конвейер, не через превью.)
|
||||
this.subscribeToDevices({ requestStream: false })
|
||||
},
|
||||
|
||||
beforeUnmount() {
|
||||
this.unsubscribeFromDevices()
|
||||
this.unsubscribeFromDevices({ requestStream: false })
|
||||
},
|
||||
|
||||
methods: {
|
||||
|
||||
Reference in New Issue
Block a user