Media Server
Architecture.

Networking.

Unreal Media Server is designed to stream live and recorded media over IP networks. The server's native streaming protocol is our proprietary UMS protocol. UMS is a DirectShow-based, codec-independent streaming protocol that can be realized in unicast mode over TCP, RTP(UDP) and HTTP(S) transports, and in multicast mode over RTP(UDP) transport. Unreal Streaming Media Player can be used on Windows OS to play unicast and multicast streams sent with UMS protocol, enabling low latency, user authentication and stream protection.

In addition to UMS protocol, Unreal Media Server supports RTMP protocol for live streams, to play with Flash player on any OS; and also supports MMS-H (MMS over HTTP) protocol for both live and recorded media, to play with Windows Media Player, Silverlight, VLC and other MMS-capable players on any OS.

All players connect to media server's TCP port 5119; this port can be configured. The only exception is HTTP(S) delivery which works via IIS web server running our UHttpProxy extension. Players using HTTP(S) delivery should connect to whatever port IIS is configured to listen on; the default HTTP(S) ports are 80/443. UhttpProxy simply relays the connection to local Media Server via UMS-TCP Unicast. After the TCP connection has been established, the server will send streaming content using the protocol specified in the request: it will use RTMP for Flash player connections, MMS for Windows Media Player connections, and either UMS-TCP or UMS-RTP(UDP) for Unreal Streaming Media Player connections.

Unreal Live Server is a live media encoder that captures live audio/video, encodes it, packages it as a UMS stream and sends it over TCP or RTP(UDP) unicast to Unreal Media Server for subsequent delivery to media players. The TCP connection can be initiated by Live Server ("push" mode) via configurable Media Server's TCP port (default is 5130), or by Media Server ("pull" mode) via Live Server's TCP port 5120. Therefore, Live Server computers can reside on different networks relative to Media Server, behind NAT firewalls and public routers.
Media Server can connect to another Media Server to receive live media, which allows minimizing traffic over low-bandwidth network segments such as Internet connection.

Multicasting.

Unreal Media Server supports simultaneous multicasting of unlimited number of live sources and virtual folders. Multicasting is supported via UMS protocol only, to play with Unreal Streaming Media Player or its web browser plugin. In order not to waste bandwidth, live sources are not multicasted when there are no active viewers. When a first viewer connects and requests Multicast delivery, 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 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 with MMS protocol.

Unreal Media Server supports Unicast streaming with MMS (Microsoft Media Server) over HTTP 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 MMS streams. Various players on Windows, MAC, Linux, Mobile devices are supported, such as Windows Media Player, QuickTime Player, VLC, MPlayer.

Streaming with RTMP protocol.

Unreal Media Server supports Unicast streaming of live sources with RTMP-FLASH protocol. Live audio/video is being encapsulated into FLV container on the fly and sent to Flash player on any OS. H264, AAC and MP3 codecs are used by Unreal Live Server for Flash encoding.

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, MMS 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 sample source code). 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-2011 Unreal Streaming Technologies. All rights reserved.