{"id":26477476,"url":"https://github.com/red5pro/red5pro-webrtc-sdk","last_synced_at":"2026-03-09T10:02:45.780Z","repository":{"id":57349501,"uuid":"310688019","full_name":"red5pro/red5pro-webrtc-sdk","owner":"red5pro","description":"Red5 Pro SDK for the Web","archived":false,"fork":false,"pushed_at":"2026-02-25T20:08:50.000Z","size":1293,"stargazers_count":8,"open_issues_count":6,"forks_count":6,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-02-25T20:42:05.450Z","etag":null,"topics":["streaming","streaming-video","werbrtc","whep","whip"],"latest_commit_sha":null,"homepage":"https://www.red5.net/live-streaming-sdks/","language":"CSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/red5pro.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.md","contributing":null,"funding":null,"license":"LICENSE","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":"2020-11-06T19:27:56.000Z","updated_at":"2026-02-25T20:07:58.000Z","dependencies_parsed_at":"2023-01-29T04:16:04.074Z","dependency_job_id":"fcc71ae6-afbf-4665-80b1-920716351d2c","html_url":"https://github.com/red5pro/red5pro-webrtc-sdk","commit_stats":{"total_commits":18,"total_committers":3,"mean_commits":6.0,"dds":"0.11111111111111116","last_synced_commit":"27fb97fe11fa4a4ab903d1be8edd5a84c3b1c0cc"},"previous_names":["red5pro/red5pro-html-sdk"],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/red5pro/red5pro-webrtc-sdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/red5pro%2Fred5pro-webrtc-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/red5pro%2Fred5pro-webrtc-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/red5pro%2Fred5pro-webrtc-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/red5pro%2Fred5pro-webrtc-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/red5pro","download_url":"https://codeload.github.com/red5pro/red5pro-webrtc-sdk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/red5pro%2Fred5pro-webrtc-sdk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30290932,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T02:57:19.223Z","status":"ssl_error","status_checked_at":"2026-03-09T02:56:26.373Z","response_time":61,"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":["streaming","streaming-video","werbrtc","whep","whip"],"created_at":"2025-03-20T00:47:07.357Z","updated_at":"2026-03-09T10:02:45.774Z","avatar_url":"https://github.com/red5pro.png","language":"CSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch3 align=\"center\"\u003e\n  \u003cimg src=\"assets/Red5_Truetime_black.png\" alt=\"Red5 Pro Logo\" height=\"65\" /\u003e\n\u003c/h3\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#\"\u003eQuick Start\u003c/a\u003e \u0026bull;\n  \u003ca href=\"docs/whip-client.md\"\u003ePublishing\u003c/a\u003e \u0026bull;\n  \u003ca href=\"docs/whep-client.md\"\u003eSubscribing\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n# Red5 HTML SDK\n\n\u003e The **Red5 HTML SDK** allows you to integrate live streaming video into your desktop and mobile browser.\n\n* [Important Notices](#important-notices)\n* [Installation](#installation)\n* [Quick Start](#quick-start)\n* [Usage](#usage)\n\n# Important Notices\n\nWith the `15.0.0` release of the **Red5 HTML SDK**, we have complete overhaul of its development and focus. We have decided to focus solely on **WISH** (WebRTC Ingest Signaling over HTTPS) and dropped WebSocket support previously used for signaling phase.\n\nAs such, the publishing and subscribing logic within the SDK are provided from the `WHIPClient` and `WHEPClient`, respectively.\n\nNot only does this free up resources consumed by WebSockets on the Red5 Server deployment, but also provides a _much_ lighter client-side dependency!\n\n# Installation\n\n## As Script Dependency in HTML page\n\n```html\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/red5pro-webrtc-sdk@latest/red5pro-sdk.min.js\"\u003e\u003c/script\u003e\n```\n\n... Or if you know the version:\n\n```html\n\u003cscript src=https://cdn.jsdelivr.net/npm/red5pro-webrtc-sdk@15.0.0/red5pro-sdk.min.js\"\u003e\u003c/script\u003e\n```\n\n## Using `npm` or `yarn` for you browser-based projects\n\n```sh\nnpm install --save red5pro-webrtc-sdk\n```\n\n```sh\nyarn install red5pro-webrtc-sdk\n```\n\n# Quick Start\n\nAll members exposed on the otherwise global `window.red5prosdk` if loading as a script on an HTML page are importable from the `red5pro-webrtc-sdk` module:\n\n_index.js_\n\n```js\nimport { WHIPClient, WHEPClient } from 'red5pro-webrtc-sdk'\n```\n\n## Quick Start - Standalone Server Deployment\n\nYou can sign up and download the Red5 Server to manage your own deployment at [https://account.red5.net](https://account.red5.net)! The following example demonstrate how to create a Two-Way stream (publisher and subscriber) against a standalone single Red5 Server:\n\n```html\n\u003c!doctype html\u003e\n\u003chtml\u003e\n  \u003chead\u003e\n    \u003c!-- *Recommended WebRTC Shim --\u003e\n    \u003cscript src=\"https://webrtchacks.github.io/adapter/adapter-latest.js\"\u003e\u003c/script\u003e\n  \u003c/head\u003e\n  \u003cbody\u003e\n    \u003c!-- video containers --\u003e\n    \u003c!-- publisher --\u003e\n    \u003cdiv\u003e\n      \u003cvideo id=\"red5pro-publisher\" width=\"640\" height=\"480\" muted autoplay playsinline\u003e\u003c/video\u003e\n    \u003c/div\u003e\n    \u003c!-- subscriber --\u003e\n    \u003cdiv\u003e\n      \u003cvideo id=\"red5pro-subscriber\" width=\"640\" height=\"480\" controls autoplay playsinline\u003e\u003c/video\u003e\n    \u003c/div\u003e\n    \u003c!-- Red5 HTML SDK --\u003e\n    \u003cscript src=\"https://cdn.jsdelivr.net/npm/red5pro-webrtc-sdk@latest/red5pro-sdk.min.js\"\u003e\u003c/script\u003e\n    \u003c!-- Create Pub/Sub --\u003e\n    \u003cscript\u003e\n      ((red5prosdk) =\u003e {\n        'use strict'\n\n        const { WHIPClient, WHEPClient, PublisherEventTypes } = red5prosdk\n\n        const publisher = new WHIPClient()\n        const subscriber = new WHEPClient()\n        \n        const config = {\n          host: 'mydeploy.red5.net',\n          streamName: 'mystream'\n        }\n\n        const subscribe = async () =\u003e {\n          try {\n            await subscriber.init(config)\n            await subscriber.subscribe()\n          } catch (err) {\n              console.error('Could not play: ' + err)\n          }\n        }\n\n        const publish = async () =\u003e {\n          try {\n            // Once publishing, call subscribe!\n            publisher.on(PublisherEventTypes.PUBLISH_AVAILABLE, subscribe)\n            await publisher.init(config)\n            await publisher.publish()\n          } catch(err) {\n            console.error('Could not publish: ' + err)\n          }\n        }\n\n        // Start Publisher first -\u003e\n        publish()\n\n      }(window.red5prosdk))\n    \u003c/script\u003e\n  \u003c/body\u003e\n\u003c/html\u003e\n```\n\n## Quick Start - Red5 Cloud / StreamManager 2.0 Deployment\n\nYou can sign up for a Pay-As-You-Grow Cloud deployment of the Red5 Cloud infrastructure with autoscaling at [https://cloud.red5.net](https://cloud.red5.net)!\n\nThe Red5 Cloud deployment utilizes a Stream Manager for autoscaling. With the Stream Manager 2.0 Release, the `endpoint` init configuration property was introduced in the SDK to allow developers to specify the specific endpoint to proxy through on the Stream Manager.\n\n\u003e Note: You will need to know which Node Group you intend to target for publishing and subscribing.\n\n```html\n\u003c!doctype html\u003e\n\u003chtml\u003e\n  \u003chead\u003e\n    \u003c!-- *Recommended WebRTC Shim --\u003e\n    \u003cscript src=\"https://webrtchacks.github.io/adapter/adapter-latest.js\"\u003e\u003c/script\u003e\n  \u003c/head\u003e\n  \u003cbody\u003e\n    \u003c!-- video containers --\u003e\n    \u003c!-- publisher --\u003e\n    \u003cdiv\u003e\n      \u003cvideo id=\"red5pro-publisher\" width=\"640\" height=\"480\" muted autoplay playsinline\u003e\u003c/video\u003e\n    \u003c/div\u003e\n    \u003c!-- subscriber --\u003e\n    \u003cdiv\u003e\n      \u003cvideo id=\"red5pro-subscriber\" width=\"640\" height=\"480\" controls autoplay playsinline\u003e\u003c/video\u003e\n    \u003c/div\u003e\n    \u003c!-- Red5 HTML SDK --\u003e\n    \u003cscript src=\"https://cdn.jsdelivr.net/npm/red5pro-webrtc-sdk@latest/red5pro-sdk.min.js\"\u003e\u003c/script\u003e\n    \u003c!-- Create Pub/Sub --\u003e\n    \u003cscript\u003e\n      \u003cscript\u003e\n      ((red5prosdk) =\u003e {\n        'use strict'\n\n        const host = 'my-deployment.cloud.red5.net'\n        const nodeGroup = 'my-node-group'\n        const streamName = 'my-stream-name'\n\n        const { WHIPClient, WHEPClient, PublisherEventTypes } = red5prosdk\n        const publisher = new WHIPClient()\n        const subscriber = new WHEPClient()\n\n        const config = {\n          streamName,\n          connectionParams: {\n            nodeGroup\n          }\n        }\n\n        const subscribe = async () =\u003e {\n          try {\n            await subscriber.init({\n              ...config,\n              endpoint: `https://${host}/as/v1/proxy/whep/live/${streamName}`\n            })\n            await subscriber.subscribe()\n          } catch (err) {\n              console.error('Could not play: ' + err)\n          }\n        }\n\n        const publish = async () =\u003e {\n          try {\n            // Once publishing, call subscribe!\n            publisher.on(PublisherEventTypes.PUBLISH_START, subscribe)\n            await publisher.init({\n              ...config,\n              endpoint: `https://${host}/as/v1/proxy/whip/live/${streamName}`\n            })\n            await publisher.publish()\n          } catch(err) {\n            console.error('Could not publish: ' + err)\n          }\n        }\n\n        // Start Publisher first -\u003e\n        publish()\n\n      }(window.red5prosdk))\n    \u003c/script\u003e\n  \u003c/body\u003e\n\u003c/html\u003e\n```\n\n# Usage\n\nThe [WHIPClient](docs/whip-client.md) and [WHEPClient](docs/whep-client.md) - along with the [Native HLSSubscriber](docs/hls-subscriber.md) - each take an initialization configuration in order to perform the signaling and negotiation process with the Red5 Server to start publishing or subscribing to a stream, respectively.\n\nThe initialization configurations and relevant APIs available for each client can be found in their respective documentation found in this repo:\n\n* [WHIPClient](docs/whip-client.md)\n* [WHEPClient](docs/whep-client.md)\n* [HLSSubscriber](docs/hls-subscriber.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fred5pro%2Fred5pro-webrtc-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fred5pro%2Fred5pro-webrtc-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fred5pro%2Fred5pro-webrtc-sdk/lists"}