{"id":13908751,"url":"https://github.com/Eyevinn/wrtc-egress","last_synced_at":"2025-07-18T08:31:34.921Z","repository":{"id":58256204,"uuid":"530552668","full_name":"Eyevinn/wrtc-egress","owner":"Eyevinn","description":"Server endpoint NPM library for standardized WebRTC based streaming","archived":false,"fork":false,"pushed_at":"2025-04-16T10:33:14.000Z","size":342,"stargazers_count":10,"open_issues_count":4,"forks_count":2,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-07-07T00:04:12.492Z","etag":null,"topics":["library"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Eyevinn.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2022-08-30T07:51:26.000Z","updated_at":"2025-05-11T13:51:55.000Z","dependencies_parsed_at":"2024-11-09T10:36:02.970Z","dependency_job_id":"a22200b4-e275-4251-b161-f1dbdada030e","html_url":"https://github.com/Eyevinn/wrtc-egress","commit_stats":{"total_commits":37,"total_committers":4,"mean_commits":9.25,"dds":"0.21621621621621623","last_synced_commit":"1515ce2a381218605b6261999f399731a968baae"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/Eyevinn/wrtc-egress","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eyevinn%2Fwrtc-egress","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eyevinn%2Fwrtc-egress/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eyevinn%2Fwrtc-egress/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eyevinn%2Fwrtc-egress/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Eyevinn","download_url":"https://codeload.github.com/Eyevinn/wrtc-egress/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eyevinn%2Fwrtc-egress/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265728814,"owners_count":23818729,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["library"],"created_at":"2024-08-06T23:02:57.631Z","updated_at":"2025-07-18T08:31:34.822Z","avatar_url":"https://github.com/Eyevinn.png","language":"TypeScript","funding_links":[],"categories":["HarmonyOS"],"sub_categories":["Windows Manager"],"readme":"# Standardized WebRTC Egress Endpoint Library\n\n[![Badge OSC](https://img.shields.io/badge/Evaluate-24243B?style=for-the-badge\u0026logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMTIiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl8yODIxXzMxNjcyKSIvPgo8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI3IiBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjIiLz4KPGRlZnM%2BCjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl8yODIxXzMxNjcyIiB4MT0iMTIiIHkxPSIwIiB4Mj0iMTIiIHkyPSIyNCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjQzE4M0ZGIi8%2BCjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzREQzlGRiIvPgo8L2xpbmVhckdyYWRpZW50Pgo8L2RlZnM%2BCjwvc3ZnPgo%3D)](https://app.osaas.io/browse/eyevinn-wrtc-egress)\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Slack](http://slack.streamingtech.se/badge.svg)](http://slack.streamingtech.se)\n\nServer endpoint for standardized WebRTC based streaming. Currently supports the following egress / playback protocol:\n- WHPP: [WebRTC HTTP Playback Protocol](https://github.com/Eyevinn/webrtc-http-playback-protocol/blob/master/webrtc-http-playback-protocol.md)\n- WHEP: [WebRTC HTTP Egress Protocol](https://datatracker.ietf.org/doc/draft-murillo-whep/)\n\nAnd support for the following SFUs:\n- Symphony Media Bridge (`SfuType.smb`)\n\n![Example of a setup using WHIP and WHPP](docs/webrtc_egress_endpoint.png)\n\n## Usage\n\nInstall library\n\n```\nnpm install --save @eyevinn/wrtc-egress\n```\n\n### WHPP Example\n\nUse WHPP as egress protocol and Symphony Media Bridge as SFU.\n\n```javascript\nimport { WHPPEndpoint, SfuType } from \"@eyevinn/wrtc-egress\";\n\nconst endpoint = new WHPPEndpoint({\n  port: 8001,\n  hostname: \"wrtc-edge.eyevinn.technology\",\n  prefix: \"/whpp\",\n  sfuAdapter: SfuType.smb,\n  sfuOptions: { smbUrl: \"http://localhost:8080\", apiKey: \"secret\" },\n  iceServers: [{ urls: \"stun:stun.l.google.com:19302\" }],\n});\nendpoint.listen();\n```\n\nWhen running an HTTP API for managing the channel is available at `/api/channels` by default. \n\nAccess to WHPP endpoint at `/whpp/channels`.\n\n### WHEP Example\n\nUse WHEP as egress protocol and Symphony Media Bridge as SFU.\n\n```javascript\nimport { WHEPEndpoint, SfuType } from \"@eyevinn/wrtc-egress\";\n\nconst endpoint = new WHEPEndpoint({\n  port: 8001,\n  hostname: \"wrtc-edge.eyevinn.technology\",\n  prefix: \"/whep\",\n  sfuAdapter: SfuType.smb,\n  sfuOptions: { smbUrl: \"http://localhost:8080\", apiKey: \"secret\" },\n  iceServers: [{ urls: \"stun:stun.l.google.com:19302\" }],\n});\nendpoint.listen();\n```\n\nAccess to WHEP endpoint at `/whep/channels`.\n\n## API\n\n| Resource  | HTTP Method | Description |\n| --------  | ------ | ----------- |\n| `/api/docs` | GET | Online API docs |\n| `/api/channel/:channelId` | POST | Create a new channel |\n| `/api/channel/:channelId` | DELETE | Delete a channel |\n\n## Local Development\n\nTo develop locally a `docker-compose` config exists that spins up a WHIP-endpoint and origin + egress SFU.\n\n```\ndocker-compose up\n```\n\nThen run the egress endpoint in developer mode:\n\n```\nnpm run dev\n```\n\nIf you don't have a WHIP stream you can go to https://web.whip.eyevinn.technology and enter this endpoint URL: [http://localhost:8200/api/v2/whip/sfu-broadcaster?channelId=test](https://web.whip.eyevinn.technology/?endpoint=http%3A%2F%2Flocalhost%3A8200%2Fapi%2Fv2%2Fwhip%2Fsfu-broadcaster%3FchannelId%3Dtest)\n\nTo try playback with for example WHEP you can open a browser at https://webrtc.player.eyevinn.technology and enter `http://localhost:8001/whep/channel/test` as WHEP url.\n\nOr for WHEP in a similar way https://webrtc.player.eyevinn.technology/?type=whep and enter `http://localhost:8001/whep/channel/test` as WHEP url.\n\n## Support\n\nJoin our [community on Slack](http://slack.streamingtech.se) where you can post any questions regarding any of our open source projects. Eyevinn's consulting business can also offer you:\n\n- Further development of this component\n- Customization and integration of this component into your platform\n- Support and maintenance agreement\n\nContact [sales@eyevinn.se](mailto:sales@eyevinn.se) if you are interested.\n\n## About Eyevinn Technology\n\n[Eyevinn Technology](https://www.eyevinntechnology.se) is an independent consultant firm specialized in video and streaming. Independent in a way that we are not commercially tied to any platform or technology vendor. As our way to innovate and push the industry forward we develop proof-of-concepts and tools. The things we learn and the code we write we share with the industry in [blogs](https://dev.to/video) and by open sourcing the code we have written.\n\nWant to know more about Eyevinn and how it is to work here. Contact us at work@eyevinn.se!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FEyevinn%2Fwrtc-egress","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FEyevinn%2Fwrtc-egress","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FEyevinn%2Fwrtc-egress/lists"}