{"id":42118178,"url":"https://github.com/zoom/rtms-quickstart-js","last_synced_at":"2026-01-26T14:12:34.824Z","repository":{"id":322696106,"uuid":"1003270713","full_name":"zoom/rtms-quickstart-js","owner":"zoom","description":"A quickstart for the RTMS Node.JS SDK","archived":false,"fork":false,"pushed_at":"2025-11-25T21:40:57.000Z","size":22,"stargazers_count":0,"open_issues_count":0,"forks_count":4,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-29T02:32:29.054Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zoom.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-16T22:26:53.000Z","updated_at":"2025-11-25T21:41:02.000Z","dependencies_parsed_at":null,"dependency_job_id":"d4621e01-0c74-42a1-83fd-0a8cccc08c2f","html_url":"https://github.com/zoom/rtms-quickstart-js","commit_stats":null,"previous_names":["zoom/rtms-quickstart-js"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zoom/rtms-quickstart-js","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zoom%2Frtms-quickstart-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zoom%2Frtms-quickstart-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zoom%2Frtms-quickstart-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zoom%2Frtms-quickstart-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zoom","download_url":"https://codeload.github.com/zoom/rtms-quickstart-js/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zoom%2Frtms-quickstart-js/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28780341,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T13:55:28.044Z","status":"ssl_error","status_checked_at":"2026-01-26T13:55:26.068Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-26T14:12:34.154Z","updated_at":"2026-01-26T14:12:34.818Z","avatar_url":"https://github.com/zoom.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 RTMS Quickstart\n\nThis simple app demonstrates integration with the [Zoom Realtime Media Streams SDK](https://www.npmjs.com/package/@zoom/rtms) for Node.js.\n\n[![npm](https://img.shields.io/npm/v/@zoom/rtms)](https://www.npmjs.com/package/@zoom/rtms)\n[![docs](https://img.shields.io/badge/docs-online-blue)](https://zoom.github.io/rtms/js/)\n\n## 📋 Setup\n\nThe SDK is already included in package dependencies. Install other dependencies:\n\n```bash\nnpm install\n```\n\n## ⚙️ Configuration\n\nCopy the example environment file and fill in your credentials:\n\n```bash\ncp .env.example .env\n```\n\nSet your Zoom OAuth credentials:\n```bash\nZM_RTMS_CLIENT=your_client_id\nZM_RTMS_SECRET=your_client_secret\n```\n\n## 🏃‍♂️ Running the App\n\nStart the application:\n\n```bash\nnpm start\n```\n\nFor webhook testing with ngrok:\n\n```bash\nngrok http 8080\n```\n\nUse the generated ngrok URL as your Zoom webhook endpoint. Then, start a meeting to see your data!\n\n## 🎯 Basic Usage\n\nHere's how you can implement the SDK yourself. \n\n### Import the SDK\n\n**ES Modules:**\n```javascript\nimport rtms from \"@zoom/rtms\";\n```\n\n**CommonJS:**\n```javascript\nconst rtms = require('@zoom/rtms').default;\n```\n\n### Two Usage Patterns\n\nThe SDK supports two approaches for connecting to meetings:\n\n#### 1. 🏢 Client-Based Approach (Multiple Meetings)\n\nUse this for handling multiple concurrent meetings:\n\n```javascript\n// Create clients for each meeting\nconst client = new rtms.Client();\n\n// Set up callbacks\nclient.onAudioData((buffer, size, timestamp, metadata) =\u003e {\n  console.log(`🎵 Audio from ${metadata.userName}: ${size} bytes`);\n});\n\nclient.onVideoData((buffer, size, timestamp, metadata) =\u003e {\n  console.log(`📹 Video from ${metadata.userName}: ${size} bytes`);\n});\n\nclient.onTranscriptData((buffer, size, timestamp, metadata) =\u003e {\n  const text = buffer.toString('utf8');\n  console.log(`💬 ${metadata.userName}: ${text}`);\n});\n\n// Join the meeting\nclient.join({\n  meeting_uuid: \"meeting-uuid\",\n  rtms_stream_id: \"stream-id\", \n  server_urls: \"wss://rtms.zoom.us\"\n});\n```\n\n#### 2. 🌐 Global Singleton Approach (Single Meeting)\n\nUse this for simple single-meeting applications:\n\n```javascript\n// Set up global callbacks\nrtms.onAudioData((buffer, size, timestamp, metadata) =\u003e {\n  console.log(`🎵 Audio from ${metadata.userName}: ${size} bytes`);\n});\n\nrtms.onTranscriptData((buffer, size, timestamp, metadata) =\u003e {\n  const text = buffer.toString('utf8');\n  console.log(`💬 ${metadata.userName}: ${text}`);\n});\n\n// Join the meeting\nrtms.join({\n  meeting_uuid: \"meeting-uuid\",\n  rtms_stream_id: \"stream-id\",\n  server_urls: \"wss://rtms.zoom.us\"\n});\n```\n\n## 🪝 Webhook Integration\n\nSet up webhook handling to automatically connect when meetings start:\n\n```javascript\n// Listen for Zoom webhook events\nrtms.onWebhookEvent(({ event, payload }) =\u003e {\n  if (event === \"meeting.rtms_started\") {\n    const client = new rtms.Client();\n    \n    // Configure callbacks\n    client.onAudioData((buffer, size, timestamp, metadata) =\u003e {\n      // Process audio data\n    });\n    \n    // Join using webhook payload\n    client.join(payload);\n  }\n});\n```\n\n## 📊 Media Parameter Configuration\n\nConfigure audio, video, and deskshare processing parameters before joining:\n\n### 🎵 Audio Parameters\n\n```javascript\nclient.setAudioParams({\n  contentType: rtms.AudioContentType.RAW_AUDIO,\n  codec: rtms.AudioCodec.OPUS,\n  sampleRate: rtms.AudioSampleRate.SR_16K,\n  channel: rtms.AudioChannel.STEREO,\n  dataOpt: rtms.AudioDataOption.AUDIO_MIXED_STREAM,\n  duration: 20,     // 20ms frames\n  frameSize: 640    // 16kHz * 2 channels * 20ms\n});\n```\n\n### 📹 Video Parameters\n\n```javascript\nclient.setVideoParams({\n  contentType: rtms.VideoContentType.RAW_VIDEO,\n  codec: rtms.VideoCodec.H264,\n  resolution: rtms.VideoResolution.HD,\n  dataOpt: rtms.VideoDataOption.VIDEO_SINGLE_ACTIVE_STREAM,\n  fps: 30\n});\n```\n\n### 🖥️ Deskshare Parameters\n\n```javascript\nclient.setDeskshareParams({\n  contentType: rtms.VideoContentType.RAW_VIDEO,\n  codec: rtms.VideoCodec.H264,\n  resolution: rtms.VideoResolution.FHD,\n  dataOpt: rtms.VideoDataOption.VIDEO_SINGLE_ACTIVE_STREAM,\n  fps: 15\n});\n```\n\n## 📞 Available Callbacks\n\n- `onJoinConfirm(reason)` - ✅ Join confirmation\n- `onSessionUpdate(op, sessionInfo)` - 🔄 Session state changes  \n- `onUserUpdate(op, participantInfo)` - 👥 Participant join/leave\n- `onAudioData(buffer, size, timestamp, metadata)` - 🎵 Audio data\n- `onVideoData(buffer, size, timestamp, metadata)` - 📹 Video data\n- `onTranscriptData(buffer, size, timestamp, metadata)` - 💬 Live transcription\n- `onLeave(reason)` - 👋 Meeting ended\n\n## 📚 API Reference\n\nFor complete parameter options and detailed documentation:\n\n- 🎵 **[Audio Parameters](https://zoom.github.io/rtms/js/interfaces/AudioParameters.html)** - Complete audio configuration options\n- 📹 **[Video Parameters](https://zoom.github.io/rtms/js/interfaces/VideoParameters.html)** - Complete video configuration options  \n- 🖥️ **[Deskshare Parameters](https://zoom.github.io/rtms/js/interfaces/VideoParameters.html)** - Complete deskshare configuration options\n- 📖 **[Full API Documentation](https://zoom.github.io/rtms/js/)** - Complete SDK reference","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzoom%2Frtms-quickstart-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzoom%2Frtms-quickstart-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzoom%2Frtms-quickstart-js/lists"}