mirror of
https://github.com/pion/webrtc.git
synced 2025-10-05 23:26:58 +08:00

Use offerer PayloadType when generating answer. Before we would use the hardcoded values, this is invalid behavior and would cause browsers to just ignore our video when publishing.
63 lines
1.7 KiB
JavaScript
63 lines
1.7 KiB
JavaScript
/* eslint-env browser */
|
|
var log = msg => {
|
|
document.getElementById('logs').innerHTML += msg + '<br>'
|
|
}
|
|
|
|
window.createSession = isPublisher => {
|
|
let pc = new RTCPeerConnection({
|
|
iceServers: [
|
|
{
|
|
urls: 'stun:stun.l.google.com:19302'
|
|
}
|
|
]
|
|
})
|
|
pc.oniceconnectionstatechange = e => log(pc.iceConnectionState)
|
|
pc.onicecandidate = event => {
|
|
if (event.candidate === null) {
|
|
document.getElementById('localSessionDescription').value = btoa(JSON.stringify(pc.localDescription))
|
|
}
|
|
}
|
|
|
|
if (isPublisher) {
|
|
navigator.mediaDevices.getUserMedia({ video: true, audio: false })
|
|
.then(stream => {
|
|
pc.addStream(document.getElementById('video1').srcObject = stream)
|
|
pc.createOffer()
|
|
.then(d => pc.setLocalDescription(d))
|
|
.catch(log)
|
|
}).catch(log)
|
|
} else {
|
|
pc.addTransceiver('video')
|
|
pc.createOffer()
|
|
.then(d => pc.setLocalDescription(d))
|
|
.catch(log)
|
|
|
|
pc.ontrack = function (event) {
|
|
var el = document.getElementById('video1')
|
|
el.srcObject = event.streams[0]
|
|
el.autoplay = true
|
|
el.controls = true
|
|
}
|
|
}
|
|
|
|
window.startSession = () => {
|
|
let sd = document.getElementById('remoteSessionDescription').value
|
|
if (sd === '') {
|
|
return alert('Session Description must not be empty')
|
|
}
|
|
|
|
try {
|
|
pc.setRemoteDescription(new RTCSessionDescription(JSON.parse(atob(sd))))
|
|
} catch (e) {
|
|
alert(e)
|
|
}
|
|
}
|
|
|
|
let btns = document.getElementsByClassName('createSessionButton')
|
|
for (let i = 0; i < btns.length; i++) {
|
|
btns[i].style = 'display: none'
|
|
}
|
|
|
|
document.getElementById('signalingContainer').style = 'display: block'
|
|
}
|