При проверке микрофона, если его нет, скрипт падает с ошибкой

N.Ivanov

New Member
На демке тоже самое. Кто нибудь сталкивался с этой проблемой, как решить?
Снимок экрана от 2020-05-25 16-20-58.png
 

Max

Administrator
Staff member
Добрый день.
Мы воспроизвели проблем в примере Media Devices, при условии, что на ПК отсутствует также и камера. Создан тикет WCS-2708, о результатах сообщим здесь.
Как временное решение, можно отключать видео/аудио через constraints, например
Code:
constraints {video: true, audio: false}
в этом случае исключения быть не должно.
 

N.Ivanov

New Member
Добрый день.
Мы воспроизвели проблем в примере Media Devices, при условии, что на ПК отсутствует также и камера. Создан тикет WCS-2708, о результатах сообщим здесь.
Как временное решение, можно отключать видео/аудио через constraints, например
Code:
constraints {video: true, audio: false}
в этом случае исключения быть не должно.
Я ведь правильно понял что это constraints {video: true, audio: false} нужно добавить в параметры вызова createStream?
Если да, то к сожалению данный способ не помог.
 

Max

Administrator
Staff member
Если да, то к сожалению данный способ не помог.
Да, ограничения указываются при вызове createStream, например
Code:
session.createStream({name:"stream1", constraints:{audio:false, video:true}}).publish();
Но этот способ и не поможет, если в системе нет ни микрофона, ни камеры (мы воспроизвели проблему только для такого случая), в этом случае нужно указать {audio:false, video:false}. К сожалению, непонятно, что Вы собираетесь публиковать на такой системе.
Обратите внимание, что для проигрывания потока, если не нужна публикация, достаточно перечислить устройства вывода, если Вы планируете дать пользователю выбор, куда выводить звук:
Code:
    Flashphoner.getMediaDevices(null, true, MEDIA_DEVICE_KIND.OUTPUT).then(function (list) {
        list.audio.forEach(function (device) {
            var audio = document.getElementById("audioOutput");
            var deviceInList = false;
            for (var i = 0; i < audio.options.length; i++) {
                if (audio.options[i].value === device.id) {
                    deviceInList = true;
                    break;
                }
            }
            if (!deviceInList) {
                var option = document.createElement("option");
                option.text = device.label || device.id;
                option.value = device.id;
                audio.appendChild(option);
            }
        });
    }).catch(function (error) {
        console.error(error);
        $('#audioOutputForm').remove();
    });
Если же Вам необходима именно проверка устройств перед публикацией, ожидайте фикса по тикету WCS-2708.
 

Max

Administrator
Staff member
Добрый день.
Необработанное исключение в Chrome при использовании Flashphoner.getMediaDevices() и отсутствии в системе микрофона и камеры исправлено в сборке WebSDK 0.5.28.2753.137 (исходный код на GitHub c94ab5e). Пожалуйста, обновите WebSDK и проверьте.
 
Top