Media Server
Architecture.

Networking overview.

Unreal Media Server supports UMS protocol for streaming to Unreal Streaming Media Player on Windows OS and MDC Live Media Player on Android and iOS; RTMP and RTMPT protocols for streaming to Flash Player on any Flash-enabled OS; MS Smooth and MS-WMSP protocols for streaming to Silverlight and Windows Media Player; Apple HTTP Live streaming (HLS) for iOS and other HLS-enabled devices; MPEG2-TS protocol for streaming to Set-Top boxes.

When the server streams via HLS, MS Smooth and MPEG2-TS protocols, the players do not connect to the server at all: they receive fragmented streams directly from web servers (HLS and MS Smooth streaming), or from UDP ports on their IP addresses (MPEG2-TS). In these cases the server doesn't know anything about players or number of concurrent viewers.
In contrary, when streaming via RTMP, MS-WMSP and UMS protocols, players initiate a direct connection to Media Server; the server can perform authentication and can keep track of concurrent players. All players connect to media server's TCP port 5119; this port can be configured.
The server supports wide range of live software and hardware encoders, accepting live streams in both push and pull modes (the only difference is which side initiates a connection). Pull-mode encoders include: RTSP software encoders and IP cameras; MS-WMSP encoders such as WME/VLC; Unreal Live Server. Push-mode encoders include: RTMP encoders such as Adobe FMLE; MPEG2-TS encoding devices; Unreal Live Server. Unreal Live Server streams to Unreal Media Server via UMS protocol over TCP and RTP(UDP) transports.


Media processing engine: the universal transmuxer.

Live content that arrives to media server via different streaming protocols, is found to be packaged in different container formats native to these streaming protocols. For example, RTMP protocol sends media encapsulated in FLV container format; MS-WMSP protocol wraps media in ASF container. Similarly, when Unreal Media Server streams recorded content, it deals with media files packaged in different container formats (MP4, FLV, ASF etc.). Regardless of whether media comes from disk (files) or from network (live), the Media Server instantly demultiplexes it into audio-video elementary streams, i.e. extracts these streams from the container. Streams remain in their original encoded form; the server does not perform any transcoding or decoding. When various players connect and ask for media, the server re-packages these streams to the container format needed by these players and sends these streams via streaming protocols supported by these players. For example, the same H.264/AAC stream, coming from live encoder via RTSP protocol and encapsulated in RTP packaging, can be served at the same time to iPADs/iPhones via HLS protocol (MPEG2-TS container); to Flash players via RTMP protocol (FLV container); and similarly to Silverlight, Unreal Media Player, STBs, via their protocol/container formats.


Supported standards and specifications.

RTMP/RTMPT Flash protocol
RTSP IETF RFC2326
H264, MPEG4 Video over RTP IETF RFC3984, IETF RFC3640
AAC, MP3 Audio over RTP ISO/IEC 14496-3, IETF RFC2250
MS-WMSP Windows Media Streaming Protocol
MPEG2-TS ISO/IEC 13818-1
Apple HLS HLS format
MS Smooth streaming Smooth streaming protocol


Streaming via UMS protocol.

Unreal Streaming Media Player and its browser plugin can play UMS streams in unicast mode over TCP, RTP(UDP) and HTTP(S) transports, and in multicast mode over RTP(UDP) transport. If TCP/UDP connection attempt is unsuccessful, the player automatically switches to HTTP transport. The player always connects directly to the Server, except HTTPS transport.
UMS streams can also be played on Android and iOS devices with MDC Live Media Player app. This mobile player supports UMS-TCP unicast mode only, and H.264/AVC1, AAC/MP3 encoded streams only.


Streaming via UMS protocol over HTTPS transport via UHttpProxy IIS extension.

When Unreal Streaming Media Player uses HTTPS transport, the request is being sent to IIS web server running our UHttpProxy extension. IIS server must also have SSL certificate installed. Players using HTTPS delivery should connect to whatever port IIS is configured to listen on; the default HTTPS port is 443. HTTPS transport provides a complete stream protection on its way from the server to the player.


Multicasting via UMS protocol.

Unreal Media Server supports simultaneous multicasting of unlimited number of live sources and virtual folders. When a first viewer connects and requests Multicast delivery of live source, the server will start multicasting. When a last viewer disconnects, multicasting is stopped. When multicasting files, administrator of Media Server must manually start and stop multicasting of virtual folder, using server configuration program.
When requesting multicast delivery, a player first connects to the server on UMS-TCP. The server authorizes this player and sends him multicast group information for this particular broadcast. The player joins this multicast group and receives media packets via UMS-RTP multicast.
Unfortunately, multicasting will not work via the Internet in most cases, since public ISPs don't allow their routers multicast delivery.


Streaming via MS-WMSP (MMSH) protocol.

Unreal Media Server supports Unicast streaming via MS-WMSP (MMSH) protocol. Live and recorded audio/video is being encapsulated into ASF container on the fly and sent as HTTP payload to any player on any OS that is capable of playing MMSH streams. Various players on Windows, MAC, Linux, Mobile devices are supported, such as Silverlight, Windows Media Player, QuickTime Player, VLC, MPlayer.


Streaming via RTMP/RTMPT protocols.

Unreal Media Server supports Unicast streaming of live sources and media files via RTMP/RTMPT protocols to Flash player. Audio/video content is being encapsulated into FLV container on the fly and sent to Flash player on any supported OS. H264, AAC and MP3 codecs are used by Unreal Live Server for Flash encoding. MKV, MP4, MP3, FLV files containing H264, AAC and MP3 content, are supported.


Streaming via Apple HLS protocol.

Apple HTTP live streaming is a technology where HLS player (such as Safari <video> tag) makes constant requests to web server to get fragmented live video stream chunks, recorded in MPEG2-TS format (.ts). Unreal Media Server supports HLS streaming of live sources by recording these chunks and updating m3u8 playlist files in specified web server folder. In addition to Unreal Media Server, you need to run a web server on your machine to serve these chunk and playlist files to HLS players. Any web server is OK; remember to create mime types for .m3u8 and .ts files in your web server. With Unreal Media Server you can achieve as low as 2.5 seconds latency of HLS over the Internet.


Adaptive bitrate streaming.

When live encoder uploads multi-bitrate streams to Unreal Media Server, these streams can be served to players via adaptive bitrate protocols such as HLS and RTMP. For HLS, the m3u8 file that is generated automatically by Unreal Media Server, will contain links to individual bitrate m3u8 files. HLS players will switch between these bitrates based on available bandwidth. For RTMP, the server supports "Play2" RTMP command. Once a player sends "Play2" command, the server will switch to a different bitrate stream.


Streaming via MS Smooth protocol.

In addition to Unreal Media Server, you need to run IIS7 web server with Media Services extension installed. Unreal Media Server streams to Live Smooth streaming publishing points (created by IIS manager tool) via Smooth streaming protocol: stream manifests and mp4-encoded chunks are being sent in real time via HTTP Post requests. Smooth streaming players such as Silverlight player connect directly to publishing points URLs. Only H.264/AAC and VC1/WMA codecs are supported by MS Smooth streaming; in addition, optimal performance is achieved if a distance between video I-frames is in the range of 1-2 seconds. MS Smooth streaming is a high latency protocol; the best latency you can get is 10 seconds.


Streaming via MPEG2-TS protocol.

Unreal Media Server supports Unicast and Multicast streaming of live sources and media files via MPEG2-TS protocol. The Media Server broadcasts MPEG2-TS encapsulated streams over UDP or RTP transports to any specified IP addresses. MPEG2-TS players do not connect to Media Server at all; they rather connect to whatever IP address the Media Server broadcasts to.


User Authentication and access restrictions.

Configuration programs of Unreal Media Server and Unreal Live Server make it possible to fully control access to media resources, allowing it only to trusted parties. Administrator can make Media Server grant access to authorized users only, and Live Server grant access to specific Media Servers only. There are 2 types of user authentication supported by Unreal Media Server: Internal Authentication and Session-based authentication. Every resource configured with Media Server Configurator (all virtual folders and live broadcasts), can be set to allow anonymous access or require one of these 2 types of authentication. Internal authentication can be used with UMS protocol only, whereas Session-based authentication can be used with UMS, MS-WMSP and RTMP protocols.

1. Internal Authentication
Authentication and user management is handled directly by Unreal Media Server; this is our proprietary authentication mechanism. Users play with Unreal Streaming Media Player or its browser plugin. Media Server administrator needs to create users on the server side. Users can be administrated using either Media Server Configurator or Web page (Refer to useradmin page in our SDK). A user can belong to one of 3 user groups: Basic, Medium and Advanced. Resource that is set to use Internal authentication, can restrict access to a specific user group. When a user tries to access such a resource, the Streaming Media Player prompts the user to enter User name and Password, and optionally persists these credentials on the user's computer. User's credentials are bound to Media Server IP address, such that if the user accesses some resource on a different Media Server, he/she will be prompted to enter credentials again.
Security: User's credentials are encrypted with strong one-way hashing algorithm, before they are sent on the network. These encrypted credentials are encrypted once again with industry-strength symmetric algorithm when they are stored on user's computer (if the user chooses to remember them locally) and on Media Server's computer, when administrator creates users.

2. Session-based Authentication
It is to be used when a web application handles authorization by standard web methods and provides authorized users with access to media resources. In session-based authentication Unreal Media Server doesn't know anything about users. A web app creates a session for an authorized user. When the session is created, Unreal Media Server has to be notified about it, and when the session is expired, Unreal Media Server has to be called to remove it from its list of active sessions. Also, when the web app returns HTML page to the client, session ID needs to be appended to UMS://, MMS:// or RTMP:// links, or "UseSessionID" method needs to be called in the client-side scripting for embedded Unreal Streaming Media Player's browser plugin. This way, when the client sends a request for streaming media to Unreal Media Server, the session ID will be passed along, and Unreal Media Server will be able to recognize the user. Refer to our sample web application for reference on session-based authentication.












   2003-2014 Unreal Streaming Technologies. All rights reserved.