You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Once you know what devices are available to use you can set default devices for microphone, speaker, and camera. If client defaults aren't set, the Communication Services SDK uses operating system defaults.
38
+
Once you know what devices are available to use, you can set default devices for microphone, speaker, and camera. If client defaults aren't set, the Communication Services SDK uses operating system defaults.
Each `CallAgent` can choose its own microphone and speakers on its associated `DeviceManager`. It is recommended that different `CallAgents` use different microphones and speakers. They should not share the same microphones nor speakers. If sharing happens, then Microphone User Facing Diagnostics may be triggered and the microphone stops working depending on the browser / os.
82
+
Each `CallAgent` can choose its own microphone and speakers on its associated `DeviceManager`. It's recommended that different `CallAgents` use different microphones and speakers. They shouldn't share the same microphones nor speakers. If sharing happens, then Microphone User Facing Diagnostics might be triggered and the microphone stops working depending on the browser / os.
83
83
84
84
### Local video stream
85
85
86
-
To be able to send video in a call you need to create a `LocalVideoStream`object.
86
+
To be able to send video in a call, you need to create a `LocalVideoStream`object.
An application can not use the camera or microphone without permissions.
140
+
An application can’t use the camera or microphone without permissions.
141
141
You can use the deviceManager to prompt a user to grant camera and/or microphone permissions:
142
142
143
143
```js
@@ -155,7 +155,7 @@ console.log(result.video);
155
155
#### Notes
156
156
-`videoDevicesUpdated` event fires when video devices are plugging-in/unplugged.
157
157
-`audioDevicesUpdated` event fires when audio devices are plugged.
158
-
- When the DeviceManager is created, at first it doesn't know about any devices if permissions are not granted yet, so initially its device list is empty. If we then call the DeviceManager.askPermission() API, the user is prompted for device access. When the user clicks on 'allow' to grant the access the device manager learns about the devices on the system, update it's device lists and emit the 'audioDevicesUpdated' and 'videoDevicesUpdated' events. If a user refreshes the page and creates a device manager, the device manager is able to learn about devices because user has already previously granted access. It will initially it will have its device lists filled and it will not emit 'audioDevicesUpdated' nor 'videoDevicesUpdated' events.
158
+
- When the DeviceManager is created, at first it doesn't know about any devices if permissions aren't granted yet, so initially its device list is empty. If we then call the DeviceManager.askPermission() API, the user is prompted for device access. When the user selects on 'allow' to grant the access the device manager learns about the devices on the system, update it's device lists and emit the 'audioDevicesUpdated' and 'videoDevicesUpdated' events. If a user refreshes the page and creates a device manager, the device manager is able to learn about devices because user granted access previously. It has its device lists filled initially and it doesn't emit 'audioDevicesUpdated' nor 'videoDevicesUpdated' events.
159
159
- Speaker enumeration/selection isn't supported on Android Chrome, iOS Safari, nor macOS Safari.
- The flag moves to `false` in the following scenarios:
498
496
- A remote participant who is on mobile browser brings the browser app to the background.
499
497
- A remote participant or the user receiving the video has network issue that affects video quality drastically.
500
-
- A remote participant who is On macOS/iOS Safari clicks on "Pause" from their address bar.
498
+
- A remote participant who is On macOS/iOS Safari selects "Pause" from their address bar.
501
499
- A remote participant has a network disconnection.
502
-
- A remote particpant on mobile kills or terminate the browser.
503
-
- A remote particpant on mobile or desktop locks his device. This scenario applies also if the remote particpant is on a desktop computer and it goes to sleep.
500
+
- A remote participant on mobile kills or terminate the browser.
501
+
- A remote participant on mobile or desktop locks its device. This scenario applies also if the remote participant is on a desktop computer and it goes to sleep.
504
502
505
503
- The flag moves to `true` in the following scenarios:
506
-
- A remote participant whos is on mobile browser and has his browser backgrounded brings it back to foreground.
507
-
- A remote participant who is On macOS/iOS Safari clicks on "Resume" from their address bar after having paused its video.
508
-
- A remote participant has a reconnects to the network after a temporary disconnection.
509
-
- A remote participant on mobile unlock his device and return to the call on his mobile browser.
504
+
- A remote participant who is on mobile browser and has its browser backgrounded brings it back to foreground.
505
+
- A remote participant who is On macOS/iOS Safari selects on "Resume" from their address bar after having paused its video.
506
+
- A remote participant reconnects to the network after a temporary disconnection.
507
+
- A remote participant on mobile unlock its device and return to the call on its mobile browser.
510
508
511
509
- This feature improves the user experience for rendering remote video streams.
512
-
- You can display a loading spinner over the remote video stream when isReceiving flag changes to false. You don't have to do a loading spinner, you can do anything you desire, but a loading spinner is the most common usage for better user experience.
510
+
- You can display a loading spinner over the remote video stream when isReceiving flag changes to false. You don't have to implement loading spinner, but a loading spinner is the most common usage for better user experience.
- This must be done with two different `CallAgent` instances using different identities, hence the code snippet shows two call agents being used, each with its own Call object.
580
+
- This must be done with two different `CallAgent` instances using different identities. The code snippet shows two call agents being used, each with its own Call object.
583
581
- In the code example, both CallAgents are joining the same call (same call Ids). You can also join different calls with each agent and send one video on one call and a different video on the other call.
584
582
- Sending the same camera in both CallAgent, isn't supported. They must be two different cameras.
585
583
- Sending two different cameras with one CallAgent is currently not supported.
0 commit comments