---
"@context": https://schema.org
"@type": TechArticle
"@id": https://www.twilio.com/docs/video/node#article
headline: Video Media SDK for Node.js overview
description: Learn how the Video Media SDK for Node.js gives server-side apps direct access to raw audio and video frames in a Twilio Video Room.
url: https://www.twilio.com/docs/video/node
inLanguage: en
dateModified: 2026-09-15T15:39:36.000Z
author:
  "@type": Organization
  name: Twilio Developer Education Team
publisher:
  "@type": Organization
  name: Twilio
---

# Video Media SDK for Node.js overview

> \[!IMPORTANT]
>
> The Video Media SDK for Node.js has been released as a Public Beta product. Before Twilio declares this product as Generally Available, the information contained in this document might change. Twilio might implement additional features or change others. No [Twilio SLA][sla] covers Public Beta products.

[sla]: https://help.twilio.com/articles/115002413087-Twilio-Beta-product-support

The Video Media SDK for Node.js provides a server-side SDK for Twilio Video [Group Rooms][vRoom] with raw media frame access. It lets a Node.js process join a Room and push and receive media frames. A media frame includes the decoded video, audio, and data track messages that flow through the Room one frame at a time. Twilio built the SDK on top of [*Web Real-Time Communication* (WebRTC)][webrtc], so it doesn't require a browser or a device.

The SDK shares the [Room][vRoom], [Participant][vPart], and [Track][vTrack] model and event names with the [Twilio Video JavaScript SDK][]. It connects with the same [Access Token][access-token] and `VideoGrant` format. If you know the JavaScript SDK, most concepts carry over.

To learn the differences between the client and server SDKs, see [Differences from the JavaScript SDK][].

The Video Media SDK for Node.js processes real-time media in a Room. It differs from the [`twilio-node` helper library][], which calls the Twilio REST APIs. You can use both in the same app. You can create an Access Token with `twilio-node` and move media with the Media SDK.

To try an example, see the [`examples` directory][] in the SDK repository.

## System requirements

The SDK ships a prebuilt native binary for the following platforms:

* Node.js version 24.0.0 or later.
* Linux running on a 64-bit system.
* macOS running on a 64-bit system.

> \[!NOTE]
>
> The native binary only works on 64-bit systems.
>
> 1. On an Apple Silicon (M-series) Mac, install Rosetta.
>    ```shell
>    /usr/sbin/softwareupdate --install-rosetta --agree-to-license
>    ```
> 2. Install [Node.js][node-install].\
>    If the installation fails, the command returns `npm error code EBADPLATFORM`.
> 3. Verify that the Node installed a 64-bit version.
>    ```shell
>    node -e "console.log(process.arch)"
>    ```
>    macOS running Apple Silicon returns `arm64`.
>
> [node-install]: https://nodejs.org/en/download

## Resources

* [Quickstart][]: Connect to a Room and push and receive frames.
* [Work with media frames][]: Understand the I420 video and PCM audio frame formats.
* [Differences from the JavaScript SDK][]: See what changes when you move to the server.
* [API Reference][]: Browse the full Node.js API reference.
* [Changelog][]: Review changes in each release.
* [SDK repository][]: Read the source and file issues.

[`examples` directory]: https://github.com/twilio/twilio-video-node/tree/main/examples

[`twilio-node` helper library]: https://github.com/twilio/twilio-node

[API Reference]: https://twilio.github.io/twilio-video-node/docs/latest/

[Changelog]: https://github.com/twilio/twilio-video-node/blob/main/CHANGELOG.md

[Differences from the JavaScript SDK]: /docs/video/node-differences-from-javascript-sdk

[Quickstart]: /docs/video/node-getting-started

[SDK repository]: https://github.com/twilio/twilio-video-node

[Twilio Video JavaScript SDK]: /docs/video/javascript

[vPart]: /docs/video/api/participants

[vRoom]: /docs/video/api/rooms-resource

[vTrack]: /docs/video/api/publishedtrack

[Work with media frames]: /docs/video/node-working-with-media-frames

[WebRTC]: https://webrtc.org

[access-token]: /docs/video/node-getting-started#create-an-access-token
