{"id":19233896,"url":"https://github.com/ossrs/oryx","last_synced_at":"2025-05-15T09:05:54.930Z","repository":{"id":42667602,"uuid":"445196854","full_name":"ossrs/oryx","owner":"ossrs","description":"Oryx(SRS Stack) is an all-in-one, out-of-the-box, and open-source video solution for creating online video services, including live streaming and WebRTC, on the cloud or through self-hosting.","archived":false,"fork":false,"pushed_at":"2024-11-24T09:10:34.000Z","size":11894,"stargazers_count":646,"open_issues_count":46,"forks_count":125,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-04-14T15:02:56.150Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://ossrs.io/oryx","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/ossrs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":null,"patreon":null,"open_collective":"srs-server","ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2022-01-06T14:24:09.000Z","updated_at":"2025-04-14T08:38:51.000Z","dependencies_parsed_at":"2023-08-10T14:48:24.833Z","dependency_job_id":"89576f62-8f49-4b86-af16-ec9b299169a7","html_url":"https://github.com/ossrs/oryx","commit_stats":null,"previous_names":["ossrs/srs-stack","ossrs/srs-cloud","ossrs/oryx"],"tags_count":260,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ossrs%2Foryx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ossrs%2Foryx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ossrs%2Foryx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ossrs%2Foryx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ossrs","download_url":"https://codeload.github.com/ossrs/oryx/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254310513,"owners_count":22049468,"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":[],"created_at":"2024-11-09T16:12:15.782Z","updated_at":"2025-05-15T09:05:54.865Z","avatar_url":"https://github.com/ossrs.png","language":"JavaScript","funding_links":["https://opencollective.com/srs-server"],"categories":[],"sub_categories":[],"readme":"# ORYX\n\n[![](https://img.shields.io/twitter/follow/srs_server?style=social)](https://twitter.com/srs_server)\n[![](https://badgen.net/discord/members/bQUPDRqy79)](https://discord.gg/bQUPDRqy79)\n[![](https://ossrs.net/wiki/images/wechat-badge4.svg)](https://ossrs.net/lts/zh-cn/contact#discussion)\n[![](https://ossrs.net/wiki/images/do-btn-srs-125x20.svg)](https://marketplace.digitalocean.com/apps/srs)\n[![](https://opencollective.com/srs-server/tiers/badge.svg)](https://opencollective.com/srs-server)\n\nOryx(SRS Stack), is an all-in-one, out-of-the-box, and open-source video solution for creating \nonline video services, including live streaming and WebRTC, on the cloud or through self-hosting.\n\n\u003e Note: We renamed the project from SRS Stack to Oryx, because we only need a new name for AI assistant to identify \n\u003e SRS and SRS Stack. AI assistant is confused with SRS and SRS Stack.\n\nOryx makes it easy for you to create an online video service. It is made using Go, Reactjs, SRS, \nFFmpeg, and WebRTC. It supports protocols like RTMP, WebRTC, HLS, HTTP-FLV, and SRT. It offers features \nlike authentication, streaming on multiple platforms, recording, transcoding, virtual live events, \nautomatic HTTPS, and an easy-to-use HTTP Open API.\n\nOryx is built on SRS, FFmpeg, React.js, and Go, with Redis included, and integrates OpenAI services. \nIt is a media solution designed for various useful scenarios.\n\n[![](https://ossrs.io/lts/en-us/img/Oryx-5-sd.png?v=1)](https://ossrs.io/lts/en-us/img/Oryx-5-hd.png)\n\n\u003e Note: For more details on the Oryx, please visit the following [link](https://www.figma.com/file/Ju5h2DZeJMzUtx5k7D0Oak/Oryx).\n\n## Usage\n\nRun Oryx in one docker, then open http://localhost in browser:\n\n```bash\ndocker run --restart always -d -it --name oryx -v $HOME/data:/data \\\n  -p 80:2022 -p 443:2443 -p 1935:1935 -p 8000:8000/udp -p 10080:10080/udp \\\n  ossrs/oryx:5\n```\n\n\u003e Important: Remember to mount the `/data` volume to avoid losing data when the container restarts. For instance, \n\u003e if you mount `/data` to `$HOME/data`, all data will be stored in the `$HOME/data` folder. Be sure to modify this \n\u003e according to your desired directory.\n\n\u003e Important: To use WebRTC WHIP in a browser, avoid using localhost or 127.0.0.1. Instead, use a private IP (e.g., https://192.168.3.85), \n\u003e a public IP (e.g., https://136.12.117.13), or a domain (e.g., https://your-domain.com). To set up HTTPS, \n\u003e refer to [this post](https://blog.ossrs.io/how-to-secure-srs-with-lets-encrypt-by-1-click-cb618777639f).\n\n\u003e Note: In China, use `registry.cn-hangzhou.aliyuncs.com/ossrs/oryx:5` to accelerate the Docker pull process \n\u003e and ensure the proper language is set.\n\nThe ports used for Oryx:\n\n* `80/tcp`: The HTTP port, you can also use `2022` instead, such as `-p 2022:2022` etc.\n* `443/tcp`: The HTTPS port, you can also use `2443` instead, such as `-p 2443:2443` etc.\n* `1935/tcp`: The RTMP port, to support publish stream by RTMP to Oryx.\n* `8000/udp`: The WebRTC UDP port, to transport WebRTC media data like RTP packets.\n* `10080/udp`: The SRT UDP port, to support publish stream via SRT protocol.\n\nYou have the option to modify the volumes for Oryx and direct them to different directories.\n\n* `/data` The global data directory.\n    * `.well-known` The directory for Let's Encrypt ACME challenge.\n    * `config` The .env for password, srs/redis/nginx/prometheus config, and SSL files.\n    * `dvr` The dvr storage directory, save dvr files.\n    * `lego` The LEGO Let's Encrypt ACME challenge directory.\n    * `record` The record storage directory, save record files.\n    * `redis` The redis data directory, the publish secret and record configuration.\n    * `signals` The signals storage directory, save signal files.\n    * `upload` The upload storage directory, save upload files.\n    * `vlive` The storage directory for virtual live, save video files.\n    * `transcript` The storage directory for transcription, save transcription files.\n    * `nginx-cache` The storage directory for nginx cache, save cache files.\n    * `srs-s3-bucket` The mount directory for AWS S3 compatible storage.\n\nYou can use environment variables to modify the settings.\n\n* `MGMT_PASSWORD`: The mgmt administrator password.\n* `REACT_APP_LOCALE`: The i18n config for ui, `en` or `zh`, default to `en`.\n\n\u003e Note: The `MGMT_PASSWORD` is also saved in `/data/config/.env`, you can modify it by yourself.\n\nTo access additional environment variables, please refer to the [Environments](DEVELOPER.md#environments) section.\n\n## Sponsor\n\nWould you like additional assistance from us? By becoming a sponsor or backer of SRS, we can provide you\nwith the support you need:\n\n* Backer: $5 per month, online text chat support through Discord.\n* Sponsor: $100 per month, online meeting support, 1 meeting per month in 1 hour.\n\nPlease visit [OpenCollective](https://opencollective.com/srs-server) to become a backer or sponsor, and send\nus a direct message on [Discord](https://discord.gg/bQUPDRqy79). We are currently providing support to the \ndevelopers listed below:\n\n[![](https://opencollective.com/srs-server/backers.svg?width=800\u0026button=false)](https://opencollective.com/srs-server)\n\nWe at SRS aim to establish a non-profit, open-source community that assists developers worldwide in creating\nyour own high-quality streaming and RTC platforms to support your businesses.\n\n## FAQ\n\n1. [English FAQ](https://ossrs.io/lts/en-us/faq-oryx)\n1. [中文 FAQ](https://ossrs.net/lts/zh-cn/faq-oryx)\n\n## Tutorials\n\n- [x] Getting Started: [Blog](https://blog.ossrs.io/how-to-setup-a-video-streaming-service-by-1-click-e9fe6f314ac6), [EN](https://ossrs.io/lts/en-us/docs/v6/doc/getting-started-stack), [CN](https://ossrs.net/lts/zh-cn/docs/v5/doc/getting-started-stack).\n- [x] Support WordPress Plugin: [Blog](https://blog.ossrs.io/publish-your-srs-livestream-through-wordpress-ec18dfae7d6f), [EN](https://ossrs.io/lts/en-us/blog/WordPress-Plugin), [CN](https://ossrs.net/lts/zh-cn/blog/WordPress-Plugin) or [WordPress Plugin](https://wordpress.org/plugins/srs-player).\n- [x] Support Automatic HTTPS: [Blog](https://blog.ossrs.io/how-to-secure-srs-with-lets-encrypt-by-1-click-cb618777639f), [EN](https://ossrs.io/lts/en-us/blog/Oryx-Tutorial), [CN](https://ossrs.net/lts/zh-cn/blog/Oryx-HTTPS).\n- [x] Support aaPanel to install on any linux: [Blog](https://blog.ossrs.io/how-to-setup-a-video-streaming-service-by-aapanel-9748ae754c8c), [EN](https://ossrs.io/lts/en-us/blog/BT-aaPanel), [CN](https://ossrs.net/lts/zh-cn/blog/BT-aaPanel).\n- [x] Support DVR to local disk: [Blog](https://blog.ossrs.io/how-to-record-live-streaming-to-mp4-file-2aa792c35b25), [EN](https://ossrs.io/lts/en-us/blog/Record-Live-Streaming), [CN](https://mp.weixin.qq.com/s/axN_TPo-Gk_H7CbdqUud6g).\n- [x] Support Virtual Live Streaming: [CN](https://mp.weixin.qq.com/s/I0Kmxtc24txpngO-PiR_tQ).\n- [x] Support Stream IP Camera: [Blog](https://blog.ossrs.io/easily-stream-your-rtsp-ip-camera-to-youtube-twitch-or-facebook-c078db917149), [EN](http://ossrs.io/lts/en-us/blog/Stream-IP-Camera-Events), [CN](https://ossrs.net/lts/zh-cn/blog/Stream-IP-Camera-Events).\n- [x] Support build small [HLS deliver CDN](https://github.com/ossrs/oryx/tree/main/scripts/nginx-hls-cdn) by Nginx.\n- [x] Support Live Streaming: [CN](https://mp.weixin.qq.com/s/AKqVWIdk3SBD-6uiTMliyA).\n- [x] Support Realtime SRT Streaming: [CN](https://mp.weixin.qq.com/s/HQb3gLRyJHHu56pnyHerxA).\n- [x] Support DVR to Tencent Cloud Storage or VoD: [CN](https://mp.weixin.qq.com/s/UXR5EBKZ-LnthwKN_rlIjg).\n- [x] Support Typecho Plugin: [CN](https://github.com/ossrs/Typecho-Plugin-SrsPlayer).\n- [x] Support live stream transcoding: [Blog](https://blog.ossrs.io/efficient-live-streaming-transcoding-for-reducing-bandwidth-and-saving-costs-39bd001af02d), [EN](https://ossrs.io/lts/en-us/blog/Live-Transcoding), [CN](https://ossrs.net/lts/zh-cn/blog/Live-Transcoding).\n- [x] Support transcription for converting speech to text: [Blog](https://blog.ossrs.io/revolutionizing-live-streams-with-ai-transcription-creating-accessible-multilingual-subtitles-1e902ab856bd), [EN](https://ossrs.io/lts/en-us/blog/live-streams-transcription), [CN](https://ossrs.net/lts/zh-cn/blog/live-streams-transcription).\n- [x] Support AI assistant for live room: [Blog](https://blog.ossrs.io/transform-your-browser-into-a-personal-voice-driven-gpt-ai-assistant-with-srs-stack-13e28adf1e18), [EN](https://ossrs.io/lts/en-us/blog/browser-voice-driven-gpt), [CN](https://ossrs.net/lts/zh-cn/blog/live-streams-transcription)\n- [x] Support video dubbing for multiple languages: [Blog](https://blog.ossrs.io/expand-your-global-reach-with-srs-stack-effortless-video-translation-and-dubbing-solutions-544e1db671c2), [EN](https://ossrs.io/lts/en-us/blog/browser-voice-driven-gpt), [CN](https://ossrs.net/lts/zh-cn/blog/live-streams-transcription)\n- [x] Support OCR for video stream: [Blog](https://blog.ossrs.io/leveraging-openai-for-ocr-and-object-recognition-in-video-streams-using-oryx-e4d575d0ca1f), [EN](https://ossrs.io/lts/en-us/blog/ocr-video-streams), [CN](https://ossrs.net/lts/zh-cn/blog/ocr-video-streams)\n\nOther more use scenarios is on the way, please read [this post](https://github.com/ossrs/srs/issues/2856#lighthouse).\n\n## Features\n\nThe features that we're developing:\n\n- [x] A mgmt support authentication and automatic updates.\n- [x] Run SRS in docker, query status by docker and SRS API.\n- [x] Support publish by RTMP/WebRTC, play by RTMP/HTTP-FLV/HLS/WebRTC.\n- [x] SRS container use docker logs `json-file` and rotate for logging.\n- [x] Support high-resolution and realtime(200~500ms) live streaming by SRT.\n- [x] Run SRS hooks in docker, to callback by SRS server.\n- [x] Support publish by SRT, play by RTMP/HTTP-FLV/HLS/WebRTC/SRT.\n- [x] Change redis port and use randomly password.\n- [x] Support integrity with tencent cloud VoD.\n- [x] Support restreaming to multiple platforms.\n- [x] Support WordPress Plugin: SrsPlayer.\n- [x] Support aaPanel to install on any linux.\n- [x] Support DVR to local disk.\n- [x] Support upgrade to latest version manually.\n- [x] Support HTTPS by let's encrypt with LEGO.\n- [x] Support virtual live streaming, covert file or other resource to live.\n- [x] Support self-host HLS CDN, to serve 10k+ viewers.\n- [x] Support Typecho Plugin: Typecho-Plugin-SrsPlayer.\n- [x] Support DVR to TencentCloud storage.\n- [x] Support pull RTSP from IP Camera and stream to YouTube/Twitch/Facebook.\n- [x] Support live streaming transcoding by FFmpeg, see [#2869](https://github.com/ossrs/srs/issues/2869).\n- [x] Support transcription for converting speech to text.\n- [x] Support AI assistant for live room.\n- [x] Support video dubbing for multiple languages.\n- [ ] Support limit the streaming duration to limit the fee.\n- [ ] Support GB28181 by SRS 5.0 container.\n- [ ] Support WebRTC face to face chat, see [#2857](https://github.com/ossrs/srs/issues/2857).\n- [ ] Support WebRTC video chat room, see [#2924](https://github.com/ossrs/srs/issues/2924).\n- [ ] Support a set of tools for developer, see [#2891](https://github.com/ossrs/srs/issues/2891).\n- [ ] Collect logs of mgmt and containers together.\n- [ ] Stop, restart and upgrade containers.\n- [ ] Support logrotate to manage the logs.\n- [ ] Enhance prometheus API with authentication.\n- [ ] Integrate with prometheus and node-exporter.\n\n## License\n\nOryx is an open-source project, licensed under the [MIT](https://spdx.org/licenses/MIT.html) license.\n\nWe also used the following open-source projects:\n\n* [FFmpeg](https://ffmpeg.org/): A complete, cross-platform solution to record, convert and stream audio and video.\n* [Redis](https://redis.io/): Redis is an in-memory data store used by millions of developers as a cache, vector database, document database, streaming engine, and message broker.\n* [youtube-dl](https://github.com/ytdl-org/youtube-dl): Command-line program to download videos from YouTube.com and other video sites.\n\nOther frameworks we used:\n\n* [Reactjs](https://react.dev/): The library for web and native user interfaces.\n* [Go](https://golang.org/): Build simple, secure, scalable systems with Go.\n\n## Developer\n\nFor development, please refer to the [Environments](DEVELOPER.md) about the API and architecture.\n\n2022.11\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fossrs%2Foryx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fossrs%2Foryx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fossrs%2Foryx/lists"}