Bindings for real-time audio, video, and transcript streams from Zoom Meetings
Language | Status | Supported Platforms |
---|---|---|
Node.js | ✅ Supported | darwin-arm64, linux-x64 |
Python | 🚧 Under Development | - |
Go | 📅 Planned | - |
We are actively working to expand both language and platform support in future releases.
The RTMS SDK allows developers to:
- Connect to live Zoom meetings
- Process real-time media streams (audio, video, transcripts)
- Receive events about session and participant updates
- Build applications that interact with Zoom meetings in real-time
npm install @zoom/rtms
The Node.js package provides both class-based and singleton APIs for connecting to RTMS streams.
pip install rtms
⚠️ The Python package is under active development. Some features may be limited or experimental.
Easily respond to Zoom webhooks and connect to RTMS streams:
import rtms from "@zoom/rtms";
// CommonJS
// const rtms = require('@zoom/rtms').default;
rtms.onWebhookEvent(({event, payload}) => {
if (event !== "meeting.rtms_started") return;
const client = new rtms.Client();
client.onAudioData((data, timestamp, metadata) => {
console.log(`Received audio: ${data.length} bytes from ${metadata.userName}`);
});
client.join(payload);
});
For greater control or connecting to multiple streams simultaneously:
import rtms from "@zoom/rtms";
const client = new rtms.Client();
client.onAudioData((data, timestamp, metadata) => {
console.log(`Received audio: ${data.length} bytes`);
});
client.join({
meeting_uuid: "your_meeting_uuid",
rtms_stream_id: "your_stream_id",
server_urls: "wss://example.zoom.us",
});
When you only need to connect to a single RTMS stream:
import rtms from "@zoom/rtms";
rtms.onAudioData((data, timestamp, metadata) => {
console.log(`Received audio from ${metadata.userName}`);
});
rtms.join({
meeting_uuid: "your_meeting_uuid",
rtms_stream_id: "your_stream_id",
server_urls: "wss://rtms.zoom.us"
});
This shows the planned decorator-based API for Python (under development):
import rtms
@rtms.on_webhook_event()
def handle_webhook(payload):
if payload.get('event') != 'meeting.rtms_started':
return
client = rtms.Client()
@client.on_audio_data()
def handle_audio(buffer, size, timestamp, metadata):
print(f"Received audio: {size} bytes")
client.join(payload)
The RTMS SDK can be built from source using either Docker (recommended) or local build tools.
- Docker and Docker Compose
- Zoom RTMS C SDK files (contact Zoom for access)
# Clone the repository
git clone https://github.com/zoom/rtms.git
cd rtms
# Place your SDK library files in the lib/{arch} folder
# For linux-x64:
cp ../librtmsdk.0.2025xxxx/librtmsdk.so.0 lib/linux-x64
# For darwin-arm64 (Apple Silicon):
cp ../librtmsdk.0.2025xxxx/librtmsdk.dylib lib/darwin-arm64
# Place the include files in the proper directory
cp ../librtmsdk.0.2025xxxx/h/* lib/include
# Build and run using Docker Compose
docker compose up js # For Node.js
# or
docker compose up py # For Python (experimental)
Docker Compose provides an isolated build environment with all necessary dependencies preconfigured, making it the simplest way to build the SDK.
- Node.js (>= 22.14.0)
- Python 3.8+ with pip (for Python build)
- CMake 3.25+
- C/C++ build tools
- Zoom RTMS C SDK files (contact Zoom for access)
# Install system dependencies
apt update
apt install -y cmake python3-full python3-pip pipx
npm install -g prebuild
pip install "pybind11[global]" python-dotenv pdoc3
# Clone and set up the repository
git clone https://github.com/zoom/rtms.git
cd rtms
# Place SDK files in the appropriate lib directory
# lib/linux-x64/ or lib/darwin-arm64/
# Install project dependencies and build
npm install
npm run build:js # For Node.js (fully supported)
# or
npm run build:py # For Python (experimental)
The project includes several npm scripts for common development tasks:
# Building modules
npm run build # Build all modules
npm run build:js # Build only Node.js module
npm run build:py # Build only Python module (experimental)
# Testing
npm run test # Run all tests
npm run test:js # Run Node.js tests
npm run test:py # Run Python tests (experimental)
# Build modes
npm run debug # Switch to debug mode
npm run release # Switch to release mode (default)
npm run rtms mode # Check current build mode
These commands help you manage different aspects of the build process and testing workflow.
If you encounter issues:
- Platform Support: Verify you're using a supported platform (darwin-arm64 or linux-x64)
- SDK Files: Ensure RTMS C SDK files are correctly placed in the appropriate lib directory
- Build Mode: Try both debug and release modes (
npm run debug
ornpm run release
) - Dependencies: Verify all prerequisites are installed
This project is licensed under the MIT License - see the LICENSE.md file for details.