***
id: 17fd5f76-0afe-4ffe-979e-2fd3d6f71b8c
title: Video
sidebar-title: Overview
position: 0
slug: /js/reference/video
max-toc-depth: 3
----------------
The Video namespace contains the classes and functions that you need to create a video conferencing application.
The [RoomSession](/docs/browser-sdk/v3/js/reference/video/room-session) class is the main interface for managing video room sessions.
## Classes
The main interface for managing video room sessions
Control devices within a room session
Manage media playback in a room session
Handle recording functionality
Manage screen sharing in a room session
*Use [RoomSessionDevice](/docs/browser-sdk/v3/js/reference/video/room-session-device) instead.*
*Use [RoomSessionScreenShare](/docs/browser-sdk/v3/js/reference/video/room-session-screen-share) instead.*
## Functions
### ~~createRoomObject~~
* `Const` **createRoomObject**(`roomOptions`): `Promise`
Use [RoomSession](/docs/browser-sdk/v3/js/reference/video/room-session) instead.
Using Video.createRoomObject() you can create a `RoomObject` to join a room.
#### Parameters
| Name | Type | Description |
| :-------------------------- | :------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------- |
| `applyLocalVideoOverlay?` | `boolean` | Whether to apply the local-overlay on top of your video. Default: `true`. |
| `audio?` | `boolean` \| `MediaTrackConstraints` | Audio constraints to use when joining the room. Default: `true`. |
| `autoJoin?` | `boolean` | Whether to automatically join the room session. |
| `iceServers?` | `RTCIceServer[]` | List of ICE servers. |
| `logLevel?` | `"trace"` \| `"debug"` \| `"info"` \| `"warn"` \| `"error"` \| `"silent"` | Logging level. |
| `project` | `string` | SignalWire project id, e.g. `a10d8a9f-2166-4e82-56ff-118bc3a4840f`. |
| `rootElementId?` | `string` | Id of the HTML element in which to display the video stream. |
| `speakerId?` | `string` | Id of the speaker device to use for audio output. If undefined, picks a default speaker. |
| `stopCameraWhileMuted?` | `boolean` | Whether to stop the camera when the member is muted. Default: `true`. |
| `stopMicrophoneWhileMuted?` | `boolean` | Whether to stop the microphone when the member is muted. Default: `true`. |
| `token` | `string` | SignalWire project token, e.g. `PT9e5660c101cd140a1c93a0197640a369cf5f16975a0079c9`. |
| `video?` | `boolean` \| `MediaTrackConstraints` | Video constraints to use when joining the room. Default: `true`. |
#### Returns
`Promise`
#### Example
With an HTMLDivElement with id="root" in the DOM.
```js
//
try {
const roomObj = await Video.createRoomObject({
token: "",
rootElementId: "root"
});
roomObj.join();
} catch (error) {
console.error("Error", error);
}
```
***
### ~~joinRoom~~
* `Const` **joinRoom**(`roomOptions`): `Promise`
Use [RoomSession](/docs/browser-sdk/v3/js/reference/video/room-session) instead.
Using Video.joinRoom() you can automatically join a room.
#### Parameters
| Name | Type | Description |
| :-------------------------- | :------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------- |
| `applyLocalVideoOverlay?` | `boolean` | Whether to apply the local-overlay on top of your video. Default: `true`. |
| `audio?` | `boolean` \| `MediaTrackConstraints` | Audio constraints to use when joining the room. Default: `true`. |
| `autoJoin?` | `boolean` | Whether to automatically join the room session. |
| `iceServers?` | `RTCIceServer[]` | List of ICE servers. |
| `logLevel?` | `"trace"` \| `"debug"` \| `"info"` \| `"warn"` \| `"error"` \| `"silent"` | Logging level. |
| `project` | `string` | SignalWire project id, e.g. `a10d8a9f-2166-4e82-56ff-118bc3a4840f`. |
| `rootElementId?` | `string` | Id of the HTML element in which to display the video stream. |
| `speakerId?` | `string` | Id of the speaker device to use for audio output. If undefined, picks a default speaker. |
| `stopCameraWhileMuted?` | `boolean` | Whether to stop the camera when the member is muted. Default: `true`. |
| `stopMicrophoneWhileMuted?` | `boolean` | Whether to stop the microphone when the member is muted. Default: `true`. |
| `token` | `string` | SignalWire project token, e.g. `PT9e5660c101cd140a1c93a0197640a369cf5f16975a0079c9`. |
| `video?` | `boolean` \| `MediaTrackConstraints` | Video constraints to use when joining the room. Default: `true`. |
#### Returns
`Promise`
#### Example
With an HTMLDivElement with id="root" in the DOM.
```js
//
try {
const roomObj = await Video.joinRoom({
token: "",
rootElementId: "root",
});
// You have joined the room..
} catch (error) {
console.error("Error", error);
}
```