Sfoglia il codice sorgente

Place media selector in correct place

master
Roderic Day 5 anni fa
parent
commit
257fcbbce1
1 ha cambiato i file con 28 aggiunte e 28 eliminazioni
  1. +28
    -28
      pico.js

+ 28
- 28
pico.js Vedi File

@@ -72,6 +72,33 @@ const getOrCreateRpc = (username) => {
}
return State.rpcs[username]
}
const getSelectedMedia = async () => {
const stream = new MediaStream()
const addTrack = stream.addTrack.bind(stream)

const muted = document.querySelector('#mute-check').checked
if(!muted) {
const audio = Media.audioDefaults
await navigator.mediaDevices.getUserMedia({audio})
.then(s => s.getAudioTracks().forEach(addTrack))
.catch(e => console.error(e))
}

const source = document.querySelector('#media-source').value
if(source === 'camera') {
const video = {width: {ideal: 320}, facingMode: 'user', frameRate: 26}
await navigator.mediaDevices.getUserMedia({video})
.then(s => s.getVideoTracks().forEach(addTrack))
.catch(e => console.error(e))
}
if(source === 'screen' && navigator.mediaDevices.getDisplayMedia) {
await navigator.mediaDevices.getDisplayMedia()
.then(s => s.getVideoTracks().forEach(addTrack))
.catch(e => console.error(e))
}

return stream
}
const onPeerInfo = async ({detail: message}) => {
const rpc = getOrCreateRpc(message.source)
if(rpc && message.value.type === 'request') {
@@ -258,35 +285,8 @@ const Media = {
noiseSuppresion: true,
echoCancellation: true,
},
getSelectedMedia: async () => {
const stream = new MediaStream()
const addTrack = stream.addTrack.bind(stream)

const muted = document.querySelector('#mute-check').checked
if(!muted) {
const audio = Media.audioDefaults
await navigator.mediaDevices.getUserMedia({audio})
.then(s => s.getAudioTracks().forEach(addTrack))
.catch(e => console.error(e))
}

const source = document.querySelector('#media-source').value
if(source === 'camera') {
const video = {width: {ideal: 320}, facingMode: 'user', frameRate: 26}
await navigator.mediaDevices.getUserMedia({video})
.then(s => s.getVideoTracks().forEach(addTrack))
.catch(e => console.error(e))
}
if(source === 'screen' && navigator.mediaDevices.getDisplayMedia) {
await navigator.mediaDevices.getDisplayMedia()
.then(s => s.getVideoTracks().forEach(addTrack))
.catch(e => console.error(e))
}

return stream
},
turnOn: async () => {
const media = await Media.getSelectedMedia()
const media = await getSelectedMedia()
State.media[State.username] = media
wire({kind: 'peerInfo', value: {type: 'request'}})
m.redraw()

Loading…
Annulla
Salva