Здравствуйте.
Как получить список устройств пользователя, доступных для воспроизведения аудио? WebSDK API позволяет получить только список audio input и video input устройств, но не audio output.
Сниппет кода, иллюстрирующий проблему:
Результаты:
Как видно, в списке устройств, полученных через нативное API, присутствуют устройства для воспроизведения аудио:
Однако, получить информацию о таких устройствах посредством Flashphoner WebSDK не представляется возможным. Что делать в таком случае?
В этом контексте, видится некоторая нестыковка в WebSDK API: в методе "Session.createStream()" можно указать "options.constraints.audio.outputId", который будет использоваться для воспроизведения аудио. Однако, без возможности получить этот ID, как сказано выше, сделать это проблематично.
Как получить список устройств пользователя, доступных для воспроизведения аудио? WebSDK API позволяет получить только список audio input и video input устройств, но не audio output.
Сниппет кода, иллюстрирующий проблему:
Code:
const printMediaDeviceInfo = (id, type, label) => {
console.log(`Type: "${type}", Label: "${label}", ID: "${id}"`);
};
Flashphoner.init();
Flashphoner.getMediaDevices(null, true).then(list => {
console.log('\nDevices detected by FP WebSDK\n\n');
list.audio.forEach(device => printMediaDeviceInfo(device.id, device.type, device.label));
list.video.forEach(device => printMediaDeviceInfo(device.id, device.type, device.label));
});
navigator.mediaDevices.enumerateDevices().then(devices => {
console.log('\nDevices detected by native WebRTC API \n\n');
devices.forEach(device => {
printMediaDeviceInfo(device.deviceId, device.kind, device.label);
});
});
Code:
Devices detected by native WebRTC API
Type: "audioinput", Label: "Default", ID: "default"
Type: "audioinput", Label: "Built-in Audio Analog Stereo", ID: "9c374fa20770c3b193340ddfe5122aca6695a7430d2c8f9ac172d127236c4788"
Type: "audioinput", Label: "Webcam C170 Analog Mono", ID: "0bd4706e657f2905bda8a35f2d985c6393a1a5e97b32e32728189bc696e65f0d"
Type: "videoinput", Label: "Webcam C170 (046d:082b)", ID: "8e294b7ea4d22b45c175aa842562dd4b3053dab1963cae5f36e751b844dad721"
Type: "audiooutput", Label: "Default", ID: "default"
Type: "audiooutput", Label: "Built-in Audio Analog Stereo", ID: "676b337a40d4b5023b16d7ddaf58448df5e85a10e30438166c62fe89fccf793f"
Devices detected by FP WebSDK
Type: "mic", Label: "Default", ID: "default"
Type: "mic", Label: "Built-in Audio Analog Stereo", ID: "9c374fa20770c3b193340ddfe5122aca6695a7430d2c8f9ac172d127236c4788"
Type: "mic", Label: "Webcam C170 Analog Mono", ID: "0bd4706e657f2905bda8a35f2d985c6393a1a5e97b32e32728189bc696e65f0d"
Type: "camera", Label: "Webcam C170 (046d:082b)", ID: "8e294b7ea4d22b45c175aa842562dd4b3053dab1963cae5f36e751b844dad721"
Code:
Type: "audiooutput", Label: "Default", ID: "default"
Type: "audiooutput", Label: "Built-in Audio Analog Stereo", ID: "676b337a40d4b5023b16d7ddaf58448df5e85a10e30438166c62fe89fccf793f"
В этом контексте, видится некоторая нестыковка в WebSDK API: в методе "Session.createStream()" можно указать "options.constraints.audio.outputId", который будет использоваться для воспроизведения аудио. Однако, без возможности получить этот ID, как сказано выше, сделать это проблематично.