Browse Source

More flexibility on media options

master
Roderic Day 5 years ago
parent
commit
de6405f473
1 changed files with 19 additions and 11 deletions
  1. +19
    -11
      pico.js

+ 19
- 11
pico.js View File

) )
}, },
} }
const audio = {
noiseSuppresion: true,
echoCancellation: true,
}
const Media = { const Media = {
options: {
video: {audio, video: {width: {ideal: 320}, facingMode: 'user'}},
audio: {audio, video: false},
screen: {audio, video: {mediaSource: 'screen'}},
none: {audio: false, video: false},
audioDefaults: {
noiseSuppresion: true,
echoCancellation: true,
},
videoOptions: {
camera: {width: {ideal: 320}, facingMode: 'user', frameRate: 26},
screen: {mediaSource: 'screen', frameRate: 26},
none: false,
},
getSelectedConstraints: () => {
const videoChoice = document.querySelector('#media-source').value
const muted = document.querySelector('#mute-check').checked
return {
video: Media.videoOptions[videoChoice],
audio: muted ? false : Media.audioDefaults,
}
}, },
turnOn: async () => { turnOn: async () => {
const constraints = Media.options[document.querySelector('#media-source').value]
const constraints = Media.getSelectedConstraints()
const media = await navigator.mediaDevices.getUserMedia(constraints) const media = await navigator.mediaDevices.getUserMedia(constraints)
State.media[State.username] = media State.media[State.username] = media
wire({kind: 'peerInfo', value: {type: 'request'}}) wire({kind: 'peerInfo', value: {type: 'request'}})
return m('.media', return m('.media',
m('button', {onclick: Media.turnOn}, 'turn on'), m('button', {onclick: Media.turnOn}, 'turn on'),
m('select#media-source', m('select#media-source',
Object.keys(Media.options).map(description => m('option', description)),
Object.keys(Media.videoOptions).map(description => m('option', description)),
), ),
m('label', m('input#mute-check', {type: 'checkbox'}), 'mute'),
) )
} }
else { else {

Loading…
Cancel
Save