|
Networking overview.
Unreal Media Server supports UMS protocol for streaming to Unreal Streaming Media Player on Windows OS;
RTMP and RTMPT protocols for streaming to Flash Player on any Flash-enabled OS;
MS Smooth and MS-WMSP protocols for streaming to Silverlight, 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 re-multiplexer.
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.
Streaming via UMS protocol to Unreal Streaming Media Player/Browser plugin.
Unreal Streaming Media Player can receive 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 rollbacks to HTTP transport. The player always connects
directly to the Server, except HTTPS transport.
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.
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-2013 Unreal Streaming Technologies. All rights reserved.
|