{"id":26802419,"url":"https://github.com/red5pro/truetime-production","last_synced_at":"2026-02-15T07:33:28.883Z","repository":{"id":232214378,"uuid":"731778606","full_name":"red5pro/truetime-production","owner":"red5pro","description":"Red5 TrueTime MultiView Web Client for Production","archived":false,"fork":false,"pushed_at":"2023-12-15T19:20:01.000Z","size":4118,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-10-08T10:40:35.520Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HTML","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/red5pro.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}},"created_at":"2023-12-14T21:25:18.000Z","updated_at":"2024-10-05T02:30:54.000Z","dependencies_parsed_at":"2024-04-08T17:47:16.115Z","dependency_job_id":"85fbd33e-8860-4582-9f64-99863be1be36","html_url":"https://github.com/red5pro/truetime-production","commit_stats":null,"previous_names":["red5pro/truetime-production"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/red5pro/truetime-production","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/red5pro%2Ftruetime-production","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/red5pro%2Ftruetime-production/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/red5pro%2Ftruetime-production/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/red5pro%2Ftruetime-production/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/red5pro","download_url":"https://codeload.github.com/red5pro/truetime-production/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/red5pro%2Ftruetime-production/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29472880,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-15T06:58:05.414Z","status":"ssl_error","status_checked_at":"2026-02-15T06:58:05.085Z","response_time":118,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":"2025-03-29T21:18:01.883Z","updated_at":"2026-02-15T07:33:28.865Z","avatar_url":"https://github.com/red5pro.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TrueTime MultiView™ for Production\n\nWith TrueTime MultiView™ for Production, create custom displays of live streams. Switch between feeds, rely on full synchronization, and enjoy sub-400ms latency.\n\nThis is a low-latency video mixer that runs on a server, creating a dynamic combined output stream for viewers from many live input streams.\n\n## Design\n\nThe mixer consists of three parts. The **BrewMixer WebApp** serves a RESTful front end to create, modify, and destroy mixers. This is backed by the **NodeMixer Plugin** which makes up the service layer, interacting with the Red5Pro server to create and route stream data. And finally, the **Native** layer where low-level data operations occur.\n\nUser applications control the mixer using a graph-based \"RenderTree\", which allows modular video positioning and sizing as well as an audio mixing graph controlling the volume and panning of various sources.\n\n### WebApp\n\nThe BrewMixer webapp serves the RESTful BrewMixer API. Source code is provided as an example so that users can learn how to interact directly with the mixer using their own custom webapps, effectively bypassing or reimplementing the BrewMixer API.\n\nThe WebApp also includes an example controller page, `renderTreeController.html`, which shows how to construct a RenderTree in JavaScript and make calls through the REST API. The page also allows users to edit the JSON RenderTree by hand to submit to the server, for easy experimentation.\n\n### Plugin\n\nThe NodeMixer Plugin is a Red5Pro Plugin making up the service layer. It handles the interaction with Red5Pro internals to begin Brew decoding of incoming streams and to coordinate the native layer with the outbound encoder, providing raw video and audio data.\n\n### Native\n\nThe native layer performs the low-level tasks of compositing video and mixing audio. It uses OpenCV for CPU-based image compositing.\n\n## BrewMixer API\n\n[BrewMixer API documentation](doc/BrewMixer_REST_API.md) can be found separately.\n\n## How to install\n\nInstall on a standalone RedPro server using Ubuntu 22.04.\n\nIn the `red5pro/extras/` directory, find the `brewmixer/` folder. Find the `node-mixer-standalone-deploy.sh` script. Execute this script from within `red5pro/extras/brewmixer` (as present working directory).\n\nThis script installs the BrewMixer components and also performs some basic configuration steps. When the script has finished, restart your Red5Pro server (e.g., with `sudo systemctl restart red5pro`).\n\nInstallation is complete.\n\n### Install steps\n\nThe install script performed several steps, explained here. If you just wish to try out the mixer, skip ahead to **How to Test** below.\n\n#### Deploy the plugin\n\nThe plugin JAR is copied to `red5pro/plugins/`, and the native components are unzipped into `red5pro/plugins/nodemixer/`.\n\n### Deploy the webapp\n\nThe `red5pro/brewmixer/brewmixer/` folder (an exploded WAR) is copied into `red5pro/webapps/`.\n\n### Modify for standalone\n\nThe script removes the Stream Manager webapp and configures the cluster node type to `off`, disabling the Cluster Plugin. This prevents some irrelevant errors and using the `off` cluster node type rather than `auto` prevents certain cluster-only operations from occuring (and disables digest security in the BrewMixer API).\n\n## How to test\n\nAssuming you have installed on `localhost`, navigate to `http://localhost:5080/brewmixer/renderTreeController.html`\n\nNote this HTTP connection and unsecure port 5080, otherwise the page mixes unsecure content.\n\nInformation about using the [RenderTree Controller](doc/RenderTreeController.md) can be found in its own document.\n\n## Configuration\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fred5pro%2Ftruetime-production","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fred5pro%2Ftruetime-production","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fred5pro%2Ftruetime-production/lists"}