Ant Media Server
Open-core WebRTC, SRT, RTMP, and HLS media server with a REST API for broadcasts, recording, and tokens.
A Java media server whose Community Edition is Apache-2.0 and whose Enterprise Edition adds adaptive bitrate, clustering, and SDK support. Broadcasts, VoD, tokens, IP cameras, and playlists are managed through a versioned REST API that the Builder documents and ships in both editions.
- I need sub-second WebRTC playback for an auction or classroom and want to run the server myself
- I want an agent to spin up broadcasts, hand out tokens, and pull IP cameras through an API
- Two license files in the repo; GitHub shows 'other'. Community is Apache-2.0, Enterprise is not
- Adaptive bitrate, clustering, and the mobile SDKs are Enterprise-only; check the edition before promising features
- Java server with Tomcat; expect a heavier footprint than MediaMTX
Last activity Sep 3, 2026. Fit: adaptable 2, operable 3.
Adaptable: what is yours to change
Make it yours
Config only4 things to edit
Server-wide settings live in conf/red5.properties and per-application settings in webapps/<app>/WEB-INF/red5-web.properties (HLS, WebRTC, recording, tokens, webhooks). Most of these are also editable from the web panel and the REST API, so an Adopter rarely edits Java. Adding protocol behavior means forking.
- Env vars
- none
- Config files
src/main/server/conf/red5.propertiessrc/main/server/webapps/root/WEB-INF/red5-web.propertiessrc/main/server/conf/logback.xmlsrc/main/server/conf/jee-container.xml- Prompt files
- none
- Accounts you need
- antmedia.io account (Enterprise only)
Source
- github.com/ant-media/Ant-Media-Server
- Apache-2.0 (Community Edition; Enterprise under a separate license) license
- Last commit Sep 3, 2026
- 4,726 stars
Operable: what an agent can drive
Interface
OfficialAPIpublished by the builderlocal
How an agent can drive an Operable Listing, in five levels: native (built for the agent as the primary interface), official (the Builder ships an agent interface), wrapped (a third party wraps the software's API), config (an agent can only drive it by editing files), gui (screen control only). An interface is official only when it is published by the same organization that ships the software. GUI-level Listings are allowed and sorted last.
Reach
Partial coverage. 8 of 10 jobs reachable through the stated interface.
| Job | Through the interface | Evidence |
|---|---|---|
| Create, list, update, and delete broadcasts | Reachable | BroadcastRestService.java: @Path /v2/broadcasts, /create, /create-list, /list/{offset}/{size}, /{id} |
| Start and stop pulled stream sources and IP cameras | Reachable | BroadcastRestService.java: /{id}/start, /{id}/stop, /{id}/ip-camera/move, /onvif-devices |
| Turn recording on or off per stream | Reachable | BroadcastRestService.java: /{id}/recording/{recording-status} |
| Issue and validate playback or publish tokens | Reachable | BroadcastRestService.java: /{id}/token, /{id}/tokens, /{id}/jwt-token, /validate-token |
| Add RTMP endpoints to republish a stream | Reachable | BroadcastRestService.java: /{id}/endpoint |
| Manage VoD files and convert HLS to MP4 | Reachable | VoDRestService.java; BroadcastRestService: /{hls_filename}/hls-to-mp4 |
| Read broadcast and WebRTC statistics | Reachable | BroadcastRestService.java: /{id}/broadcast-statistics, /total-broadcast-statistics, /webrtc-send-low-level-stats |
| Manage playlists and subscribers | Reachable | BroadcastRestService.java: /playlists/{id}/next, /{id}/subscribers |
| Adaptive bitrate transcoding | Not reachable | README: Enterprise feature; not in Community Edition |
| Cluster across servers | Not reachable | ClusterRestService exists but clustering is an Enterprise feature per README |
Code stack
- Languages
- Java
- Frameworks
- Red5Tomcatffmpeg
- Package manager
- maven
- Database
- MapDBMongoDB (optional)
- Hosting target
- LinuxDockerKubernetesAWS MarketplaceAzure Marketplace
- Built
- Human-written (recorded, never ranked)
Evidence and confidence
| Field | Where it was seen | Confidence |
|---|---|---|
| formFactor | README: headless media server managed through web panel and REST API | 90% |
| executionModel | no model at runtime | 99% |
| operability | REST services in src/main/java/io/antmedia/rest published by ant-media; docs at antmedia.io/docs | 90% |
| effort | conf/red5.properties and WEB-INF/red5-web.properties exist in src/main/server; the properties keys were not read this pass | 60% |
| editions | COMMUNITY_EDITION_LICENSE is Apache-2.0 for Community Edition; README lists Enterprise free trial and marketplaces | 80% |
| active | GitHub pushedAt 2026-09-03; release ams-v3.1.0 2026-08-31 | – |
| reach | 80% |
Open questions
- Enterprise Edition pricing; antmedia.io/pricing returned 403 to the fetcher
- Confirm which red5-web.properties keys are documented for Adopters (antmedia.io docs returned 403)
- Confirm the Community versus Enterprise feature split from the current docs rather than the README summary
Sources
- antmedia.io sourcing:video-streaming:github
- github.com/ant-media/Ant-Media-Server sourcing:video-streaming:github