Skip to main content
Version: 1.x.x

Share Your Screen - React

Whenever any participant wants to share either the complete screen, a specific window or, a browser tab, they can simply do it with VideoSDK Meeting.

This guide will provide an overview of how to use enable and disable Screen Share in a meeting.

  1. Enable Screen Share - By using enableScreenShare() function, a participant can publish screen stream to other participants.

  2. Disable Screen Share - By using disableScreenShare() function, a participant can stop publishing screen stream to other participants.

  3. Toggle Screen Share - By using toggleScreenShare() function, a participant can start or stop publishing screen stream to other participants.

note

This page uses the following asynchronous methods. Refer to their API reference for the errors each Promise may reject with, and handle these rejections appropriately based on your use case.

Enable, Disable Screen Share​

import { useMeeting } from "@videosdk.live/react-sdk";

const MeetingView = () => {
const { enableScreenShare, disableScreenShare, toggleScreenShare } =
useMeeting();

const onPress = async () => {
// Enabling ScreenShare
try {
await enableScreenShare();
} catch (err) {
console.error("enableScreenShare failed:", err);
}

// Disabling ScreenShare
try {
await disableScreenShare();
} catch (err) {
console.error("disableScreenShare failed:", err);
}

// Toggle ScreenShare
try {
await disableScreenShare();
} catch (err) {
console.error("disableScreenShare failed:", err);
}
};

return <>...</>;
};

Events​

Events associated with enableScreenShare():

Events associated with disableScreenShare():

import { useParticipant } from "@videosdk.live/react-sdk";

function onStreamEnabled(stream) {
if(stream.kind === 'share'){
console.log("Screen Share Stream On: onStreamEnabled", stream);
}
}

function onStreamDisabled(stream) {
if(stream.kind === 'share'){
console.log("Screen Share Stream Off: onStreamDisabled", stream);
}
}

const {
displayName
...
} = useParticipant(participantId,{
onStreamEnabled,
onStreamDisabled,
...
});

import { useMeeting } from "@videosdk.live/react-sdk";


function onPresenterChanged(presenterId) {
console.log(" onPresenterChanged", presenterId);
}

const {
meetingId
...
} = useMeeting({
onPresenterChanged,
...
});

Screen Share with Audio​

To do screen share with audio, select the Share tab audio option when sharing the chrome tab as shown below.

Screen Share with Audio

After clicking Share button, you will receive a selected tab audio stream in the participant's screenShareAudioStream.

const { isLocal, screenShareStream, screenShareAudioStream, screenShareOn } =
useParticipant(presenterId);

const audioPlayer = useRef();

useEffect(() => {
if (
!isLocal &&
audioPlayer.current &&
screenShareOn &&
screenShareAudioStream
) {
const mediaStream = new MediaStream();
mediaStream.addTrack(screenShareAudioStream.track);

audioPlayer.current.srcObject = mediaStream;
audioPlayer.current.play().catch((err) => {
if (
err.message ===
"play() failed because the user didn't interact with the document first. https://goo.gl/xX8pDD"
) {
console.error("audio" + err.message);
}
});
} else {
audioPlayer.current.srcObject = null;
}
}, [screenShareAudioStream, screenShareOn, isLocal]);

return <audio autoPlay playsInline controls={false} ref={audioPlayer} />;
note

Screen Share with Audio feature is only supported while sharing chrome tab on Google Chrome browser only.

Got a Question? Ask us on discord