Darwin Streaming Server | |
Darwin server is a streaming server package which sends streaming data to QuickTime clients across the Internet using the industry standard RTP and RTSP protocols. Darwin server binaries and source code are available at http://developer.apple.com/darwin/projects/streaming Precompiled binaries are available for the following operating systems:
* Mac OS X, v10.1.3 and later (server and proxy)
http://www.apple.com/quicktime/products/qtss/useradmin.html
The solution we are going to describe is based on Multicast technology, derived as a audio/video conferencing tool over multicast servers. Unlike any other encoding technique, Multicast Tools offer unparalleled level of control, allowing audio and video streams to be encoded independently, according to quality needs and capacity of the server. The following graph describes the basic structure of creating and delivering streaming content through a Darwin server:
* Encoding Unit receives audio and video signals and decodes and sends to the destination address. The destination address consists of a combination IP number / UDP port. There are two different scenarios here: - multicast broadcast If the encoding unit and the Darwin server are on the same multicast channel, the encoder could send audio and video to any available multicast IP address (type 224.x.x.x) and any available UDP port. Multicast socket is then binded to the encoder itself, available for server to pull it into the broadcast. - unicast broadcast When encoder and the server are not on the same multicast channel, the encoder machine can send encoded content to the server through normal UDP traffic, pointing to the IP number and any available UDP port at the server. (Note. In either case, multicast or unicast streams take 2 UDP ports per stream: 2 for audio and 2 for video!)
* SDP (Session Description Protocol File) is created in order to describe the location and the basic attributes of the stream (IP address, ports, codecs) and located in the home directory of the QuickTime server (/usr/local/movies on Linux for example). Structure and syntax for SDP files is described in a RFC file at http://www.ietf.org/rfc/rfc2327.txt
The bare bone structure of and SDP file could look like:
v=0 o=- 3162904348 3162905614 IN IP4 <IP_name_of_Darwin_server> s=a c=IN IP4 <IP_name_of_Darwin_server> a=tool:sdr v2.4a6s2 a=type:broadcast m=audio <audio_UDP_port> RTP/AVP 5 c=IN IP4 <IP_address for audio> m=video <video_UDP_port> RTP/AVP 31 c=IN IP4 <IP_address for video>
* Internet users connect to the server and retrieve the SDR file, that describes connection parameters needed for the QuickTime player * QuickTime server multiplies the connection from the encoding unit, and delivers one stream to each Internet user, not multiplying connection towards the encoder.
Darwin streaming server is capable of relaying an incoming stream and resending to the other server or another port on the same server. A relay listens to an incoming broadcast (either unicast or multicast ), and forwards, or relays, that broadcast to one or more destination addresses. The destination addresses may be unicast or multicast. Basic structure and syntax of relaying is explained at http://www.publicsource.apple.com/projects/streaming/StreamingServerHelp/pgs/ss08a.html An example of a relay as described in /etc/streamingrelay.conf might look like:
relay_source "in_addr=204.181.65.11 in_ports=5656 ttl=127" relay_destination "dest_addr=204.181.65.11 dest_ports=25656 ttl=127" relay_destination "dest_addr=226.91.45.88 out_addr=204.181.65.11 dest_ports=6956 ttl=15" relaying stream from IP address 204.181.65.11 and port 5656 to the same IP and port 25656 and multicast address 226.91.45.88 and port 6956. Relaying mechanism is a very convenient tool for building a tree-like structure of relays and broadcast over a network of servers, enabling local delivery and sharing bandwidth. Unfortunately Darwin servers do not allow dynamic adding and removing of relays without the need to restart the server itself. That could present a problem in a situation of many concurrent streams, because on restart all users are disconnected and broadcast has to start again. In order to establish dynamic relaying of streams among Darwin servers on has to use RTPTOOLS, package developed by Computer Science Department at Columbia University.
|
Open_Source_Streaming_Platform
Server_Side
Content_Production_Side
Dynamic_Relaying_of_RTSP_Servers
OSSA_Streaming_Protocol |
|