基本格式
promis = myPeerConnection.createOffer([options])
Options 可选
- iceRestart:该选项会重启ICE,重新进行Candidate收集
- voiceActivityDetection:是否开启静音检测,默认开启
- 接收远端音频
- 接收远端视频
// let videoPlayer = document.querySelector('video#player');
let creatOffer = document.querySelector('button#createOffer')
let pc = new RTCPeerConnection()
let pc2 = new RTCPeerConnection()
let gotMediaStream = (stream) => {
stream.getTracks().forEach(track => {
pc.addTrack(track)
});
let options = {
offerToReceiveAudio: 0,
offerToReceiveVideo: 1,
iceRestart: true
}
// 媒体协商
pc.createOffer(options)
.then((desc) => {
console.log('offer', desc.sdp)
pc.setLocalDescription(desc)
pc2.setRemoteDescription(desc)
pc2.createAnswer().then((desc) => {
console.log('answer', desc.sdp)
pc2.setLocalDescription(desc)
pc.setRemoteDescription(desc)
}).catch((err) => {
console.log(err)
})
})
.catch(() => {
console.log(err)
})
}
let handleError = (err) => {
alert(`getUserMedia errpr:${err}`)
console.log(`getUserMedia errpr:${err}`)
}
let getStream = () => {
let constrants = {
video: {
width: 640,
height: 480,
frameRate: 60,
facingMode: 'environment',
resizeMode: 'none'
},
audio: false
}
navigator.mediaDevices.getUserMedia(constrants)
.then(gotMediaStream)
.catch(handleError)
}
creatOffer.onclick = () => {
if (!pc) {
console.log('pc is null')
}
getStream()
return
}
if(!navigator.mediaDevices || !navigator.mediaDevices.getUserMedia) {
alert('getUserMedia is not supported!')
console.log('getUserMedia is not supported!');
}
当iceRestart为true时,进行两次连接时,会重新收集candidate,a=ice-ufrag会改变
网友评论