On / Off Camera - React Native
Participants in the meeting have the ability to toggle their cameras on or off using the methods outlined below.
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.
enableWebcam()
-
By using the
enableWebcam()function of theuseMeetinghook, local participant can publish their video to other participants. -
You can only call this method when the local participant is not broadcasting video to others.
-
You can also pass a customised video track in
enableWebcam()by using Custom Video Track. -
The video stream of a participant can be accessed from the
webcamStreamproperty of theuseParticipanthook.
disableWebcam()
-
By using the
disableWebcam()function of theuseMeetinghook, the local participant can stop publishing their video to other participants. -
You can only call this method when the local participant is broadcasting video to others.
toggleWebcam()
-
By using the
toggleWebcam()function of theuseMeetinghook, local participant can start or stop publishing their video to other participants based on the current state of the camera. -
You can also pass a customised video track in
toggleWebcam()by using Custom Video Track. -
The video stream of a participant can be accessed from the
webcamStreamproperty ofuseParticipanthook.
Example
import { useMeeting } from "@videosdk.live/react-native-sdk";
import { TouchableOpacity, Text } from "react-native";
const MeetingView = () => {
//Getting the camera methods from hook
const { enableWebcam, disableWebcam, toggleWebcam } = useMeeting();
const handleEnableWebcam = async () => {
// Enabling camera
try {
await enableWebcam();
} catch (err) {
console.error("enableWebcam failed:", err);
}
};
const handleDisableWebcam = async () => {
// Disabling camera
try {
await disableWebcam();
} catch (err) {
console.error("disableWebcam failed:", err);
}
};
const handleToggleWebcam = async () => {
// Toggling webcam
try {
await toggleWebcam();
} catch (err) {
console.error("toggleWebcam failed:", err);
}
};
return (
<>
<TouchableOpacity
onPress={() => {
handleEnableWebcam();
}}
>
<Text>Enable Webcam</Text>
</TouchableOpacity>
<TouchableOpacity
onPress={() => {
handleDisableWebcam();
}}
>
<Text>Disable Webcam</Text>
</TouchableOpacity>
<TouchableOpacity
onPress={() => {
handleToggleWebcam();
}}
>
<Text>Toggle Webcam</Text>
</TouchableOpacity>
</>
);
};
To learn, how to render video in the meeting, follow this detailed guide.
Getting Participant Camera Status
- You can get the local participant's camera status from the
useMeetinghook property namedlocalWebcamOn. - If
localWebcamOnistrue, it means that the local participant's camera is currently active. If it isfalse, it means that the local participant's camera is currently disable or inactive.
import { useMeeting } from "@videosdk.live/react-native-sdk";
const MeetingView = () => {
// Get the localWebcamOn property
const { localWebcamOn } = useMeeting();
return (
<>
<Text>Local Camera is {localWebcamOn}</Text>
</>
);
};
- To get the status of any participant's camera you can use the
webcamOnproperty of theuseParticipanthook. This parameter will betrueif participant'scamera is onelse it will befalse.
import { useParticipant } from "@videosdk.live/react-native-sdk";
const ParticipantView = (participantId) => {
// Get the webcamOn property
const { webcamOn } = useParticipant(participantId);
return (
<>
<Text>Participant Camera is {webcamOn}</Text>
</>
);
};
Events associated with enableWebcam
-
Every Participant will receive a callback on
onStreamEnabled()event of theuseParticipant()hook with theStreamobject. -
Every Participant will receive a callback on
onMediaStatusChanged()event of theuseParticipant()hook with the type of media and its status.
Events associated with disableWebcam
-
Every Participant will receive a callback on
onStreamDisabled()event of theuseParticipant()hook with theStreamobject. -
Every Participant will receive a callback on
onMediaStatusChanged()event of theuseParticipant()hook with the type of media and its status.
Events associated with toggleWebcam
-
Every Participant will receive a callback on
onStreamEnabled()event of theuseParticipant()hook with theStreamobject if the video broadcasting was started. -
Every Participant will receive a callback on
onStreamDisabled()event of theuseParticipant()hook with theStreamobject if the video broadcasting was stopped. -
Every Participant will receive a callback on
onMediaStatusChanged()event of theuseParticipant()hook with the type of media and its status.
import { useParticipant } from "@videosdk.live/react-native-sdk";
const ParticipantView = (participantId) => {
//Callback for when the participant starts a stream
function onStreamEnabled(stream) {
if(stream.kind === 'video'){
console.log("Video Stream On: onStreamEnabled", stream);
}
}
//Callback for when the participant stops a stream
function onStreamDisabled(stream) {
if(stream.kind === 'video'){
console.log("Video Stream Off: onStreamDisabled", stream);
}
}
//Callback for when participants media gets changed
function onMediaStatusChanged(data) {
const { kind, newStatus} = data;
console.log("Participant Media Kind: ", kind, " newStatus: ", newStatus);
}
const {
displayName
...
} = useParticipant(participantId,{
onStreamEnabled,
onStreamDisabled,
onMediaStatusChanged
...
});
return <> Participant View </>;
}
API Reference
The API references for all the methods and events utilised in this guide are provided below.
Got a Question? Ask us on discord

