# Unreal Media Server

Unreal Media Server is a streaming server software created by Unreal Streaming Technologies.

## Streaming protocol support

* UMS protocol (proprietary) for streaming to Unreal Streaming Media Player on Windows OS
* WebRTC protocol for live streaming to web browsers
* WebSocket-video/mp4 protocol for live streaming to web browsers supporting Media Source Extensions (MSE)
* RTMP/RTMPT protocol for streaming to Flash Player on any Flash-enabled OS
* RTSP protocol for streaming to hardware players
* Apple Http Live Streaming for streaming to iOS and other HLS-enabled devices
* MS-WMSP protocol for streaming to Silverlight, Windows Media Player
* MS Smooth streaming protocol for streaming to Silverlight
* MPEG2-TS protocol for streaming to hardware players
* SRT protocol (MPEG2-TS over SRT) for streaming to SRT-enabled endpoints
Proprietary UMS streaming protocol is based on Microsoft DirectShow, and therefore, UMS protocol is codec-independent. UMS protocol realizes a distributed DirectShow graph where source filter resides on the server computer and renderer filter resides on the player computer; a corresponding DirectShow decoder needs to be installed at the player computer/device.
Supported file container formats: MP4, ASF, AVI, MKV, MPEG, WMV, FLV, Ogg, MP3, 3GP, MOV, other containers.
With regards to live video, Unreal Media Server acts as universal transmuxer: it receives live streams multiplexed (muxed) in different protocols/formats (WebRTC/RTSP-RTP, MS-WMSP/ASF, MPEG2-TS, UMS), demuxes (extracts) the actual elementary streams from these containers (no decoding or transcoding), and muxes (packages) it for specific player delivery. For example, it can ingest a live RTSP stream from IP camera and send it to WebRTC players; at the same time re-mux it into RTMP/FLV protocol/format for delivery to Adobe Flash Player; at the same time re-mux it to video/mp4 segments for delivery via WebSocket protocol to MSE players in web browsers; at the same time re-mux it to MPEG2-TS for delivery to Set-Top box, and at the same time send it to iOS devices with HLS protocol. Unreal Media Server is known for low latency live streaming; with UMS, WebRTC, WebSocket-video/mp4, RTMP and MPEG2-TS protocols latencies of 0.2–2 seconds can be achieved when streaming over the Internet; with Apple HLS the latency can be as low as 3 seconds.

## History

A first version of Unreal Media Server, released in October 2003, supported proprietary UMS protocol only. At that time this was the only server capable of streaming AVI files without transcoding; the first version was completely free. In the next versions additional streaming protocols such as MS-WMSP(MMS) and RTMP were added. Also, a free version introduced a limit of 15 concurrent connections and a commercial version was offered for purchase. Before version 9.0 the Server accepted live streams from proprietary encoder named Unreal Live Server only. With version 9.0 the ability of ingesting of RTSP, MPEG2-TS and MMS live streams was introduced, to support industry standard live encoders such as IP network cameras, Windows Media Encoder etc.; version 10.0 added support for Flash encoders such as FMLE. Version 10.5 added support for adaptive bitrate streaming; also, limit of concurrent connections in a free version was reduced to 10 connections. Version 11.0 added time-shifted (nDVR) playback for live broadcasts, for up to 12 hours back from real-time. Version 11.5 added "live playlist" feature allowing server-side channel switching and ad insertion. Version 12.0 added streaming via WebSockets to HTML <video> Media Source Extensions. Version 13.0 added full WebRTC support: ingesting live WebRTC streams from web browsers and sending live WebRTC streams to web browsers. Version 14.0 added VOD files streaming to HTML video element via HTTP byte-range requests. Version 15.0 added RTSP server and full SRT support (ingest and publishing).