snapshot of https://github.com/pion/webrtc.git (main, 2026-09-15; blobs > 131072B omitted)
Some checks failed
REUSE Compliance Check / lint (push) Failing after 0s
Browser E2E / Test (push) Failing after 3s
Test / test (1.24) (push) Failing after 0s
Test / test-i386 (1.25) (push) Failing after 0s
Test / test-i386 (1.24) (push) Failing after 0s
Test / test-windows (1.25) (push) Failing after 0s
Test / test-windows (1.24) (push) Failing after 0s
Test / test (1.25) (push) Failing after 0s
Examples Tests / Test (push) Failing after 3s
Test / test-macos (1.25) (push) Failing after 0s
Test / test-macos (1.24) (push) Failing after 0s
Go mod tidy / tidy (push) Failing after 0s
Test / test-wasm (push) Failing after 0s
CodeQL / analyze (push) Failing after 1s
Fuzz / fuzz (push) Failing after 0s
Some checks failed
REUSE Compliance Check / lint (push) Failing after 0s
Browser E2E / Test (push) Failing after 3s
Test / test (1.24) (push) Failing after 0s
Test / test-i386 (1.25) (push) Failing after 0s
Test / test-i386 (1.24) (push) Failing after 0s
Test / test-windows (1.25) (push) Failing after 0s
Test / test-windows (1.24) (push) Failing after 0s
Test / test (1.25) (push) Failing after 0s
Examples Tests / Test (push) Failing after 3s
Test / test-macos (1.25) (push) Failing after 0s
Test / test-macos (1.24) (push) Failing after 0s
Go mod tidy / tidy (push) Failing after 0s
Test / test-wasm (push) Failing after 0s
CodeQL / analyze (push) Failing after 1s
Fuzz / fuzz (push) Failing after 0s
This commit is contained in:
110
examples/simulcast/jsfiddle/demo.js
Normal file
110
examples/simulcast/jsfiddle/demo.js
Normal file
@@ -0,0 +1,110 @@
|
||||
/* eslint-env browser */
|
||||
|
||||
// SPDX-FileCopyrightText: 2026 The Pion community <https://pion.ly>
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
// Create peer conn
|
||||
const pc = new RTCPeerConnection({
|
||||
iceServers: [{
|
||||
urls: 'stun:stun.l.google.com:19302'
|
||||
}]
|
||||
})
|
||||
|
||||
pc.oniceconnectionstatechange = (e) => {
|
||||
console.log('connection state change', pc.iceConnectionState)
|
||||
}
|
||||
pc.onicecandidate = (event) => {
|
||||
if (event.candidate === null) {
|
||||
document.getElementById('localSessionDescription').value = btoa(
|
||||
JSON.stringify(pc.localDescription)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
pc.onnegotiationneeded = (e) =>
|
||||
pc
|
||||
.createOffer()
|
||||
.then((d) => pc.setLocalDescription(d))
|
||||
.catch(console.error)
|
||||
|
||||
pc.ontrack = (event) => {
|
||||
console.log('Got track event', event)
|
||||
const video = document.createElement('video')
|
||||
video.srcObject = event.streams[0]
|
||||
video.autoplay = true
|
||||
video.width = '500'
|
||||
const label = document.createElement('div')
|
||||
label.textContent = event.streams[0].id
|
||||
document.getElementById('serverVideos').appendChild(label)
|
||||
document.getElementById('serverVideos').appendChild(video)
|
||||
}
|
||||
|
||||
navigator.mediaDevices
|
||||
.getUserMedia({
|
||||
video: {
|
||||
width: {
|
||||
ideal: 4096
|
||||
},
|
||||
height: {
|
||||
ideal: 2160
|
||||
},
|
||||
frameRate: {
|
||||
ideal: 60,
|
||||
min: 10
|
||||
}
|
||||
},
|
||||
audio: false
|
||||
})
|
||||
.then((stream) => {
|
||||
document.getElementById('browserVideo').srcObject = stream
|
||||
pc.addTransceiver(stream.getVideoTracks()[0], {
|
||||
direction: 'sendonly',
|
||||
streams: [stream],
|
||||
sendEncodings: [
|
||||
// for firefox order matters... first high resolution, then scaled resolutions...
|
||||
{
|
||||
rid: 'f'
|
||||
},
|
||||
{
|
||||
rid: 'h',
|
||||
scaleResolutionDownBy: 2.0
|
||||
},
|
||||
{
|
||||
rid: 'q',
|
||||
scaleResolutionDownBy: 4.0
|
||||
}
|
||||
]
|
||||
})
|
||||
pc.addTransceiver('video')
|
||||
pc.addTransceiver('video')
|
||||
pc.addTransceiver('video')
|
||||
})
|
||||
|
||||
window.startSession = () => {
|
||||
const sd = document.getElementById('remoteSessionDescription').value
|
||||
if (sd === '') {
|
||||
return alert('Session Description must not be empty')
|
||||
}
|
||||
|
||||
try {
|
||||
console.log('answer', JSON.parse(atob(sd)))
|
||||
pc.setRemoteDescription(JSON.parse(atob(sd)))
|
||||
} catch (e) {
|
||||
alert(e)
|
||||
}
|
||||
}
|
||||
|
||||
window.copySDP = () => {
|
||||
const browserSDP = document.getElementById('localSessionDescription')
|
||||
|
||||
browserSDP.focus()
|
||||
browserSDP.select()
|
||||
|
||||
try {
|
||||
const successful = document.execCommand('copy')
|
||||
const msg = successful ? 'successful' : 'unsuccessful'
|
||||
console.log('Copying SDP was ' + msg)
|
||||
} catch (err) {
|
||||
console.log('Unable to copy SDP ' + err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user