88
99'use strict' ;
1010
11- try {
12- navigator . mediaDevices . enumerateDevices ( )
13- . then ( gotSources ) ;
14- } catch ( e ) {
15- console . log ( e ) ;
16- }
17-
1811const getMediaButton = document . querySelector ( 'button#getMedia' ) ;
1912const createPeerConnectionButton = document . querySelector ( 'button#createPeerConnection' ) ;
2013const createOfferButton = document . querySelector ( 'button#createOffer' ) ;
@@ -35,16 +28,9 @@ hangupButton.onclick = hangup;
3528const offerSdpTextarea = document . querySelector ( 'div#local textarea' ) ;
3629const answerSdpTextarea = document . querySelector ( 'div#remote textarea' ) ;
3730
38- const audioSelect = document . querySelector ( 'select#audioSrc' ) ;
39- const videoSelect = document . querySelector ( 'select#videoSrc' ) ;
40-
41- audioSelect . onchange = videoSelect . onchange = getMedia ;
42-
4331const localVideo = document . querySelector ( 'div#local video' ) ;
4432const remoteVideo = document . querySelector ( 'div#remote video' ) ;
4533
46- const selectSourceDiv = document . querySelector ( 'div#selectSource' ) ;
47-
4834let localPeerConnection ;
4935let remotePeerConnection ;
5036let localStream ;
@@ -58,59 +44,16 @@ const offerOptions = {
5844 offerToReceiveVideo : 1
5945} ;
6046
61- function gotSources ( sourceInfos ) {
62- selectSourceDiv . classList . remove ( 'hidden' ) ;
63- let audioCount = 0 ;
64- let videoCount = 0 ;
65- for ( let i = 0 ; i < sourceInfos . length ; i ++ ) {
66- const option = document . createElement ( 'option' ) ;
67- option . value = sourceInfos [ i ] . deviceId ;
68- option . text = sourceInfos [ i ] . label ;
69- if ( sourceInfos [ i ] . kind === 'audioinput' ) {
70- audioCount ++ ;
71- if ( option . text === '' ) {
72- option . text = `Audio ${ audioCount } ` ;
73- }
74- audioSelect . appendChild ( option ) ;
75- } else if ( sourceInfos [ i ] . kind === 'videoinput' ) {
76- videoCount ++ ;
77- if ( option . text === '' ) {
78- option . text = `Video ${ videoCount } ` ;
79- }
80- videoSelect . appendChild ( option ) ;
81- } else {
82- console . log ( 'unknown' , JSON . stringify ( sourceInfos [ i ] ) ) ;
83- }
84- }
85- }
86-
8747async function getMedia ( ) {
8848 getMediaButton . disabled = true ;
8949
9050 if ( localStream ) {
9151 localVideo . srcObject = null ;
9252 localStream . getTracks ( ) . forEach ( track => track . stop ( ) ) ;
9353 }
94- const audioSource = audioSelect . value ;
95- console . log ( `Selected audio source: ${ audioSource } ` ) ;
96- const videoSource = videoSelect . value ;
97- console . log ( `Selected video source: ${ videoSource } ` ) ;
98-
99- const constraints = {
100- audio : {
101- optional : [ {
102- sourceId : audioSource
103- } ]
104- } ,
105- video : {
106- optional : [ {
107- sourceId : videoSource
108- } ]
109- }
110- } ;
111- console . log ( 'Requested local stream' ) ;
54+ console . log ( 'Requesting local stream' ) ;
11255 try {
113- const userMedia = await navigator . mediaDevices . getUserMedia ( constraints ) ;
56+ const userMedia = await navigator . mediaDevices . getUserMedia ( { audio : true , video : true } ) ;
11457 gotStream ( userMedia ) ;
11558 } catch ( e ) {
11659 console . log ( 'navigator.getUserMedia error: ' , e ) ;
0 commit comments