ov-components: Specify screen sharing options

pull/839/head
Carlos Santos 2024-08-02 11:12:37 +02:00 committed by Unknown
parent 5bf5c68da4
commit 7c1066d126
1 changed files with 18 additions and 9 deletions

View File

@ -162,15 +162,8 @@ export class ParticipantService {
* Switches the active screen share track showing a native browser dialog to select a screen or window.
*/
async switchScreenShare(): Promise<void> {
const options: ScreenShareCaptureOptions = {
audio: false,
resolution: VideoPresets.h1080.resolution,
suppressLocalAudioPlayback: true,
selfBrowserSurface: 'include',
surfaceSwitching: 'include'
};
if (this.localParticipant) {
const options = this.getScreenCaptureOptions();
const [newTrack] = await this.localParticipant.createScreenTracks(options);
if (newTrack) {
newTrack?.addListener('ended', async () => {
@ -235,7 +228,8 @@ export class ParticipantService {
*
*/
async setScreenShareEnabled(enabled: boolean): Promise<void> {
const track = await this.localParticipant?.setScreenShareEnabled(enabled);
const options = this.getScreenCaptureOptions();
const track = await this.localParticipant?.setScreenShareEnabled(enabled, options);
if (enabled && track) {
// Set all videos to normal size when a local screen is shared
this.resetRemoteStreamsToNormalSize();
@ -543,4 +537,19 @@ export class ParticipantService {
}
return new ParticipantModel(props);
}
private getScreenCaptureOptions(): ScreenShareCaptureOptions {
return {
audio: true,
video: {
displaySurface: 'browser' // Set browser tab as default options
},
systemAudio: 'include', // Include system audio as an option
resolution: VideoPresets.h1080.resolution,
contentHint: 'detail', // Optimized for detailed content, adjust based on use case
suppressLocalAudioPlayback: true,
selfBrowserSurface: 'exclude', // Avoid self capture to prevent mirror effect
surfaceSwitching: 'include' // Allow users to switch shared tab dynamically
};
}
}