{"id":19568533,"url":"https://github.com/medooze/sfu","last_synced_at":"2025-04-27T02:33:02.883Z","repository":{"id":15329242,"uuid":"77909931","full_name":"medooze/sfu","owner":"medooze","description":"A future proof, experimental WebRTC VP9 SVC SFU wit end to end encryption support","archived":true,"fork":false,"pushed_at":"2022-02-22T13:01:50.000Z","size":665,"stargazers_count":221,"open_issues_count":10,"forks_count":50,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-04-04T02:14:36.180Z","etag":null,"topics":["node","nodejs","sfu","vp9-svc","webrtc"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/medooze.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-01-03T11:11:51.000Z","updated_at":"2025-01-03T18:50:52.000Z","dependencies_parsed_at":"2022-08-07T08:01:03.717Z","dependency_job_id":null,"html_url":"https://github.com/medooze/sfu","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/medooze%2Fsfu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/medooze%2Fsfu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/medooze%2Fsfu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/medooze%2Fsfu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/medooze","download_url":"https://codeload.github.com/medooze/sfu/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251080744,"owners_count":21533142,"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":["node","nodejs","sfu","vp9-svc","webrtc"],"created_at":"2024-11-11T06:05:16.621Z","updated_at":"2025-04-27T02:33:02.318Z","avatar_url":"https://github.com/medooze.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Medooze SFU \nA future proof, experimental WebRTC VP9 SVC SFU.\n\n# Motivation\nThere are already several good production ready alternatives for implementing multiconferencing on webrtc, like Jitsi, Janus or SwitchRTC SFUs and even if you need more legacy support you can try our [MCU](http://www.medooze.com/products/mcu.aspx). Our goal is to experiment and provide an early access to the functionalities that will be available in the near future that will improve drastically the performance and quality of multiconferencing services on WebRTC. \n \nDue to the experimental nature of this functionalities we will only officially support Chrome Canary to be able to access the very latest functionalities available (sometimes even running behind a flag). We don't care about interporeability with other browsers (they will eventually catch up) nor SDP legacy support.\n\n# Goal\nIt is our goal to implement only the We intent to implement support the following features:\n\n- [VP9 SVC](https://tools.ietf.org/html/draft-ietf-payload-vp9-02)\n- [RTP transport wide congestion control](https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01)\n- Sender side BitRate estimation: algorithm not decided yet candidates are [GCC](https://tools.ietf.org/html/draft-ietf-rmcat-gcc-02), [NADA](https://tools.ietf.org/html/draft-ietf-rmcat-nada-03) or [SCREAM](https://tools.ietf.org/html/draft-ietf-rmcat-scream-cc-07)\n- [RTCP reduced size] (https://tools.ietf.org/html/rfc5506)\n- Bundle only \n- No simulcast\n\nThis is a moving target as new functionalities will be available on Chrome and some others will be removed, we will update our targets appropiatelly.\n\nTo enable VP9 SVC on Chrome Canary you must use the following command line:\n\n```\nchrome.exe --force-fieldtrials=WebRTC-SupportVP9SVC/EnabledByFlag2SL3TL/\n```\n# End to end encrytpion\n\nA full version of SFrame end to end encryption is under works via insertable streams. Current implementation just uses frame counter as IV  which is then inserted in the AES-GCM encrypted frame payload for emoing all required capabilities.\n\n# Install\n\nYou just need to install all the depencencies and generate the ssl certificates:\n\n```\nnpm install \nopenssl req -sha256 -days 3650 -newkey rsa:1024 -nodes -new -x509 -keyout server.key -out server.cert\n```\n\nIf you get an error like this\n```\ngyp verb build dir attempting to create \"build\" dir: /usr/local/src/medooze/sfu/node_modules/medooze-media-server/build\ngyp ERR! configure error\ngyp ERR! stack Error: EACCES: permission denied, mkdir '/usr/local/src/medooze/sfu/node_modules/medooze-media-server/build'\n\n```\n\nYou may try instead with:\n```\nnpm install --unsafe-perm\n```\n\n# Usage\n\nIn order to run the sfu just:\n\n```\nnode index.js [ip]\n```\n\nwhere the `ip` is the ICE candidate ip address used for RTP media. To test a simple web client just browse to `https://[ip]:8000/`.\n\n# License\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmedooze%2Fsfu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmedooze%2Fsfu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmedooze%2Fsfu/lists"}