// Acquire local media streams according to options
acquireLocalMedia = async () => {
if (!this.sendAudio && !this.sendVideo) {
return // Nothing to do here
}
let mediaOptions = { audio: this.sendAudio, video: this.sendVideo }
if (this.sendVideo) {
mediaOptions["video"] = { width: this.sendVideoWidth, height: this.sendVideoHeight }
if (this.facingMode) {
mediaOptions["video"] ["facingMode"] = { exact: this.facingMode }
}
}
console.log("Local mediaStreamConstraints", mediaOptions)
this.localStream = await navigator.mediaDevices.getUserMedia(mediaOptions)
console.log("Local stream", this.localStream)
const videoTracks = this.localStream.getVideoTracks()
if (videoTracks.length > 0) {
console.log(`Using video device: ${videoTracks[0].label}`)
}
const audioTracks = this.localStream.getAudioTracks()
if (audioTracks.length > 0) {
console.log(`Using audio device: ${audioTracks[0].label}`)
}
this.localStream.getTracks().forEach(track => {
console.log("Local track to peer", track)
this.pc.addTrack(track, this.localStream)
})
// For display
if (this.localVideo)
this.localVideo.srcObject = this.localStream
}