Il est trivial d'obtenir ce genre de code au travail:Étiquettes de caméra et de micro MediaStream avant l'autorisation?
const videoTracks = this.localStream.getVideoTracks();
const audioTracks = this.localStream.getAudioTracks();
if (videoTracks.length > 0)
this.trace('Using video device: ' + videoTracks[0].label);
if (audioTracks.length > 0)
this.trace('Using audio device: ' + audioTracks[0].label);
Que diriez-vous avant que les appareils sont choisis?
navigator.mediaDevices
.enumerateDevices()
.then(this.gotDevices.bind(this))
.catch(this.alertsService.add.bind(this.alertsService));
}
gotDevices(deviceInfos: MediaDeviceInfo[]) {
this.mediaDeviceInfos = deviceInfos;
this.mediaDeviceInfos.forEach(device => {
if (device.kind === 'audioinput')
this.mics.push(device);
else if (device.kind === 'videoinput')
this.cams.push(device);
else
console.warn(`Unexpected: ${JSON.stringify(device)}`);
});
}
this.mediaDeviceInfos.some(dev => dev.label)
est false
. Je dois donc utiliser dev.deviceId
dans mon entrée, ce qui est laid:
J'ai besoin du dispositif spécifique choisi ici parce que je l'utilise comme si, pour supporter de multiples cames et micros:
const constraints: MediaStreamConstraints = {
audio: { advanced: [{ deviceId: mic.deviceId, groupId: mic.groupId }] },
video: { advanced: [{ deviceId: cam.deviceId, groupId: cam.groupId }] }
};
Comment obtenir des étiquettes pour mon appareil photo et mon micro, afin que l'utilisateur puisse les choisir dans le thème?
N'obtenez-vous pas l'objet ayant la propriété '" label "' 'this.mediaDeviceInfos = deviceInfos;'? – guest271314
Oui, mais label est toujours '" "' sur Firefox 57.0b6 & 57.0b7 (64 bits). Accrochez-vous, il suffit de cocher Chrome et cela fonctionne. Hmm ... –
Confirmé '' "' 'label sur Firefox 56.0.1 (64-bit) aussi –