Add even more of the source

This should be about everything needed to build so far?
This commit is contained in:
Darren VanBuren 2017-03-07 17:14:16 -08:00
parent af3619d4fa
commit 849723c9cf
547 changed files with 149239 additions and 0 deletions

View file

@ -0,0 +1,63 @@
{\rtf1\mac\ansicpg10000\cocoartf100
{\fonttbl\f0\froman\fcharset77 Times-Bold;\f1\froman\fcharset77 Times-Roman;}
{\colortbl;\red255\green255\blue255;}
\margl1318\margr1318\vieww14420\viewh16040\viewkind0
\pard\ql\qnatural
\f0\b\fs28 \cf0 Acknowledgments\
\pard\ql\qnatural
\f1\b0\fs20 \cf0 \
\pard\ql\qnatural
\fs24 \cf0 Portions of this Apple Software may utilize the following copyrighted material, the use of which is hereby acknowledged.\
\
\pard\ql\qnatural
\f0\b \cf0 Apache Group
\f1\b0 ( Apache)
\f0\b \
\pard\ql\qnatural
\f1\b0 \cf0 Copyright (c) 1995-2000 The Apache Software Foundation. All rights reserved.\
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The end-user documentation included with the redistribution, if any, must include the following acknowledgment: "This product includes software developed by the Apache Software Foundation (http://www.apache.org/)." Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party acknowledgments normally appear. 4. The names "Apache" and "Apache Software Foundation" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact apache@apache.org. 5. Products derived from this software may not be called "Apache", nor may "Apache" appear in their name, without prior written permission of the Apache Software Foundation.\
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF, SUCH DAMAGE.\
This software consists of voluntary contributions made by many individuals on behalf of the Apache Software Foundation. For more information on the Apache Software Foundation, please see <http://www.apache.org/>. Portions of this software are based upon public domain software originally written at the National Center for Supercomputing Applications, University of Illinois, Urbana-Champaign.\
\
\pard\ql\qnatural
\f0\b \cf0 Jamie Cameron ( perl-based web server )\
\pard\ql\qnatural
\f1\b0 \cf0 Copyright (c) Jamie Cameron. All rights reserved.\
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the developer nor the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission.\
THIS SOFTWARE IS PROVIDED BY THE DEVELOPER ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE DEVELOPER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\
\
\pard\ql\qnatural
\f0\b \cf0 Sampo Kellomaki (Perl Net SSLeay module)\
\pard\ql\qnatural
\f1\b0 \cf0 Copyright (c) 1996 -2001 Sampo Kellomaki . All rights reserved.\
Distribution and use of this module is under the same terms as the OpenSSL package itself (i.e. free, but mandatory attribution; NO WARRANTY). Please consult -1COPYRIGHT file in the root of the SSLeay distribution. While the source distribution of this perl module does not contain Eric's or OpenSSL's code, if you use this module you will use OpenSSL library. Please give Eric and OpenSSL team credit (as required by their licenses).\
\
\pard\ql\qnatural
\f0\b \cf0 Tomoyuki SADAHIRO (Perl MapUTF module)\
\pard\ql\qnatural
\f1\b0 \cf0 Copyright(C) 2001, SADAHIRO Tomoyuki. Japan. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.\
\
\pard\ql\qnatural
\f0\b \cf0 RSA Data Security, Inc. ( MD5)\
\pard\ql\qnatural
\f1\b0 \cf0 MD5 Message-Digest Algorithm (c) 1991-1992 RSA Data Security, Inc.\
\pard\ql\qnatural
\f0\b \cf0 \
\pard\ql\qnatural
\f1\b0\fs18 \cf0 QTSS 101601\
}

View file

@ -0,0 +1 @@
<HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1252"> <TITLE>About QTFileTools</TITLE> </HEAD> <BODY LINK="#0000ff" VLINK="#800080"> <B><FONT SIZE=5><P ALIGN="CENTER">About QTFileTools</P> </FONT><P>&nbsp;</P> <P> QTFileTools are movie inspection utilities using the Darwin QTFileLib.</P> </B></U><P>QTBroadcaster<BR> QTFileInfo<BR> QTFileTest<BR> QTRTPFileTest<BR> QTRTPGen<BR> QTSampleLister <BR> QTTrackInfo<BR> </P> <B><P>QTBroadcaster</B>: </P> <P>Requires a target ip address, a source movie, one or more source hint track ids in movie, and an initial port. Every packet referenced by the hint track(s) is broadcasted to the specified ip address.</P> <B><P>QTFileInfo</B>: </P> <P>Requires a movie name. Displays each track id, name, create date, and mod date. If the track is a hint track, additional information is displayed: the total rtp bytes and packets, the average bit rate and packet size, and the total header percentage of the stream.</P> <B><P>QTFileTest</B>: </P> <P>Requires a movie name. Parses the Movie Header Atom and displays a trace of the output.</P> <B><P>QTRTPFileTest</B>: </P> <P>Requires a movie and a hint track id in the movie. Displays the RTP header (TransmitTime, Cookie, SeqNum, and TimeStamp) for each packet.</P> <B><P>QTRTPGen</B>: </P> <P>Requires a movie and a hint track id. Displays the number of packets in each hint track sample and writes the RTP packets to file "track.cache"</P> <B><P>QTSampleLister</B>: </P> <P>Requires a movie and a track id. Displays track media sample number, media time, Data offset, and sample size for each sample in the track.</P> <B><P>QTSDPGen</B>: </P> <P>Requires a list of 1 or more movies. Displays the SDP information for all of the hinted tracks in each movie. Use -f to save the SDP information to the file [movie].sdp in the same directory as the source movie.</P> <B><P>QTTrackInfo</B>: </P> <P>Requires a movie, sample table atom type, and track id. Displays the information in the sample table atom of the specified track. Supports "stco", "stsc", "stsz", "stts" as the atom type. </P> <P>Example: "./QTTrackInfo -T stco /movies/mystery.mov 3" dumps the chunk offset sample table in track 3.</P></BODY> </HTML>

View file

@ -0,0 +1,48 @@
<HTML>
<HEAD>
<TITLE>Darwin Streaming Server - About the Source Code</TITLE>
</HEAD>
<BODY LINK="#0000ff" VLINK="#800080" BGCOLOR="#ffffff">
<H2 ALIGN="CENTER">Darwin Streaming Server </H2>
<H2 ALIGN="CENTER">Source Code Description</H2>
<P>&nbsp;</P>
<P>This document provides detailed information on the internals of the Darwin Streaming Server. The server implements four standard IETF protocols, RTSP (Real-time streaming protocol, RFC 2326), RTP (Real-time Transport Protocol, RFC 1889), RTCP (Real-time transport control protocol, RFC 1889), and SDP (Session description protocol, RFC 2327). Before making modifications to the server code is may help to be familiar with those RFCs.</P>
<P>&nbsp;</P>
<H3>Introduction</H3>
<P>The Darwin Streaming Server source code is written entirely in C++, and pervasively uses object-oriented concepts such as inheritance and polymorphism. Almost exclusively, there is one C++ class per .h / .cpp file pair, and those file names match the class name.</P>
<P>The code for each of the server's subsystems is separated out into separate folders in the source hierarchy. The following is a short description of each subsytem.</P>
<P>&nbsp;</P>
<H3>Common Utilities (in CommonUtilitiesLib)</H3>
<P>Common Utilities is a toolkit of thread management, data structure, networking, and text parsing utilities. Darwin Streaming Server and associated tools use these classes to accomplish the following three goals: </P>
<UL>
<LI>Reduce repeated code by abstracting similar or identical tasks, </LI>
<LI>Make the higher level code simpler through encapsulation, </LI>
<LI>Separate out any and all platform-specific code.</LI></UL>
</BR>
<P>Here is a short description of all the classes in the Common Utilities subsystem by group:</P>
<UL>
<LI>OS Classes: Platform-specific code abstractions for timing, condition variables, mutexes, and threads: OS, OSCond, OSMutex, OSThread, OSFileSource. Data structures: OSQueue, OSHashTable, OSHeap, OSRef.</BR></BR></LI>
<LI>Sockets: Platform-specific code abstractions for TCP and UDP networking. Socket classes are generally asynchronous (or non-blocking), and can send events to "Task objects". For a complete description on how this works, see "What are task objects?" in the FAQ section. Classes are: EventContext, Socket, UDPSocket, UDPDemuxer, UDPSocketPool, TCPSocket, TCPListenerSocket.</BR></BR></LI>
<LI>Parsing Utilities: These classes serve as a toolkit for parsing and formatting text. Classes are: StringParser, StringFormatter, StrPtrLen, StringTranslator.</BR></BR></LI>
<LI>Tasks: These classes implement the asynchronous event mechanism the server uses. For a complete description of how tasks work, see "What are task objects?" in the FAQ section. Classes include: Task, TimeoutTask, IdleTask.</BR></BR></LI>
<LI>RTCPUtilitiesLib: Classes for encoding and decoding RTCP packets(BR QTFileLib - Simple API for parsing the Hint Track format and generating packets.</BR></BR></LI></UL>
<P>&nbsp;</P>
<H3>Server Core (in Server.tproj)</H3>
<P>This folder contains the core server code, which can be divided into three categories: server core, RTSP specific, and RTP specific.</P>
<UL>
<LI>RTSP subsystem: These classes handle the parsing &amp; processing of RTSP requests, and implement the RTSP part of the QTSS module API. Several of the classes correspond directly to elements of the QTSS API (for instance, RTSPRequestInterface is a QTSS_RTSPRequestObject). There is one RTSP session object per RTSP TCP connection. The RTSPSession object is a Task object that processes RTSP related events.</BR></BR></LI>
<LI>RTP subsystem: These classes handle the sending of media data. The RTPSession object contains the data associated with each RTSP session ID. Each RTPSession is a Task object that can be scheduled to send RTP packets. The RTPStream object represents a single RTP stream. Any number of RTPStream objects can be associated with a single RTPSession. These two objects implement the RTP specific parts of the QTSS module API.</BR></BR></LI>
<LI>Server core: Classes in this subsystem are prefixed by QTSS. QTSServer handles startup and shutdown. QTSServerInterface stores server globals and compiles server statistics. QTSSPrefs is a data store for server preferences. QTSSModule, QTSSModuleInterface, and QTSSCallbacks are classes whose sole purpose is to support the QTSS module API.</BR></BR></LI>
</UL>
<P>&nbsp;</P>
<FONT SIZE=2><P>&copy; 1999-2003 Apple Computer, Inc. All rights reserved. Apple, the Apple logo, Mac, Macintosh, PowerBook, Power Macintosh, and QuickTime are trademarks of Apple Computer, Inc., registered in the United States and other countries. iBook, iMac, and Power Mac are trademarks of Apple Computer, Inc. All other product names are trademarks or registered trademarks of their respective holders.</P>
</FONT><P>&nbsp;</P></BODY>
</HTML>

View file

@ -0,0 +1,128 @@
Support For Stream Caching in Streaming Server 3
Introduction
Streaming Server 3 adds new features to RTSP and RTP in order to make
it as easy as possible for a caching proxy server to capture and
manage a pristine copy of a media stream. Some of these features are
elements of the RTSP protocol that were not supported in previous
versions. Some are additions to RTSP and RTP - these extensions have
already been, or will be soon, submitted to the IETF for consideration
as additions to the standard.
This document provides a complete description of the stream caching
support added to Streaming Server 3. It is intended as a guide for
RTSP / RTP caching vendors to use.
Four major features have been added:
1. Speed RTSP Header
Streaming Server 3 supports the RTSP Speed header wherever possible.
This allows a caching proxy server to request a stream to be delivered
faster than real time, so it can move a stream into the cache as
quickly as possible. For complete documentation on the Speed header,
see the RTSP RFC.
2. x-Transport-Options RTSP Header
Streaming Server 3 supports a non-standard RTSP header,
x-Transport-Options. This header has one currently supported argument,
"late-tolerance". This argument allows a caching proxy to tell the
server how late packets may be sent and have them still be useful to
the cache. A complete description of this header, with examples, is
included in this document as Appendix A.
3. RTP-Meta-Info RTP Payload
Streaming Server 3 fully supports the RTP-Meta-Info RTP payload
format, described separately in an Internet Draft (draft-serenyi-avt-rtp-meta-00).
RTP packets of this payload type include important information such as
the packet transmission time, unique packet number, and video frame
type. Caching proxies can use this information to provide the same
quality of service to clients as the origin server.
4. x-Packet-Range RTSP Header
Streaming Server 3 supports a non-standard RTSP header,
x-Packet-Range. This header is similar to the Range RTSP header, but
allows the client to specify a specific range of packets instead of a
range of time. This allows a caching proxy to tell the origin server
to selectively retransmit only those packets which it needs to fill in
holes in its cached copy of the stream. A complete description of this
header, with examples, is included in this document as Appendix B.
Appendix A: Description of the x-Transport-Options RTSP header.
This optional header should be sent from a client to server on a
SETUP, and echoed by the server. If the header is not echoed the
client must assume that the server does not support this header.
The body of this header contains one or more semi-colon delimited
arguments. Each argument modifies the contents or delivery RTP packets
for the RTP stream specified by the SETUP in a particular way. In the
SETUP request, the arguments represent the options the client would
like applied to the stream. In the SETUP response, the arguments
represent what the server will actually apply to the RTP stream. The
response may contain a subset of the arguments requested by the
client. This may happen in the event the server doesn't support all
the requested arguments, or some don't apply to the RTP stream
specified by the SETUP. The server may also modify the values of any
arguments it returns.
There is currently only one possible argument for the X-Transport-Options
header. More arguments may be added later in the event that more
fine-grain control is required for the RTSP server's RTP streams.
Argument 1: late-tolerance
The value of this argument should be a positive integer, representing
the number of seconds late a media packet may be sent by the server
and still have it be useful to the client. It should be used as a
guide to the server to make a best-effort attempt to deliver all media
data not older than late-tolerance value.
Example:
x-Transport-Options: late-tolerance=30
If this is being passed to an RTSP server as part of a SETUP for a
video stream, the server should attempt to deliver all video frames
unless they are more than 30 seconds old. Frames that are older than
30 seconds can be dropped by the server because they are stale.
This can be used by a caching proxy to prevent the media server from
dropping frames or lowering the stream bit rate in the event it falls
behind sending media data. If the caching proxy knows the duration of
the media, setting late-tolerance to that value will prevent the
server from ever dropping frames, allowing the cache to receive a
complete copy of the media data. For a live broadcast, a caching proxy
may want to do extra buffering to improve quality for its clients. The
proxy could advertise the length of its buffer to the server this way.
Appendix B: Description of the x-Packet-Range RTSP Header
This header should be sent from a client to server on a PLAY in place
of the Range header. If the server does not support this header it
should respond with a 501 Header Not Implemented.
The body of this header contains a start and stop packet number for
this PLAY request. The specified packet numbers must be based on the
packet number RTP-Meta-Info field. For information on how to request
packet numbers as part of the RTP stream, see the RTP-Meta-Info
payload format Internet Draft (draft-serenyi-avt-rtp-meta-00).
The header format consists of two semi-colon delimited arguments. The
first argument must be the packet number range, with the start and
stop packet numbers separated by a '-'. The second argument must be
the stream URL to which these packet numbers belong.
Example:
x-Packet-Range: pn=4551-4689;url=trackID3
The stop packet number must be equal to or greater than the start
packet number. Otherwise, the server may return an error or simply not
send any media data following the PLAY response.

Binary file not shown.

146
Documentation/DevNotes.html Normal file
View file

@ -0,0 +1,146 @@
<HTML>
<HEAD>
<TITLE>Darwin Streaming Server - Developer Notes</TITLE>
</HEAD>
<h2>Darwin Streaming Server Source Code
</h2>
<h2>Developer Notes
</h2>
<p>Table of Contents</p>
Building<br/>
Installation<br/>
Configuration and Testing<br/>
<p>About the Source</p>
<p>Licensing</p>
<p>The Darwin Streaming Server is distributed under the terms of the Apple Public Source License. For more information, refer to the license terms at <a href="http://www.publicsource.apple.com/">www.publicsource.apple.com</a>. Note that the Apple Public Source License does not allow you to use the terms &quot;QuickTime&quot; or &quot;QuickTime Streaming Server&quot; in descriptions of products developed using Darwin Streaming Server open source code, nor use any Apple trademarks or logos associated with QuickTime and QuickTime Streaming Server.</p>
<p>Building</p>
<p>If you downloaded a binary package of Darwin Streaming Server, skip to the &quot;Installing&quot; section.</p>
<p>To build Darwin Streaming Server on UNIX platforms including MacOS X, type &quot;./Buildit&quot; from within the Darwin Streaming source directory. The script determines the current OS and hardware platform, and builds all of the targets for that platform: DarwinStreamingServer, PlaylistBroadcaster, qtpasswd, and dynamic modules included in the &quot;StreamingServerModules&quot; folder.</p>
<p>To build Darwin Streaming Server on Windows NT or Windows 2000, you must have a copy of Visual C++. There is a VC++ workspace file located inside the WinNTSupport directory. Once the workspace is open, from the Build menu select Batch Build.</p><b>
<p>Building the Installer</p></b>
<p>On OS X, at the top level of the source directory, type &quot;./Buildit install dss_fat&quot; to build for 32bit and 64bit ppc and intel processors or type &quot;./Buildit install dss&quot; to build an installer for the current processor only. An OS X installer package will be created in the source directory.</p>
<p>On Unix platforms, type &quot;./Buildit install&quot;. A DarwinStreamingSrvr-Platform install directory and tar file will be created.</p>
<p>On Windows, after building using the WinNTSupport project, run the MakeZip.bat file inside WinNTSupport directory. A WinNTSupport\DarwinStreamingServer install directory will be created.</p><b>
<p>Adjusting the Mac OS X Installer</p></b>
<p>If you are building an installer for Mac OS X 10.4 you will need to change the installer's OS and Volume check script located inside the DarwinStreamingServer.pkg at DarwinStreamingServer.pkg/Contents/Resources/VolumeCheck.</p>
<p>You can simply remove the script to allow installs on any volume and OS or edit the file and change the OS version. Simply change the version number the script is checking.</p>
<p>Look for: my $REQUIRED_OS_VERS = &quot;10.5.0&quot;;</p><b>
<p><b>Installing/b</p><>
<p>After building the installer, on OS X, double click the DarwinStreamignServer.pkg.</p>
<p>On Unix platforms, type ./Install from within the DarwinStreamingSrvr-Platform install directory.</p>
<p>On Windows, run the Install script from within the DarwinStreamingServer directory.</p><b>
<p>How to build your dynamic QTSS API modules</p></b>
<p>For building new dynamic QTSS API modules on Mac OS X, follow the instructions in the QTSS API developer documentation, &quot;QTSSAPIDocs.pdf&quot;.</p>
<p>For platforms other that Mac OS X, your module must be built as a shared object, and it must include APIStubLib/QTSS_Private.cpp. This file is the &quot;stub library&quot; that all modules must link against.</p>
<p>On most UNIX platforms, building a shared object is like building any other executable, with the addition of one command-line argument to the linker. On Linux, the -shared option tells the linker that it is producing a shared object, on Solaris, the option is -G.</p>
<p>The dynamic QTSS API modules that come with Darwin Streaming Server each have a Makefile.POSIX makefile in their respective source directories. These makefiles execute when the Buildit script runs, and contain the make rules to make the dynamic module for each currently supported UNIX platform. It is easiest to use these existing makefiles as a template to copy and modify for your new QTSS API module.</p>
<p><b>Installation</b></p>
<p>The next step is to install and configure the server. On all platforms, the server reads its preferences from a config file. A default config file, streamingserver.xml, comes with both the source and binary packages. On Mac OS X, the server looks for the file in /Library/QuickTimeStreaming/Config. On Windows, the server looks for the file in &quot;C:\Darwin Streaming Server&quot;. On UNIX platforms, the server looks for this file in /etc/streaming. If the streamingserver.xml file isn't available in the directory, the server will create one with the default configuration settings.</p>
<p>Once the server is built, you will have an executable called DarwinStreamingServer. The server can be run from the directory where it is built, or you can copy it to another location. On Mac OS X, the binary is called QuickTimeStreamingServer and will be placed in the build directory.</p>
<p>To run the server from the directory where it is compiled, just type ./DarwinStreamingServer.</p>
<p>Configuration and Testing</p></b>
<p>The server serves all streaming content out of its &quot;media folder&quot;. By default, on Mac OS X, this media folder is located at /Library/QuickTimeStreaming/Movies. This path is one of the preferences in the config file. If you want your media folder to be located somewhere else, you must edit the &quot;movie_folder&quot; preference before starting the server. You can also set the movie folder in the web based administration interface. You can start administering by going to <a href="http://localhost">http://localhost</a>:1220/ on your server.</p>
<p>Once you have a media folder, you can place streaming media into the folder. All QuickTime files must be &quot;hinted&quot; with QuickTime Player Pro or other QuickTime authoring applications before they can be streamed. Once the movie is hinted, copy the file to the streaming media folder on your server.</p>
<p>Sample movies (sample_100kbitmov, sample_300kbit.mov, sample_100kbit.mp4, sample_300kbit.mp4) are included in the package and in the source directory. The sample movies are already hinted, so you can place them into your media folder. From the QuickTime client, attempt to access those movie through an rtsp URL (e.g. <a href="rtsp://my.server.com/sample_100kbit.mov">rtsp://my.server.com/sample_100kbit.mov</a>), and the server will stream that movie to the client.</p>
<p>In order to &quot;reflect&quot; a live broadcast, you must setup and start a broadcaster application, such as the QuickTime Broadcaster. The broadcaster produces an SDP file that describes the live broadcast. Place that SDP file into your media folder, access the URL from a QuickTime Client, and the server will &quot;reflect&quot; the live broadcast to the client. You can also do an automatic unicast from broadcasters that support this feature. You do not have to copy the SDP file to the media folder if you select this option.</p>
<p>Also included with the Darwin Streaming Server is StreamingLoadTool, a stress tool for testing the server. StreamingLoadTool realistically simulates many RTSP clients viewing a movie from the server. The tool offers many command-line options that can create different types of simulations. Typing ./StreamingLoadTool will print a description of all available options.</p>
<p>StreamingLoadTool will only work if there is a movie called &quot;StreamingLoadTool.mov&quot; in the root movie folder of the target server. This file must be a valid, hinted QuickTime movie.</p>
<p>For more information about authoring, hinting, and streaming QuickTime media, refer to the QuickTime Streaming Server documentation.</p>
<p><br /></p>
<p></p>
<p><b>Q&amp;A</b></p>
<p><b>Q. What platforms does the source compile and run on?</b></p>
<p>The source currently compiles and runs on Mac OS X. It can be ported to other platforms by modifying a handful of platform specific source files:</p>
<p>OSThread, OSCond, OSMutex: Implements threads, mutexes, and condition variables. The implementations provided work on MacOS X as well as any platform that supports pthreads.</p>
<p>OS: Includes some platform-specific code for getting the current time. Implementations provided work on MacOS X as well as any platform that supports gettimeofday.</p>
<p>Socket: This class is C++ wrapper for the sockets API. On MacOS X, this class uses a set of APIs collectively called the Event Queue for receiving events from sockets in non-blocking mode. For other platforms, an implementation of the Event Queue APIs using select() has been provided in ev.cpp. For more details on the Event Queue, see &quot;What is the Event Queue?&quot; in the FAQ section.</p>
<p><br /></p>
<p><b>Q. What is the QTFile library?</b></p>
<p>One of the major features of the Darwin Streaming Server is the ability to serve hinted QuickTime files over RTSP and RTP. All of the code for parsing hinted QuickTime files has been abstracted into the QTFile library. Separating the code in this way keeps both parts much simpler: QTFile only deals with file parsing, the Darwin Streaming Server only deals with networking and protocols. The RTPFileModule in the server calls the QTFile library to retrieve packets and meta-data from hinted QuickTime files.</p>
<p><br /></p>
<p><b>Q. What is the reflector, and how does it work?</b></p>
<p><b><br /></b></p>
<p>The reflector allows an administrator to deliver live broadcasts to RTSP clients. The reflector is implemented as an RTP module, and the source code is entirely in RTPReflectorModule.h/.cpp, and ReflectorSession.h/.cpp.</p>
<p><br /></p>
<p>When a QuickTime client wants to view a broadcast, it first connects to the Darwin Streaming Server reflector module and directs the module to look for a proper incoming broadcast. If the broadcast is found, the Darwin Streaming Server will then &quot;reflect&quot; the broadcast to the client. The following is a detailed description of how this works. Readers may want to familiarize themselves with SDP (Session Description Protocol), and IP multicast before continuing.</p>
<p><br /></p>
<p>In order to reflect something, there must be a live broadcast available to reflect. A broadcast is a stream of RTP packets generated by an application or process external to the Darwin Streaming Server and typically run on a separate machine. In this discussion we will call the live stream generator the &quot;Broadcaster&quot;. The Broadcaster converts a live media source (like a camera, or microphone, or whatever) into RTP packets. It sends the packets over UDP, to either a multicast or unicast destination address. Broadcasters will usually create .sdp files containing all the SDP (Session Description Protocol), information about this live presentation needed by the client and reflector.</p>
<p><br /></p>
<p>Most importantly, the .sdp file contains the (destination) IP address and ports for the live presentation. The IP address can define a multicast or unicast connection for the client. QuickTime clients can read .sdp files directly and use them to connect directly to a Broadcaster. When the IP address in the .sdp file specifies a multicast address, the client will join the multicast provided there are multicast-aware routers between it and the Broadcaster. When the IP address is a unicast type, the client will connect when the .sdp destination IP address is the IP address of the client. This is because the Broadcaster is sending UDP packets directly to that machine!</p>
<p><br /></p>
<p>In order to reflect the broadcast stream, the .sdp file created by the Broadcaster must be located on the server, and inside the server's media folder. Let's say that on our server, there's a .sdp file called &quot;fish.sdp&quot; located at the root of the media folder.</p>
<p>An RTSP client will connect using &quot;<a href="rtsp://ourserver.com/fish&quot;,">rtsp://ourserver.com/fish&quot;,</a></p>
<p><br /></p>
<p>After the .sdp file is found, the reflector parses the file to get the source IP address and ports for the live presentation. When the server then makes the connection, the same rules apply to the server as to a real client. This is because the .sdp specified server connection is simply a client of the live presentation. This means the IP address must specify a multicast address, or the IP address of the server itself.</p>
<p><br /></p>
<p>Once the source address for the live presentation is located, the reflector binds some sockets to the specified ports. If the specified IP address is a multicast type, the reflector will join the multicast. At this point, those sockets will begin receiving all the data being sent by the Broadcaster.</p>
<p><br /></p>
<p>The reflector module allows a multicast client to view the broadcast stream as a normal unicast stream coming from the Darwin Streaming Server. The .sdp file is rewritten on the fly by the reflector to erase the source IP address and port information, to hide the information from the client. Once a PLAY request is issued by the client, the reflector begins sending all incoming packets from the Broadcaster to the client.</p>
<p><br /></p>
<p>As additional clients connect to the same live stream, the reflector increments refcounts and adds each new client to its stream tracking data structures. This efficiently allows each client to receive identical copies of all incoming packets from the Broadcaster.</p>
<p><br /></p>
<p>When all clients have disconnected, the reflector closes the source UDP sockets, and deallocates all resources for that broadcast.</p>
<p><br /></p>
<p>There is no limit on the number of unique live broadcasts that a single server can reflect, nor on the number of clients that can be connected to a single Reflection, apart from the overhead offile descriptor limitations, CPU, memory &amp; bandwidth constraints. The CPU &amp; memory consumed by a reflected stream is typically much less than normal locally stored media. Note: each unique live broadcast must be represented on the server by a unique .sdp file.</p>
<p><br /></p>
<p><b>Q. What is the Event Queue?</b></p>
<p>The Event Queue is an extension to the sockets API that exists on Mac OS X. It consists of three API calls:</p>
<p>watchevent: Watch for events on a file descriptor (socket). waitevent: Wait for events on any of sockets (this is a blocking call, it only returns when there is an event pending). modwatch: When waitevent returns an event for a socket, that socket won't receive any new events until modwatch is called for that socket.</p>
<p><br /></p>
<p>The use of these API calls is almost exclusively contained within Socket.cpp. This file contains the implementation of a thread object called SocketEventQueueThread. This thread blocks on waitevent and notifies the proper Task object (See &quot;What Are Task Objects?&quot;) when an event is received.</p>
<p><br /></p>
<p>For other UNIX platforms, an implementation of these three Event Queue API calls is provided in terms of select(). This implementation is contained in ev.cpp.</p>
<p><br /></p>
<p><b>Q. How does the Darwin Streaming Server (DSS) employ threads?</b></p>
<p><br /></p>
<p>DSS has four main threads managing its subsystems: a single connection thread for managing all connections, a short duration task thread for servicing tasks like rtp packet transmission, a long duration task thread for handling rtsp session requests and authentication, and an idle thread for time based tasks. DSS does not dedicate a thread per connection because the cost of servicing multiple connections would become prohibitively expensive when hundreds or thousands of connections are active. Typically connections last anywhere from 5 minutes to hours. To allow the server to scale into the thousands of connections, the Darwin Streaming Server uses asynchronous I/O wherever possible so a given thread will never block.</p>
<p><br /></p>
<p><b>Q. What are Task objects?</b></p>
<p><br /></p>
<p>Because the server is largely asynchronous, there needs to be a communication mechanism for events. For instance, when a socket used for an RTSP connection gets data, something has to be notified so that data can be processed. The Task object is a generalized mechanism for performing this communication.</p>
<p><br /></p>
<p>Each Task object has two major methods: Signal and Run. Signal is called by the server to send an event to a Task object. Run is called to give time to the Task for processing the event. The goal of each Task object is to implement server functionality using small non-blocking time slices. Run is a pure virtual function that is called when a Task object has events to process. Inside the Run function, the Task object can call GetEvents to receive and automatically dequeue all its current and previously Signaled events. All Task functions are atomic: if a Task object calls GetEvents in its Run function, and is then Signaled before the Run function completes, the Run function will be called again for the new event after exiting the function. In fact, the Task&quot;s Run function will be called repeatedly until the task object&quot;s event queue has been cleared with GetEvents. Run functions are not re-entered during execution due to new signaled events.</p>
<p><br /></p>
<p>This core concept of event triggered high performance Tasks is integrated into almost every subsystem in DSS. For instance, a Task object can be associated with a Socket object. If the Socket gets an event -- through a select() notification, or through the Mac OS X Event Queue (see &quot;What is the Event Queue?&quot;) -- the corresponding Task object will be Signaled. In this case the body of the Run function will contain the code for processing whatever event was received on that Socket.</p>
<p><br /></p>
<p><br /></p>
<p></p>
<FONT SIZE=2><P>&copy; 1999-2008 Apple Computer, Inc. All rights reserved. Apple, the Apple logo, Mac, Macintosh, PowerBook, Power Macintosh, and QuickTime are trademarks of Apple Computer, Inc., registered in the United States and other countries. iBook, iMac, and Power Mac are trademarks of Apple Computer, Inc. All other product names are trademarks or registered trademarks of their respective holders.</P>
</FONT>
</HTML>

151
Documentation/FAQ.html Normal file
View file

@ -0,0 +1,151 @@
<p><span style="font-weight: bold;">What is Darwin Streaming Server?</span></p>
<p>&nbsp;</p>
<div>
<p>Darwin Streaming Server is the open source version of the QuickTime Streaming Server allowing you to stream hinted QuickTime, MPEG-4, and 3GPP files over the Internet via the industry standard RTP and RTSP protocols.</p>
<p><span style="font-weight: bold;">Q. What's new in DSS 6.0.3?</span></p>
</div>
<blockquote>- DSS now builds and runs 64-bit on MacOS X</blockquote>
<blockquote>- Updates for example modules:<br />- The example Authorization module has been updated.<br /></blockquote>
<blockquote>
<blockquote>Source code is available in: APIModules/QTSSDemoAuthorizationModule.bproj<br /></blockquote>
</blockquote>
<blockquote>- The example Spam Defense module has been updated.<br /></blockquote>
<blockquote>
<blockquote>Source code is available in: APIModules/QTSSSpamDefenseModule.bproj<br /></blockquote>
</blockquote>
<blockquote>- An example RTSP redirect module has been included<br /></blockquote>
<blockquote>
<blockquote>Source code is available in: APIModules/QTSSDemoRedirectModule.bproj<br />Example modules are installed into:<br />(MacOS X): /Library/QuickTimeStreamingServer/Modules.disabled<br />(other Unix): /usr/local/sbin/StreamingServerModules<br /></blockquote>
</blockquote>
<blockquote>- OS X based user account support is added using Apple Open Directory services and includes LDAP and Active Directory user account authentication and authorization</blockquote>
<blockquote>- Full source for the streamingloadtool the QT, MP4, and 3GPP rtsp/rtp test client.<br />- Separate thread pools are used for RTSP processing and RTP processing<br />- Performance is improved on OS X systems with 4 and 8 cores over previous releases.<br />- Supports hinted files greater than 4GB in size.<br />- The posted pre-built MacOS package runs on MacOS X 10.5 or later only<br />- No build support yet for non-Mac OS X systems (open source submissions are needed to build on other platforms)<br />- No longer posting pre-built install binaries for non-Mac OS X systems.<br />Version 5.5.5 for Mac OS X, Linux and Windows can be downloaded from <a href="http://developer.apple.com/opensource/server/streaming/index.html">http://developer.apple.com/opensource/server/streaming/index.html</a><br /></blockquote>
<div>
<p><br />This release contains open source submissions for the following issues:</p>
</div>
<blockquote>- Fixed compilation problem on Solaris 10u3 (Stefan Parvu)<br />- Fixed access log c-bytes value (Amir Wolf)<br />- Fixed access log CPU utilization value<br />- Fixed compilation problem on FC6 linux PPC (Matthew McGillis)<br />- Fix to allow streaming of files with bad hint track references, allows compatibility with some popular encoders (Fredrik Widlund)<br />- Fix StreamingProxy compilation problems for some non-MacOSX platforms<br />- Added a HowTo for uninstalling DSS on a MacOS X system<br />- Misc. fixes for Debian linux (Ben Humpert)<br />- Fixed problem with video sync frame detection for MacOS X on Intel (Lorenzo Vicisano)<br /></blockquote>
<div>
<p><br />To submit your own Darwin Streaming Server modifications, please use <a href="../../../trac/newticket">http://dss.macosforge.org/trac/newticket</a></p>
<p>&nbsp;</p>
<p><strong>Q. Does the Darwin Streaming Server 6.0.3 install on Mac OS X 10.4 Tiger?</strong></p>
<p>The posted installer will not install to 10.4. &nbsp;The installer binaries are built for 10.5 and will not run on older versions of the Mac OS.</p>
<p>&nbsp;</p>
<p><strong>Q. Can Darwin Streaming Server 6.0.3 be built on Mac OS X 10.4 Tiger?</strong></p>
<p>Yes, there are some functional differences but the 6.0.3 source can be built using the buildit script as well as the installer package on Mac OS X 10.4. &nbsp;See the file:&nbsp;Documentation/DevNotes.html in the source code.</p>
<p>&nbsp;</p>
<p><strong>Q. What does the Darwin Streaming Server source include?</strong></p>
<p>The package includes source files for a streaming server with web based administration that can serve on-disk "hinted" QuickTime, MPEG2-program streams, MPEG-4, and 3GPP files and reflect live broadcasts, as well as source for the proxy (except on Windows). See the Documentation directory included with the source for more information about the code.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="font-weight: bold;">Q. Where can I find information about streaming with Darwin Streaming Server (DSS)?</span></p>
<p>http://dss.macosforge.org</p>
<p>http://soundscreen.com/streaming</p>
<p>http://streaming411.com/wiki</p>
<p>http://streaming411.com/forums</p>
<p>http://lists.apple.com/mailman/listinfo/streaming-server-users</p>
<p>http://lists.apple.com/mailman/listinfo/streaming-server-dev</p>
<p>&nbsp;</p>
<p><span style="font-weight: bold;">Q. What is the Darwin Streaming Server development cycle?</span></p>
<p>Darwin Streaming Server (DSS) is an ongoing project supported by Apple and the DSS the development community. Updates to the source code and pre-compiled binaries are delivered on an as needed basis. If you are interested in seeing the latest snaphshot of the codebase, visit&nbsp;<a href="../../../../" target="_blank">http://dss.macosforge.org</a>.</p>
<p><span style="font-family: 'Myriad Apple'; font-size: 13px;"> </span></p>
<p>&nbsp;</p>
<p><span style="font-weight: bold;">Q. Which CVS tag is the latest stable release</span></p>
<p>Future CVS use is under review while SVN or simple source tar postings are being evaluated.</p>
<p>You can download the latest Mac OS X 10.5 release from&nbsp;<span style="font-family: Verdana; font-size: 10px;">&nbsp;<a href="../../../../" target="_blank">http://dss.macosforge.org</a></span></p>
<p>The&nbsp;http://developer.apple.com/opensource/server/streaming/&nbsp;CVS contains software for DSS Mac OS 10.4 and other OS platforms.</p>
<p>The latest CVS tag is DSS_5_5_5_Release. The Darwin Streaming Server branch tag is DSS_10_4_Branch. The QuickTime Streaming Server branch tag is MacOS_10_4_Branch.</p>
<p><strong>Q. What is on the CVS top of tree?</strong></p>
<p>The top of tree is reserved for merging QuickTime Streaming Server development and unreleased code with Darwin Streaming Server code to create a new major release branch.&nbsp; Bug fixes and submissions are added to branches.</p>
<p>&nbsp;</p>
<p><span style="font-weight: bold;">Q. I submitted a bug fix and/or feature request. When can I expect to see it incorporated into the DSS code base</span>?</p>
<p>Bug fixes that have been submitted to the Darwin Streaming Server codebase are evaluated and tested by Apple prior to being incorporated into the codebase. Apple engineers make every effort to apply open source developer submitted code changes and fixes to the DSS code base where appropriate. The streaming server mailing list hosted by Apple is a forum for the &nbsp;community to discuss important features, bugs and deployments.&nbsp;</p>
<p>&nbsp;</p>
<p><span style="font-weight: bold;">Q. My .mp4, .3gp, or .mov file won't stream. Why does the player show 415 invalid media?</span></p>
<p>The streaming server supports QuickTime Movie (MOV), &nbsp;MPEG-4 (MP4), and 3GPP (3GP) "hinted" files.</p>
<p>Hinting is a post-process that you apply to your movies to make them RTSP-streamable. You can hint them with QuickTime Pro or the hinting tool available in the MPEG4IP package.</p>
<p>If you don't hint your .mov's or mp4's they will still be HTTP-downloadable but it will take them some seconds to start playing. You won't need a streaming server for this, just use good old Apache.</p>
<p>See also <a href="http://soundscreen.com/streaming/compress_hint.html">http://soundscreen.com/streaming/compress_hint.html</a></p>
<p>&nbsp;</p>
<p><span style="font-weight: bold;">Q. Can I stream mp3 files with DSS?</span></p>
<p>No, not by default, but the server can be configured using the experimental module "QTSSHttpFileModule" located in the modules.disabled directory. The module must be moved to the modules directory and an http_folder must be defined in the server's preference xml file.</p>
<p>&nbsp;</p>
<p><span style="font-weight: bold;">Q. Can I http download files with DSS?</span></p>
<p>No, not by default, but the server can be configured using the experimental module "QTSSHttpFileModule" located in the modules.disabled directory. The module must be moved to the modules directory and an http_folder must be defined in the server's preference xml file.</p>
<p>&nbsp;</p>
<p><span style="font-weight: bold;">Q. Can I configure DSS to stream live mp3 streams to simulate a radio station to connected users?</span></p>
<p>Yes. Use the MP3Broadcaster that is part of DSS to broadcast mp3 v1, v2, and v2.3 files from a server side playlist to DSS. All files must have the same sample rate.</p>
<p>&nbsp;</p>
<p><span style="font-weight: bold;">Q. Can I configure DSS to stream live .mp4, .3gp, or .mov streams to simulate a radio or tv station to connected users?</span></p>
<p>Yes. Use the PlaylistBroadcaster that is part of DSS, to stream hinted files from a server side playlist to DSS. All video files must have the same frame size and use the same codec and all audio files must have the same sample size and use the same codec.</p>
<p>&nbsp;</p>
<p><span style="font-weight: bold;">Q. Can I update the server side playlists while the playlist is being broadcast?</span></p>
<p>Yes. Replace the playlist file and add a playlist file using the playlist name and the extension ".updatelist" in the same directory as the playlist file.</p>
<p>&nbsp;</p>
<p><span style="font-weight: bold;">Q. Can I see what the upcoming files are while the server side playlist is playing?</span></p>
<p>Yes. Look for the file with the extensions ".upcoming" in the directory with the playlist.</p>
<p>&nbsp;</p>
<p><span style="font-weight: bold;">Q. Can I see the name of the current file being played by the server side playlist?</span></p>
<p>Yes. Look for a file with the extension ".current" in the directory with the playlist.</p>
<p>&nbsp;</p>
<p><span style="font-weight: bold;">Q. Can I tell the playlist broadcaster to stop playing a playlist after 0 or more files?</span></p>
<p>Yes. &nbsp;Add a playlist file using the playlist name and the extension ".stoplist" in the same directory as the playlist file and it will be read at the next song and then deleted. The broadcast will stop playing at the end of the stoplist.</p>
<p>&nbsp;</p>
<p><span style="font-weight: bold;">Q. Can I temporarily insert a set of files into the playlist while it is playing?</span></p>
<p>Yes. &nbsp;Add a playlist file with the playlist name and the extension ".insertlist" &nbsp;in the same directory as the playlist file and its list will be insert at the end of the next song and then deleted. The broadcast will revert back to the original list after playing the inserted list.</p>
<p>&nbsp;</p>
<p><span style="font-weight: bold;">Q.Where is the streaming server's preference xml file?</span></p>
<p>OS X: /Library/QuickTimeStreaming/Config/streamingserver.xml</p>
<p>Windows: c:\Program Files\Darwin Streaming Server\streamingserver.xml</p>
<p>Unix style OS: /etc/streaming/streamingserver.xml</p>
<p>&nbsp;</p>
<p><span style="font-weight: bold;">Q. Where are the default log, movie folder, modules, and configuration paths defined?</span></p>
<p>See the file defaultPaths.h in the source code.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="font-weight: bold;">Q. What codecs can I use with DSS?</span></p>
<p>Because DSS streams hinted streaming files, any file that has been successfully hinted can be used by DSS. &nbsp;Hinted files remove the need for the server to understand the media information of the files it streams.</p>
<p>&nbsp;</p>
<p><span style="font-weight: bold;">Q. How do I compile on Linux?</span></p>
<p>On Unix platforms, type "./Buildit" from within the source directory.</p>
<p>&nbsp;</p>
<p><span style="font-weight: bold;">Q. How do I create an installer directory and tar package?</span></p>
<p>On Unix platforms, type "./Buildit install". A DarwinStreamingSrvr-Platform install directory and tar file will be created.</p>
<p>See the file DevNotes.html file &nbsp;in the source code "Documentation" directory for more information.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="font-weight: bold;">Q. How do I compile on Windows?</span></p>
<p>DSS 5.5.5 or earlier</p>
<p>To build Darwin Streaming Server on Windows NT or Windows 2000, you must have a copy of Visual C++ version 6.0. There is a VC++ workspace file located inside the WinNTSupport directory that can be used to to build the server. Once the workspace is open, select Batch Build from the Build menu .</p>
<p>See the file DevNotes.html file &nbsp;in the source code "Documentation" directory for more information.</p>
<p>&nbsp;</p>
<p><span style="font-weight: bold;">Q.&nbsp;Why does it take so long (a few seconds) the first time I connect to my streaming server using the QuickTime Player?</span></p>
<p>The first time the player connects to an IP address it checks the bandwidth to the server which can take a few seconds. &nbsp;</p>
<p>&nbsp;</p>
<p><span style="font-weight: bold;">Q.&nbsp;Why does it take so long (30 seconds or more) the first time I connect to my streaming server using the QuickTime Player?</span></p>
<p>If there is a firewall or the default UDP port is unavailable the client will try alternate ports and protocols to connect to the server. This process can take up to a minute.</p>
<p>&nbsp;</p>
<p><span style="font-weight: bold;">Q.&nbsp;How do I get through a firewall?</span></p>
<p>The best solution is to configure the firewall to allow streaming access minimally on port 554 and preferably with udp support on 6970-6999, and 1220 for web admin access, 8000 for mp3 streaming, and 7070 for some streaming players. &nbsp; When that is not possible, the QuickTime Player will automatically try to switch to the HTTP protocol to stream from the server, this sometimes works but if the standard streaming ports are completely blocked by a firewall then streaming on port 80 should be tried.</p>
<p>&nbsp;</p>
<p><span style="font-weight: bold;">Q.&nbsp;How do I stream on Port 80 and have a Web server on the same system.</span></p>
<p>This is not possible without changing either DSS or the web server's port to something other than 80.</p>
<p>&nbsp;</p>
<p><span style="font-weight: bold;">Q.&nbsp;How do I set up Authenticated access?</span></p>
<p>Version 6.0 and later</p>
<p>Turn off guest access in the server preference xml file by setting the "enable_allow_guest_default" preference to&nbsp;"false".</p>
<p>The server will authenticate users against Directory Services and qtaccess files.</p>
<p>&nbsp;</p>
<p>Please see DSS admin guide located at <a href="http://developer.apple.com/opensource/server/streaming/qtss_admin_guide.pdf">http://developer.apple.com/opensource/server/streaming/qtss_admin_guide.pdf</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="font-weight: bold;">Q.&nbsp;What does this error mean?</span></p>
<p>&nbsp;"415 - Unsupported Media Type" -- file is probably not hinted or corrupt. The server was found but the requested media couldn't be accessed.&nbsp;</p>
<p>"-3285 disconnect" error -- a &nbsp;firewall probably, the server was found but a network failure occured.</p>
<p>"-5420 connection failed" -- server not found maybe not running or the machine or network is not connected</p>
<p>"404 file not found" &nbsp;-- means a file is not found on the server or a live stream is no longer broadcasting to the server.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>Q. Can I use the QuickTime logo or web badge with my server?</strong></p>
<p>Guidelines for use of the QuickTime logo and web badge are available at <a href="../../../softwarelicensing/agreements/quicktime.html">http://developer.apple.com/softwarelicensing/agreements/quicktime.html</a>.</p>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>

View file

@ -0,0 +1,19 @@
Here's a brief how-to guide to deinstall QTSS on the OS X platform.
1. Back up config files sitting at /Library/QuickTimeStreaming/Config/ as needed. Also, the qtaccess privileges file present in the Movies directory.
2. Delete the configuration receipt at /Library/Receipts/DarwinStreamingServer.pkg
3. Remove the server and the webmin perl script:
/usr/sbin/QuickTimeStreamingServer
/usr/sbin/streamingadminserver.pl
4. For completeness, also the Playlist Broadcaster & friends,
/usr/bin/PlaylistBroadcaster
/usr/bin/MP3Broadcaster
/usr/bin/StreamingLoadTool
/usr/bin/createuserstreamingdir
5. If deinstalling for good, also remove the relevant entries in
/etc/hostconfig
namely,
QTSSWEBADMIN=-YES-
QTSSRUNSERVER=-YES-

385
Documentation/License.rtf Normal file
View file

@ -0,0 +1,385 @@
{\rtf1\mac\ansicpg10000\cocoartf102
{\fonttbl\f0\froman\fcharset77 TimesNewRomanPSMT;\f1\froman\fcharset77 Times-Bold;\f2\fnil\fcharset77 Geneva;
\f3\fswiss\fcharset77 Helvetica-Bold;}
{\colortbl;\red255\green255\blue255;\red210\green0\blue0;}
\margl1440\margr1440\vieww12240\viewh10200\viewkind1\viewscale100
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
\f0\fs20 \cf0 \
\f1\b\fs24 ENGLISH\
\
\fs28 Apple Public Source License\
Apple Computer, Inc.\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
\f2\b0\fs20 \cf0 \
\f3\b\fs26 \cf2 Version 2.0 - August 6, 2003
\f2\b0\fs20 \cf0 \
Please read this License carefully before downloading this software.\
By downloading or using this software, you are agreeing to be bound by\
the terms of this License. If you do not or cannot agree to the terms\
of this License, please do not download or use the software.\
\
1. General; Definitions. This License applies to any program or other\
work which Apple Computer, Inc. ("Apple") makes publicly available and\
which contains a notice placed by Apple identifying such program or\
work as "Original Code" and stating that it is subject to the terms of\
this Apple Public Source License version 2.0 ("License"). As used in\
this License:\
\
1.1 "Applicable Patent Rights" mean: (a) in the case where Apple is\
the grantor of rights, (i) claims of patents that are now or hereafter\
acquired, owned by or assigned to Apple and (ii) that cover subject\
matter contained in the Original Code, but only to the extent\
necessary to use, reproduce and/or distribute the Original Code\
without infringement; and (b) in the case where You are the grantor of\
rights, (i) claims of patents that are now or hereafter acquired,\
owned by or assigned to You and (ii) that cover subject matter in Your\
Modifications, taken alone or in combination with Original Code.\
\
1.2 "Contributor" means any person or entity that creates or\
contributes to the creation of Modifications.\
\
1.3 "Covered Code" means the Original Code, Modifications, the\
combination of Original Code and any Modifications, and/or any\
respective portions thereof.\
\
1.4 "Externally Deploy" means: (a) to sublicense, distribute or\
otherwise make Covered Code available, directly or indirectly, to\
anyone other than You; and/or (b) to use Covered Code, alone or as\
part of a Larger Work, in any way to provide a service, including but\
not limited to delivery of content, through electronic communication\
with a client other than You.\
\
1.5 "Larger Work" means a work which combines Covered Code or portions\
thereof with code not governed by the terms of this License.\
\
1.6 "Modifications" mean any addition to, deletion from, and/or change\
to, the substance and/or structure of the Original Code, any previous\
Modifications, the combination of Original Code and any previous\
Modifications, and/or any respective portions thereof. When code is\
released as a series of files, a Modification is: (a) any addition to\
or deletion from the contents of a file containing Covered Code;\
and/or (b) any new file or other representation of computer program\
statements that contains any part of Covered Code.\
\
1.7 "Original Code" means (a) the Source Code of a program or other\
work as originally made available by Apple under this License,\
including the Source Code of any updates or upgrades to such programs\
or works made available by Apple under this License, and that has been\
expressly identified by Apple as such in the header file(s) of such\
work; and (b) the object code compiled from such Source Code and\
originally made available by Apple under this License.\
\
1.8 "Source Code" means the human readable form of a program or other\
work that is suitable for making modifications to it, including all\
modules it contains, plus any associated interface definition files,\
scripts used to control compilation and installation of an executable\
(object code).\
\
1.9 "You" or "Your" means an individual or a legal entity exercising\
rights under this License. For legal entities, "You" or "Your"\
includes any entity which controls, is controlled by, or is under\
common control with, You, where "control" means (a) the power, direct\
or indirect, to cause the direction or management of such entity,\
whether by contract or otherwise, or (b) ownership of fifty percent\
(50%) or more of the outstanding shares or beneficial ownership of\
such entity.\
\
2. Permitted Uses; Conditions & Restrictions. Subject to the terms\
and conditions of this License, Apple hereby grants You, effective on\
the date You accept this License and download the Original Code, a\
world-wide, royalty-free, non-exclusive license, to the extent of\
Apple's Applicable Patent Rights and copyrights covering the Original\
Code, to do the following:\
\
2.1 Unmodified Code. You may use, reproduce, display, perform,\
internally distribute within Your organization, and Externally Deploy\
verbatim, unmodified copies of the Original Code, for commercial or\
non-commercial purposes, provided that in each instance:\
\
(a) You must retain and reproduce in all copies of Original Code the\
copyright and other proprietary notices and disclaimers of Apple as\
they appear in the Original Code, and keep intact all notices in the\
Original Code that refer to this License; and\
\
(b) You must include a copy of this License with every copy of Source\
Code of Covered Code and documentation You distribute or Externally\
Deploy, and You may not offer or impose any terms on such Source Code\
that alter or restrict this License or the recipients' rights\
hereunder, except as permitted under Section 6.\
\
2.2 Modified Code. You may modify Covered Code and use, reproduce,\
display, perform, internally distribute within Your organization, and\
Externally Deploy Your Modifications and Covered Code, for commercial\
or non-commercial purposes, provided that in each instance You also\
meet all of these conditions:\
\
(a) You must satisfy all the conditions of Section 2.1 with respect to\
the Source Code of the Covered Code;\
\
(b) You must duplicate, to the extent it does not already exist, the\
notice in Exhibit A in each file of the Source Code of all Your\
Modifications, and cause the modified files to carry prominent notices\
stating that You changed the files and the date of any change; and\
\
(c) If You Externally Deploy Your Modifications, You must make\
Source Code of all Your Externally Deployed Modifications either\
available to those to whom You have Externally Deployed Your\
Modifications, or publicly available. Source Code of Your Externally\
Deployed Modifications must be released under the terms set forth in\
this License, including the license grants set forth in Section 3\
below, for as long as you Externally Deploy the Covered Code or twelve\
(12) months from the date of initial External Deployment, whichever is\
longer. You should preferably distribute the Source Code of Your\
Externally Deployed Modifications electronically (e.g. download from a\
web site).\
\
2.3 Distribution of Executable Versions. In addition, if You\
Externally Deploy Covered Code (Original Code and/or Modifications) in\
object code, executable form only, You must include a prominent\
notice, in the code itself as well as in related documentation,\
stating that Source Code of the Covered Code is available under the\
terms of this License with information on how and where to obtain such\
Source Code.\
\
2.4 Third Party Rights. You expressly acknowledge and agree that\
although Apple and each Contributor grants the licenses to their\
respective portions of the Covered Code set forth herein, no\
assurances are provided by Apple or any Contributor that the Covered\
Code does not infringe the patent or other intellectual property\
rights of any other entity. Apple and each Contributor disclaim any\
liability to You for claims brought by any other entity based on\
infringement of intellectual property rights or otherwise. As a\
condition to exercising the rights and licenses granted hereunder, You\
hereby assume sole responsibility to secure any other intellectual\
property rights needed, if any. For example, if a third party patent\
license is required to allow You to distribute the Covered Code, it is\
Your responsibility to acquire that license before distributing the\
Covered Code.\
\
3. Your Grants. In consideration of, and as a condition to, the\
licenses granted to You under this License, You hereby grant to any\
person or entity receiving or distributing Covered Code under this\
License a non-exclusive, royalty-free, perpetual, irrevocable license,\
under Your Applicable Patent Rights and other intellectual property\
rights (other than patent) owned or controlled by You, to use,\
reproduce, display, perform, modify, sublicense, distribute and\
Externally Deploy Your Modifications of the same scope and extent as\
Apple's licenses under Sections 2.1 and 2.2 above.\
\
4. Larger Works. You may create a Larger Work by combining Covered\
Code with other code not governed by the terms of this License and\
distribute the Larger Work as a single product. In each such instance,\
You must make sure the requirements of this License are fulfilled for\
the Covered Code or any portion thereof.\
\
5. Limitations on Patent License. Except as expressly stated in\
Section 2, no other patent rights, express or implied, are granted by\
Apple herein. Modifications and/or Larger Works may require additional\
patent licenses from Apple which Apple may grant in its sole\
discretion.\
\
6. Additional Terms. You may choose to offer, and to charge a fee for,\
warranty, support, indemnity or liability obligations and/or other\
rights consistent with the scope of the license granted herein\
("Additional Terms") to one or more recipients of Covered Code.\
However, You may do so only on Your own behalf and as Your sole\
responsibility, and not on behalf of Apple or any Contributor. You\
must obtain the recipient's agreement that any such Additional Terms\
are offered by You alone, and You hereby agree to indemnify, defend\
and hold Apple and every Contributor harmless for any liability\
incurred by or claims asserted against Apple or such Contributor by\
reason of any such Additional Terms.\
\
7. Versions of the License. Apple may publish revised and/or new\
versions of this License from time to time. Each version will be given\
a distinguishing version number. Once Original Code has been published\
under a particular version of this License, You may continue to use it\
under the terms of that version. You may also choose to use such\
Original Code under the terms of any subsequent version of this\
License published by Apple. No one other than Apple has the right to\
modify the terms applicable to Covered Code created under this\
License.\
\
8. NO WARRANTY OR SUPPORT. The Covered Code may contain in whole or in\
part pre-release, untested, or not fully tested works. The Covered\
Code may contain errors that could cause failures or loss of data, and\
may be incomplete or contain inaccuracies. You expressly acknowledge\
and agree that use of the Covered Code, or any portion thereof, is at\
Your sole and entire risk. THE COVERED CODE IS PROVIDED "AS IS" AND\
WITHOUT WARRANTY, UPGRADES OR SUPPORT OF ANY KIND AND APPLE AND\
APPLE'S LICENSOR(S) (COLLECTIVELY REFERRED TO AS "APPLE" FOR THE\
PURPOSES OF SECTIONS 8 AND 9) AND ALL CONTRIBUTORS EXPRESSLY DISCLAIM\
ALL WARRANTIES AND/OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING, BUT\
NOT LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF\
MERCHANTABILITY, OF SATISFACTORY QUALITY, OF FITNESS FOR A PARTICULAR\
PURPOSE, OF ACCURACY, OF QUIET ENJOYMENT, AND NONINFRINGEMENT OF THIRD\
PARTY RIGHTS. APPLE AND EACH CONTRIBUTOR DOES NOT WARRANT AGAINST\
INTERFERENCE WITH YOUR ENJOYMENT OF THE COVERED CODE, THAT THE\
FUNCTIONS CONTAINED IN THE COVERED CODE WILL MEET YOUR REQUIREMENTS,\
THAT THE OPERATION OF THE COVERED CODE WILL BE UNINTERRUPTED OR\
ERROR-FREE, OR THAT DEFECTS IN THE COVERED CODE WILL BE CORRECTED. NO\
ORAL OR WRITTEN INFORMATION OR ADVICE GIVEN BY APPLE, AN APPLE\
AUTHORIZED REPRESENTATIVE OR ANY CONTRIBUTOR SHALL CREATE A WARRANTY.\
You acknowledge that the Covered Code is not intended for use in the\
operation of nuclear facilities, aircraft navigation, communication\
systems, or air traffic control machines in which case the failure of\
the Covered Code could lead to death, personal injury, or severe\
physical or environmental damage.\
\
9. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO\
EVENT SHALL APPLE OR ANY CONTRIBUTOR BE LIABLE FOR ANY INCIDENTAL,\
SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING\
TO THIS LICENSE OR YOUR USE OR INABILITY TO USE THE COVERED CODE, OR\
ANY PORTION THEREOF, WHETHER UNDER A THEORY OF CONTRACT, WARRANTY,\
TORT (INCLUDING NEGLIGENCE), PRODUCTS LIABILITY OR OTHERWISE, EVEN IF\
APPLE OR SUCH CONTRIBUTOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\
DAMAGES AND NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY\
REMEDY. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OF LIABILITY OF\
INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT APPLY\
TO YOU. In no event shall Apple's total liability to You for all\
damages (other than as may be required by applicable law) under this\
License exceed the amount of fifty dollars ($50.00).\
\
10. Trademarks. This License does not grant any rights to use the\
trademarks or trade names "Apple", "Apple Computer", "Mac", "Mac OS",\
"QuickTime", "QuickTime Streaming Server" or any other trademarks,\
service marks, logos or trade names belonging to Apple (collectively\
"Apple Marks") or to any trademark, service mark, logo or trade name\
belonging to any Contributor. You agree not to use any Apple Marks in\
or as part of the name of products derived from the Original Code or\
to endorse or promote products derived from the Original Code other\
than as expressly permitted by and in strict compliance at all times\
with Apple's third party trademark usage guidelines which are posted\
at http://www.apple.com/legal/guidelinesfor3rdparties.html.\
\
11. Ownership. Subject to the licenses granted under this License,\
each Contributor retains all rights, title and interest in and to any\
Modifications made by such Contributor. Apple retains all rights,\
title and interest in and to the Original Code and any Modifications\
made by or on behalf of Apple ("Apple Modifications"), and such Apple\
Modifications will not be automatically subject to this License. Apple\
may, at its sole discretion, choose to license such Apple\
Modifications under this License, or on different terms from those\
contained in this License or may choose not to license them at all.\
\
12. Termination.\
\
12.1 Termination. This License and the rights granted hereunder will\
terminate:\
\
(a) automatically without notice from Apple if You fail to comply with\
any term(s) of this License and fail to cure such breach within 30\
days of becoming aware of such breach;\
\
(b) immediately in the event of the circumstances described in Section\
13.5(b); or\
\
(c) automatically without notice from Apple if You, at any time during\
the term of this License, commence an action for patent infringement\
against Apple; provided that Apple did not first commence\
an action for patent infringement against You in that instance.\
\
12.2 Effect of Termination. Upon termination, You agree to immediately\
stop any further use, reproduction, modification, sublicensing and\
distribution of the Covered Code. All sublicenses to the Covered Code\
which have been properly granted prior to termination shall survive\
any termination of this License. Provisions which, by their nature,\
should remain in effect beyond the termination of this License shall\
survive, including but not limited to Sections 3, 5, 8, 9, 10, 11,\
12.2 and 13. No party will be liable to any other for compensation,\
indemnity or damages of any sort solely as a result of terminating\
this License in accordance with its terms, and termination of this\
License will be without prejudice to any other right or remedy of\
any party.\
\
13. Miscellaneous.\
\
13.1 Government End Users. The Covered Code is a "commercial item" as\
defined in FAR 2.101. Government software and technical data rights in\
the Covered Code include only those rights customarily provided to the\
public as defined in this License. This customary commercial license\
in technical data and software is provided in accordance with FAR\
12.211 (Technical Data) and 12.212 (Computer Software) and, for\
Department of Defense purchases, DFAR 252.227-7015 (Technical Data --\
Commercial Items) and 227.7202-3 (Rights in Commercial Computer\
Software or Computer Software Documentation). Accordingly, all U.S.\
Government End Users acquire Covered Code with only those rights set\
forth herein.\
\
13.2 Relationship of Parties. This License will not be construed as\
creating an agency, partnership, joint venture or any other form of\
legal association between or among You, Apple or any Contributor, and\
You will not represent to the contrary, whether expressly, by\
implication, appearance or otherwise.\
\
13.3 Independent Development. Nothing in this License will impair\
Apple's right to acquire, license, develop, have others develop for\
it, market and/or distribute technology or products that perform the\
same or similar functions as, or otherwise compete with,\
Modifications, Larger Works, technology or products that You may\
develop, produce, market or distribute.\
\
13.4 Waiver; Construction. Failure by Apple or any Contributor to\
enforce any provision of this License will not be deemed a waiver of\
future enforcement of that or any other provision. Any law or\
regulation which provides that the language of a contract shall be\
construed against the drafter will not apply to this License.\
\
13.5 Severability. (a) If for any reason a court of competent\
jurisdiction finds any provision of this License, or portion thereof,\
to be unenforceable, that provision of the License will be enforced to\
the maximum extent permissible so as to effect the economic benefits\
and intent of the parties, and the remainder of this License will\
continue in full force and effect. (b) Notwithstanding the foregoing,\
if applicable law prohibits or restricts You from fully and/or\
specifically complying with Sections 2 and/or 3 or prevents the\
enforceability of either of those Sections, this License will\
immediately terminate and You must immediately discontinue any use of\
the Covered Code and destroy all copies of it that are in your\
possession or control.\
\
13.6 Dispute Resolution. Any litigation or other dispute resolution\
between You and Apple relating to this License shall take place in the\
Northern District of California, and You and Apple hereby consent to\
the personal jurisdiction of, and venue in, the state and federal\
courts within that District with respect to this License. The\
application of the United Nations Convention on Contracts for the\
International Sale of Goods is expressly excluded.\
\
13.7 Entire Agreement; Governing Law. This License constitutes the\
entire agreement between the parties with respect to the subject\
matter hereof. This License shall be governed by the laws of the\
United States and the State of California, except that body of\
California law concerning conflicts of law.\
\
Where You are located in the province of Quebec, Canada, the following\
clause applies: The parties hereby confirm that they have requested\
that this License and all related documents be drafted in English. Les\
parties ont exige que le present contrat et tous les documents\
connexes soient rediges en anglais.\
\
EXHIBIT A.\
\
"Portions Copyright (c) 1999-2003 Apple Computer, Inc. All Rights\
Reserved.\
\
This file contains Original Code and/or Modifications of Original Code\
as defined in and that are subject to the Apple Public Source License\
Version 2.0 (the 'License'). You may not use this file except in\
compliance with the License. Please obtain a copy of the License at\
http://www.opensource.apple.com/apsl/ and read it before using this\
file.\
\
The Original Code and all software distributed under the License are\
distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER\
EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,\
INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,\
FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.\
Please see the License for the specific language governing rights and\
limitations under the License."\
}

View file

@ -0,0 +1,196 @@
.TH MP3BROADCASTER 1 "August 13, 2002" "Apple Computer, Inc."
.SH NAME
MP3Broadcaster \- MP3 file playlist broadcaster
.SH SYNOPSIS
.B MP3Broadcaster
[-v] [-d] [-x] [-X] [-a ipAddress] [-p portNum] [-l filename] [-w filename] [-e filename] -c filename
.SH DESCRIPTION
.I MP3Broadcaster
broadcasts a set of MP3 files listed in a special playlist file format. If the MP3 source files
referenced in the playlist contain meta-data suitable for display in clients then this too is
streamed to a server on a separate TCP connection.
.PP
.I MP3Broadcaster
is intended to be used with
.IR QuickTimeStreamingServer (1)
which handles the details of delivering one or more MP3 broadcast streams to MP3 clients.
.I MP3Broadcaster
cannot be used to deliver a MP3 broadcast stream directly to a MP3 client. A MP3 stream
reflector server such as
.IR QuickTimeStreamingServer (1)
or
.I Shoutcast
must be used to deliver the stream to clients. You may also use
.I MP3Broadcaster
with other 'Shoutcast-compatible' servers such as
.I Icecast.
.PP
.I MP3Broadcaster
requires a
.B \-c
command line option followed by a playlist config file path. All other command line options
are not required. If
.I MP3Broadcaster
is used with no options it just prints a usage string to the command line.
.PP
A command line option of
.B \-d
must be specified if you want
.I MP3Broadcaster
to run as a foreground shell process. (It defaults to running as a background
shell process otherwise.)
.PP
The playlist configuration file specified with a
.B \-c
command line option is a plain ASCII text file with configuration parameters
for the MP3 broadcast specified one per line. A configuration keyword must be
specified on each line followed by one or more spaces followed by the
value to be set associated with that keyword. If the value is a character
string containing spaces it must be surrounded by double quotes.
.PP
For example, a playlist configuration file might be given as:
.RS
.nf
destination_ip_address 90.22.34.5
destination_base_port 8000
max_upcoming_list_size 1
play_mode sequential_looped
recent_songs_list_size 1
playlist_file /home/bozo/jazz.play
working_dir /home/bozo
logging enabled
show_current disabled
show_upcoming disabled
broadcast_name "Steve's Broadcaster"
broadcast_password hackme
broadcast_url http://myserver.nowhere.com:8000
broadcast_mount_point /HotJazz
broadcast_genre Jazz
.fi
.RE
which would cause
.I MP3Broadcaster
to start broadcasting the playlist named "jazz.play" in the directory
path "/usr/bozo" to the server located at IP address 90.22.34.5 on TCP
port number 8000. Assuming that the server at this IP address is
.IR QuickTimeStreamingServer (1)
and has been configured to accept MP3 streams on port 8000 with a MP3 broacast
password of "hackme" then the stream will be accepted by the server and be ready
to forward the stream to any client that requests the mountpoint of "/HotJazz".
.PP
The playlist file like the playlist configuration file is a plain text ASCII file
that list the MP3 files to be broadcast. The format of the file is a single line containing
string "*PLAY-LIST*" followed by a list of file paths to individual MP3 files with an optional
parameter of a number from 1 to 10 that designates the weight of the file. (This optional
parameter is used with the "play_mode" keyword associated with the value "weighted_random".
When this play mode is specified the files will be picked at random according to the
specfied weight.)
.PP
.PP
For example, a playlist file might be given as:
.RS
.nf
*PLAY-LIST*
"/home/bozo/my_first_song.mp3" 6
"/home/bozo/my_second_song.mp3" 7
"/home/bozo/my_favorite_song.mp3" 10
"/home/bozo/my_last_song.mp3" 3
.fi
.RE
which would cause each file in the playlist to be broadcast at random according to the
weight specified. (Assuming a play_mode of "weighted_random" is specified
in the configuration file.) If the optional weight parameter is not present
in the playlist file then a value of 10 is assumed. The weight parameter is
ignored if the play_mode is specfied as "sequential" or "sequential_looped".
.PP
Text lines in the playlist configuration file or the playlist file that begin
with the '#' character will be treated as comments and will not be read by
.I MP3Broadcaster.
.PP
The
.I MP3Broadcaster
may be run in "preflight" mode by using the
.B \-x
option which will cause the configuration file to be read
and the MP3 files to be scanned for potential errors. The
.I MP3Broadcaster
will not broadcast any files when run in this mode. You can
use this mode to check your configuration file for errors.
.SH OPTIONS
.PP
The
.I MP3Broadcaster
accepts the following command line options:
.TP
.B \-v
Displays the version and build information.
.TP
.B \-d
Runs
.I MP3Broadcaster
as a foreground shell process. (The default is to run as a background
shell process.)
.TP
.B \-x
Runs
.I MP3Broadcaster
in preflight mode. (See description above.)
.TP
.B \-X
Causes
.I MP3Broadcaster
to scan the MP3 files listed in the playlist file for errors.
.TP
.BI \-a " <ipaddr>"
Is the broadcast IP address as given by the argument
.I <ipaddr>.
The default if not specified in the playlist configuration or with
this option is the local loopback address. If this value is specfied
in the configuration file then using this option overrides that value.
.TP
.BI \-p " <portnumber>"
Is the TCP port number to be used in the broadcast as given by the argument
.I <portnumber>.
The default if not specified in the playlist configuration or with
this option is port number 8000. If this value is specified
in the configuration file then using this option overrides that value.
.TP
.BI \-c " filename"
Is the path to the playlist configuration file as given by the argument
.I filename.
The keyword values listed in
.I filename
must be one per line. Leading and trailing white space are not part of the
symbol name. Lines starting with # are ignored.
.TP
.BI \-l " filename"
Is the path to the playlist file as given by the argument
.I filename.
The MP3 file paths listed in
.I filename
must be one per line followed by an option weight value of between 1 to 10.
If the fle path names contains blanks then the path must be surrounded with
double quotes. The first line of
.I filename
must be the string "*PLAY-LIST*". Lines starting with # are ignored. Any value
specified with this option overrides a value given in the configuration file.
.TP
.BI \-w " path"
Is the path to the directory for temporary files. Any value specified with this
option overrides a value given in the configuration file.
.TP
.BI \-e " filename"
Is the path to an error log file as given by the argument
.I filename.
.SH "SEE ALSO"
QuickTimeStreamingServer(1), PlaylistBroadcaster(1)
.SH LIMITATIONS
The
.I MP3Broadcaster
does not perform down-sampling or re-encoding of the source MP3 files. If the source
MP3 files are encoded at a bit rate too high for reliable streaming then they must
be re-encoded by other means.

Binary file not shown.

Binary file not shown.

521
Documentation/ReadMe.rtf Normal file
View file

@ -0,0 +1,521 @@
{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf270
{\fonttbl\f0\froman\fcharset0 Times-Roman;\f1\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\vieww21200\viewh17740\viewkind0
\pard\ql\qnatural
\f0\b\fs36 \cf0 About Darwin Streaming Server \
\
\pard\ql\qnatural
\fs24 \cf0 Contents\
\pard\ql\qnatural
\b0\fs28 \cf0 \
Welcome to Darwin Streaming Server, Apple's open source version of the QuickTime Streaming Server technology allowing you to send streaming media across the Internet using the industry standard RTP and RTSP protocols. Based on the same code base as QuickTime Streaming Server, Darwin Streaming Server provides a high level of customizability and runs on a variety of platforms allowing you to manipulate the code to fit your needs. \
\
\pard\ql\qnatural
\b\fs24 \cf0 What's New with Darwin Streaming Server 6.0.3\
\pard\ql\qnatural
\b0\fs28 \cf0 - DSS now builds and runs 64-bit on MacOS X\
\pard\pardeftab720\ql\qnatural
\cf0 - Updates for example modules:\
\'a0\'a0- The example Authorization module has been updated.\
\'a0\'a0 \'a0Source code is available in:\'a0APIModules/QTSSDemoAuthorizationModule.bproj\
\'a0\'a0- The example Spam Defense module has been updated.\
\'a0\'a0 \'a0Source code is available in:\'a0APIModules/QTSSSpamDefenseModule.bproj\
\'a0\'a0- An example RTSP redirect module has been included\
\'a0\'a0 \'a0Source code is available in:\'a0APIModules/QTSSDemoRedirectModule.bproj\
\'a0\'a0Example modules are\'a0installed into:\
\'a0\'a0 \'a0(MacOS X): /Library/QuickTimeStreamingServer/Modules.disabled\
\'a0\'a0 \'a0(other Unix):\'a0/usr/local/sbin/StreamingServerModules\
- OS X based user account support is added using Apple Open Directory services and includes LDAP and Active Directory user account authentication and authorization \
- Separate thread pools are used for RTSP processing and RTP processing\
- Performance is improved on OS X systems with 4 and 8 cores over previous releases.\
- Supports hinted files greater than 4GB in size.\
- The posted pre-built MacOS package runs on MacOS X 10.5 or later only\
- No build support yet for non-Mac OS X systems (open source submissions are needed to build on other platforms)\
- No longer posting pre-built install binaries for non-Mac OS X systems.\
Version 5.5.5 for Linux and Windows can be downloaded from http://developer.apple.com/opensource/server/streaming/index.html\
\
\pard\ql\qnatural
\cf0 This release contains open source submissions for the following issues:
\b\fs24 \
\b0\fs28 - Fixed compilation problem on Solaris 10u3 (Stefan Parvu)\
- Fixed access log c-bytes value (Amir Wolf)\
- Fixed access log CPU utilization value\
- Fixed compilation problem on FC6 linux PPC (Matthew McGillis)\
- Fix to allow streaming of files with bad hint track references, allows compatibility with some popular encoders (Fredrik Widlund)\
- Fix StreamingProxy compilation problems for some non-MacOSX platforms\
- Added a HowTo for uninstalling DSS on a MacOS X system\
- Misc. fixes for Debian linux (Ben Humpert)\
- Fixed problem with video sync frame detection for MacOS X on Intel (Lorenzo Vicisano)\
\pard\pardeftab720\ql\qnatural
\cf0 \
\pard\ql\qnatural
\cf0 Please use http://dss.macosforge.org/ to submit your own Darwin Streaming Server modifications.\
\
\pard\ql\qnatural
\b\fs24 \cf0 What's New with Darwin Streaming Server 5.5.5b\
\
\pard\ql\qnatural
\b0\fs28 \cf0 Darwin Streaming Server 5.5.5b is a beta release containing open source submissions for the following issues:\
- Compilation problems using gcc 4 (Andreas Thienemann)\
- Support for SDPs created by VLC and Mpeg4IP (David Moore)\
- Fix date display in DSS Web Admin (Maksym Veremeyenko)\
- Better support for streaming through NAT (Denis Ahrens)\
- Better support for running DSS on a multi-homed system (Denis Ahrens)\
- Relaying problems with VLC (Alessandro Falaschi, http://labtel.ing.uniroma1.it/opencdn/darwinp.html)\
\
Please use http://www.opensource.apple.com/projects/modifications.html to submit your own Darwin Streaming Server modifications.\
\
\pard\ql\qnatural
\b\fs24 \cf0 What's New with Darwin Streaming Server 5.5.4\
\
\pard\ql\qnatural
\b0\fs28 \cf0 Darwin Streaming Server 5.5.4 includes the following enhancements to 5.5.3:\
\
- A fix to the unsigned character handling in the string parser resolves the following compiler generated issues:\
-- Failure to stream to non-english QuickTime Players\
-- Failure to stream live broadcast SDP files containing high-ascii characters\
-- Failure to authenticate with users and passwords with high-ascii characters\
\
\pard\ql\qnatural
\b\fs24 \cf0 What's New with Darwin Streaming Server 5.5.3\
\pard\ql\qnatural
\b0\fs28 \cf0 \
Darwin Streaming Server 5.5.3 includes the following enhancements to 5.5.1:\
\
- A security fix for DSS to prevent a crash when receiving an invalid RTSP request.\
- A security fix for DSS to prevent a crash when reading an invalid movie file.\
- An update to the Buildit script to build on Mac OS X intel systems.\
\
Darwin Streaming Server 5.5.1 includes the following enhancements to 5.5:\
\pard\ql\qnatural
\b\fs24 \cf0 \
\pard\ql\qnatural
\b0\fs28 \cf0 - A security fix for DSS Web Admin on Windows\
\
Darwin Streaming Server 5.5 includes the following enhancements to 5.0.1.1:\
\
- Latest security update changes\
- Latest 3GPP release 5 client support\
- High definition H.264 streaming \
\
\
Darwin Streaming Server 5.0.1.1 includes the following enhancements to 5.0:\
\
- Latest security update changes\
- Improved Safari compatibility\
\
Darwin Streaming Server 5.0\
\
- Enhanced multithread support \
- Home directory streaming (UNIX-based platforms only)\
- Broadcast directory streaming\
- HTTP to RTSP url redirection using QuickTime HREF support.\
- Improved security through non-root user execution (UNIX-based platforms only)\
- 3GPP streaming enhancements - As we constantly improve our support for streaming the latest digital media standards, DSS 5 includes a number of enhancements for 3GPP streaming\
\
It can be ported to other platforms by modifying a handful of platform-specific source files. For more information about the source code and how to port to other platforms, see the files AboutTheSource.html and SourceFAQ.html provided with the Darwin Streaming Server source code.\
\
For more information about the Darwin Streaming Server project and to obtain the Darwin Streaming Server 5.5 source, see Apple's Open Source Web site at: <http://developer.apple.com/darwin>.\
\
\
\pard\ql\qnatural
\b\fs24 \cf0 System Requirements\
\
\pard\ql\qnatural
\b0\fs28 \cf0 Darwin Streaming Server is currently available on the following platforms:\
\
\pard\li720\fi-720\ql\qnatural
\cf0 *Mac OS X (version 10.2.8 or later)\
\pard\ql\qnatural
\cf0 *Linux (RedHat 8/9, Intel)\
*Solaris 9 (SPARC)\
*Windows 2000 Server/2003 Server\
\
Darwin Streaming Server is compatible with QuickTime 4 or later client software. Digest mode Authentication and Skip Protection (first introduced in QuickTime Streaming Server 3.0) require QuickTime 5 or later client software.\
\
\pard\ql\qnatural
\b\fs24 \cf0 Installing Darwin Streaming Server (
\b0\fs28 Mac OS X
\b\fs24 )\
\
\pard\ql\qnatural
\b0\fs28 \cf0 To install Darwin Streaming Server 5.5 software, follow these \
steps:\
\
\pard\li90\fi-90\ql\qnatural
\cf0 1. After downloading Darwin Streaming Server, double-click the DarwinStreamingServer.dmg file. DarwinStreamingServer will mount a desktop image that contains DarwinStreamingServer.pkg. \
\pard\li360\fi-360\ql\qnatural
\cf0 \
2. Double-click the DarwinStreamingServer.pkg file. This will launch the installer.\
\
3. Click on the "lock" icon to make changes when prompted during installation. You will need to authenticate with the administrator username and password.\
\
4. Follow the onscreen instructions. After you have read and agreed to the license, you can proceed with the installation.\
\
5. If you are installing for the first time, after the install completes, you will be asked to create a user name and password for administering the server. You must complete this step to administer the server from a remote system using a web browser.\
\
If you are upgrading, you will be presented with a web browser login window.\
\
\pard\li360\fi-360\ql\qnatural
\b\fs24 \cf0 Set Up (
\b0\fs28 Mac OS X
\b\fs24 )\
\pard\ql\qnatural
\cf0 \
\pard\ql\qnatural
\b0\fs28 \cf0 After creating an administrator user name and password, you can connect to the Darwin Streaming Server from your web browser.\
\pard\li270\fi-270\ql\qnatural
\cf0 \
Enter the URL for your Darwin Streaming Server:\
\pard\li270\ql\qnatural
\cf0 http://myserver.com:1220\
\
Replace "myserver.com" with the name of your Darwin Streaming Server computer. \
1220 is the port number.\
\pard\ql\qnatural
\cf0 \
\
\pard\ql\qnatural
\b\fs24 \cf0 Installing Darwin Streaming Server (Linux, Solaris)\
\
\pard\ql\qnatural
\b0\fs28 \cf0 To install Darwin Streaming Server 5.5 software, follow these steps on the server computer:\
\
Stop any Darwin Streaming Server related processes.\
\
\pard\tx0\ql\qnatural
\cf0 IMPORTANT: Installing Darwin Streaming Server will remove older version of Darwin Streaming Server.
\fs24 \
\pard\ql\qnatural
\cf0 \
\pard\tx360\li360\fi-360\ql\qnatural
\fs28 \cf0 Expand the compressed (.gz) tar file and "cd" into one of the following directories, depending on the platform:
\fs24 \
\pard\ql\qnatural
\fs28 \cf0 \
\pard\li720\ql\qnatural
\cf0 DarwinStreamingSrvr5.5-Linux \
\fs24 \
\pard\ql\qnatural
\cf0 \
\pard\tx360\li360\fi-360\ql\qnatural
\fs28 \cf0 Then type:
\fs24
\fs28 \
\pard\ql\qnatural
\fs24 \cf0 \
\pard\li720\ql\qnatural
\cf0 ./Install\
\pard\ql\qnatural
\fs28 \cf0 \
\pard\tx360\li360\fi-360\ql\qnatural
\cf0 During the install, the streamingadminserver.pl application will automatically launch. To avoid the need to manually relaunch streamingadminserver.pl following reboots, you may want to configure your server machine to launch it automatically at boot time.\
\pard\ql\qnatural
\cf0 \
\pard\li360\fi-360\ql\qnatural
\b\fs24 \cf0 Set Up (Linux, Solaris)\
\pard\li360\fi-360\ql\qnatural
\b0\fs28 \cf0 During the install, you will be asked to create a user name and password for administering the server. You must complete this step to administer the server from a remote system using a web browser.\
\pard\ql\qnatural
\b\fs24 \cf0 \
\pard\ql\qnatural
\b0\fs28 \cf0 After creating an administrator user name and password, you can connect to the Darwin Streaming Server from your web browser.\
\pard\li270\fi-270\ql\qnatural
\cf0 \
Enter the URL for your Darwin Streaming Server:\
\pard\li270\ql\qnatural
\cf0 http://myserver.com:1220\
\
Replace "myserver.com" with the name of your Darwin Streaming Server computer. \
1220 is the port number.\
\pard\ql\qnatural
\cf0 \
\
\pard\ql\qnatural
\b\fs24 \cf0 Installing Darwin Streaming Server (Windows 2000/2003 Server)
\b0\fs28 \
\b\fs24 \
\pard\ql\qnatural
\b0\fs28 \cf0 The Streaming Admin requires
\f1\fs24 ActivePerl 5.8
\f0\fs28 (or later) to be running on the server machine. You must install a
\f1\fs24 Perl
\f0\fs28 interpreter in order to use the web-based administration software. \
\
\
To install Darwin Streaming Server software, follow these steps on the server computer:\
\
Stop any Darwin Streaming Server related processes.\
\
When the Server package is unzipped, a folder with Darwin Streaming Server and associated files will be created. Inside this folder is an Install script, named "Install.bat". Double-click this file to install the server and its components on the server machine. The installer also starts up the Streaming Server Admin, so keep the command prompt window open.\
\pard\ql\qnatural
\fs24 \cf0 \'a0\
\pard\ql\qnatural
\fs28 \cf0 The Install script will create the following directory:\
\
\pard\li540\ql\qnatural
\cf0 c:\\Program Files\\Darwin Streaming Server\\\
\pard\ql\qnatural
\cf0 \
Inside this directory you will find:\
\
\pard\li540\ql\qnatural
\cf0 DarwinStreamingServer.exe
\i - Server executable\
\i0 PlaylistBroadcaster.exe
\i - PlaylistBroadcaster executable\
\i0 MP3Broadcaster.exe \'96
\i MP3 Broadcaster executable
\i0 \
qtpasswd.exe
\i - Command-line utility for generating password files for access control\
\i0 StreamingLoadTool.exe
\i - RTSP simulated client stress tool
\i0 \
streamingadminserver.pl
\i - Admin Server that is used for administering the Streaming Server\
\i0 streamingserver.xml
\i - Default server configuration file\
\i0 relayconfig.xml-Sample
\i - Sample relay configuration file\
\i0 QTSSModules\\
\i - Folder containing QTSS API modules\
\i0 Movies\\
\i - Media folder\
\i0 Playlists\\ -
\i Folder containing Playlist configuration
\i0 \
Logs\\
\i - Folder containing access and error logs\
\i0 AdminHtml\\
\i - Folder containing the CGIs and the HTMl files required by the Admin Server\
\i0 Documentation\\
\i - Documentation folder\
\pard\ql\qnatural
\cf0 \
\pard\ql\qnatural
\i0 \cf0 The Install script also installs Darwin Streaming Server as a service in the Service Manager. It is possible to start, stop, and check server status from the Service control panel.\
\pard\li360\fi-360\ql\qnatural
\cf0 \
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
\cf0 The Install script will attempt to launch the Admin Server. Make sure that the Perl interpreter installed on your machine is in the system PATH.\
\
The Admin Server can be launched from the command prompt by typing:\
\
C:\\>
\i perlpath
\i0 "C:\\Program Files\\Darwin Streaming Server\\streamingadminserver.pl"\
\
\pard\li360\fi-360\ql\qnatural
\cf0 where
\i perlpath
\i0 is the path to the Perl interpreter on your machine.\
\
\
If you are installing for the first time, you will be asked to create a user name and password for administering the server. You must complete this step to administer the server from a remote system using a web browser.\
\
\
\pard\li360\fi-360\ql\qnatural
\b\fs24 \cf0 Set Up (Windows 2000/2003 Server)\
\pard\ql\qnatural
\cf0 \
\pard\ql\qnatural
\b0\fs28 \cf0 After creating an administrator user name and password, you can connect to the Darwin Streaming Server from your web browser.\
\pard\li270\fi-270\ql\qnatural
\cf0 \
Enter the URL for your Darwin Streaming Server:\
\pard\li270\ql\qnatural
\cf0 http://localhost:1220 on the same local system or\
http://myserver.com:1220 from a remote system\
\
Replace "myserver.com" with the name of your Darwin Streaming Server computer. \
1220 is the port number.\
\pard\li270\fi-270\ql\qnatural
\cf0 For help on using Streaming Server Admin, setting up secure administration (SSL), and setting up your server to stream hinted media, refer to the online Help by selecting the Question Mark button from the Streaming Server Admin.\
\pard\ql\qnatural
\cf0 \
\
\pard\ql\qnatural
\b\fs24 \cf0 Troubleshooting
\b0 \
\
\
\pard\ql\qnatural
\b\fs28 \cf0 * File Locations
\fs24 \
\pard\li1080\ql\qnatural
\b0 \cf0 \
\
\pard\ql\qnatural
\fs28 \cf0 \ul \ulc0 Darwin Streaming Server (Mac OS X)\ulnone \
/usr/sbin/QuickTimeStreamingServer
\i - Streaming Server app
\i0 \
/usr/sbin/streamingadminserver.pl
\i - QTSS Web Admin server
\i0 \
/Library/QuickTimeStreaming/Modules/
\i - QTSS plug-ins
\i0 \
/usr/bin/PlaylistBroadcaster
\i - The PlaylistBroadcaster
\i0 \
/usr//bin/MP3Broadcaster
\i - The MP3Broadcaster
\i0 \
/usr/bin/qtpasswd
\i - Generates password files for access control\
\i0 /usr//bin/StreamingLoadTool
\i - RTSP simulated client stress tool
\i0 \
/Library/QuickTimeStreaming/Config/
\i - QTSS config files
\i0 \
/Library/QuickTimeStreaming/Movies/
\i - Media files
\i0 \
/Library/QuickTimeStreaming/Docs/
\i - readme.html & user manual.pdf files
\i0 \
/Library/QuickTimeStreaming/logs/
\i - Logs\
\i0 /Library/QuickTimeStreaming/playlists
\i - Web Admin Playlist files
\i0 \
\pard\li1080\ql\qnatural
\fs24 \cf0 \
\pard\ql\qnatural
\fs28 \cf0 \ul Darwin Streaming Server (Unix)\ulnone \
/usr/local/sbin/DarwinStreamingServer
\i - Streaming Server app
\i0 \
/usr/local/sbin/streamingadminserver.pl
\i - QTSS Web Admin server
\i0 \
/usr/local/sbin/StreamingServerModules/
\i - QTSS plug-ins
\i0 \
/usr/local/bin/PlaylistBroadcaster
\i - The PlaylistBroadcaster
\i0 \
/usr/local/bin/MP3Broadcaster
\i - The MP3Broadcaster
\i0 \
/usr/local/bin/qtpasswd
\i - Generates password files for access control\
\i0 /usr/local/bin/StreamingLoadTool
\i - RTSP simulated client stress tool
\i0 \
/etc/streaming/
\i - QTSS config files
\i0 \
/usr/local/movies/
\i - Media files
\i0 \
/var/streaming/
\i - readme.html & user manual.pdf files
\i0 \
/var/streaming/logs
\i - Logs\
\i0 /var/streaming/playlists
\i - Web Admin Playlist files
\i0 \
\
\ul Darwin Streaming Server (Windows)
\b \ulnone \
\b0 C:\\Program Files\\Darwin Streaming Server\\\
C:\\Program Files\\Darwin Streaming Server\\Movies\
C:\\Program Files\\Darwin Streaming Server\\Playlists\
C:\\Program Files\\Darwin Streaming Server\\Logs\
C:\\Program Files\\Darwin Streaming Server\\QTSSModules\
C:\\Program Files\\Darwin Streaming Server\\AdminHtml
\fs24 \
\fs28 \
\pard\ql\qnatural
\b\fs24 \cf0 \
Public Mailing Lists\
\
\pard\ql\qnatural
\b0\fs28 \cf0 Through the Apple public mailing lists you can share experiences, questions, and comments with others who use the software. Apple employees may monitor the list, but Apple does not guarantee that questions sent to this list will be answered. For more information about joining the mailing lists, see the Apple mailing lists Web site at www.lists.apple.com.\
\pard\ql\qnatural
\b\fs24 \cf0 \
\pard\ql\qnatural
\b0\fs28 \cf0 For Darwin Streaming Server administration, join the Streaming Server mailing list, \'93streaming-server-users\'94. \
\
If you are interested in plug-in API or Open Source development, join the Streaming Server developer public mailing list, \'93streaming-server-developers\'94. \
\
The Darwin Streaming Server release is not supported by Apple Computer.\
\
\
\pard\ql\qnatural
\fs24 \cf0 \'a9 2008 Apple Computer, Inc. All rights reserved. Apple, the Apple logo, Mac, Macintosh, PowerBook, Power Macintosh, and QuickTime are trademarks of Apple Computer, Inc., registered in the United States and other countries. eMac, iBook, iMac, Power Mac and Xserve are trademarks of Apple Computer, Inc. All other product names are trademarks or registered trademarks of their respective holders.\
\
}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,423 @@
ADMIN PROTOCOL SPECIFICATION
DarwinStreamingServer 3.0 Beta Release
(This document is subject to change)
SERVER DATA ORGANIZATION
The server's internals are mapped to a hierarchical tree of element arrays. Each element is a named type including a container type for retrieval of sub-node elements.
PROTOCOL
The protocol relies upon the URI mechanism as defined by RFC2396 for specifying a container entity using a path and HTTP 1.0 RFC 1945 for specifying the Request and Response mechanisms.
REQUEST METHODS
HTTP GET is the current request and response method.
SESSION STATE
The session is closed at the end of each HTTP request response.
SUPPORTED REQUEST HEADER FEATURES
Authorization
SERVER DATA ACCESS
All data on the server is specified using a URI
DEFINITION OF SERVER URI
The following URI references the top level of the Streaming Server's hierarchical data tree using a simple HTTP GET request.
Example:
GET /modules/admin
URI REQUESTS
A valid request is an absolute reference (a URL beginning with "/") followed by the Server URI:
[absolute URL]?[parameters="value"(s)]+[command="value"]+
["option"="value"]
Example:
GET /modules/admin/server/qtssSvrClientSessions?parameters=rt+command=get
Design Goals:
Concept:
The server state machine and database can be accessed through a regular expression. The Admin protocol abstracts the QTSS module API to handle data access and in some cases to provide data access triggers for execution of server functions.
Flexibility:
Four basic functions provide all of the administrative functions used by the server: add, set, del or get.
Server Performance:
Server streaming threads are blocked during admin accesses to internal data. To minimize the blocking of the server's activities, the protocol allows scoped access to the server's data structures by allowing specific URL paths to any element.
Query Functionality:
Queries can contain an array iterator, a name lookup, a recursive tree walk, and a filtered response. All functions can execute in a single URI query.
Example of a query for the stream time scale and stream payload name from every stream in every session
GET /modules/admin/server/qtssSvrClientSessions/*/qtssCliSesStreamObjects?parameters=r+command=get+filter1=qtssRTPStrTimescale+filter2=qtssRTPStrPayloadName
"*" = array iterator
"parameters=rt" = 'r' recursive walk and 't' show data types in result.
"filter1=qtssRTPStrTimescale" = return the stream time scale
"filter2=qtssRTPStrPayloadName" = return the stream payload
Example of a query for all server module names and their descriptions
GET /modules/admin/server/qtssSvrModuleObjects?parameters=r+command=get+filter2=qtssModDesc+filter1=qtssModName
URI RULES
/path = absolute reference
* = iterate each element in current URL location
path/* = is defined as all elements contained in the "path" container
. = not supported
.. = not supported
; = not supported
? query options follow ("+" delimited name="value" pairs)
spaces and tabs are stop characters.
"" are supported for values and required for values containing spaces and tabs.
PATH DEFINITION
A path represents a server's virtual hierarchical data structure of containers and is expressed as a URL.
DATA REFERENCES
All Elements are arrays. Single element arrays may be referenced by "path/element", "path/element/", "path/element/*", and"path/element/1" are evaluated as the same query.
QUERY OPTIONS
URIs without a '?' default to a get request.
URIs containing a '?' designator must contain a "command=[get|set|del|add] " query option.
Query options are not case sensitive.
Query option values except for the command options are case sensitive.
Unknown query options are ignored.
Query options not required by a command are ignored.
COMMAND OPTION:
command=[GET | SET | DEL | ADD]
Unknown commands are reported as an error.
command=GET <- get data identified by URI
Command GET does not require other query options.
Example: GET /modules/admin/example_count
command=SET <- set data identified by URI
Value checking is not performed. Conversion between the text value and the actual value is type specific.
Example: GET /modules/admin/example_count?command=SET+value=5
OPTIONAL QUERY OPTIONS
type= <- if defined then type checking of the server element type and the set type is performed. If a match of the stored type and the request type fails an error is returned and the command fails.
Example: GET /modules/admin/maxcount?command=SET+value=5+type=SInt32
command=DEL <- delete data identified by URI
The command deletes the element referenced by the URL.
Example: GET /modules/admin/maxcount?command=DEL
command=ADD <- add data identified by URI
If the element at the end of the URL is an element then Add performs an add to the array of elements reference the element name.
required query options are
value=
type=
Example: GET /modules/admin/example_count ? command=ADD+value=6type=SInt16
If the element at the end of the URL is a QTSS_Object container then a "command=add" performs a named element add to the container.
required query options are
value=
type=
name=
Example: GET /modules/admin/?command=ADD+value=5+name=maxcount+type=SInt16
"parameters=":
'r' = recurse -> walk downward in hierarchy starting at end of URL. Recursion should be avoided if "*" iterators or direct URL access to elements can be used.
'v' = verbose -> return full path in name
'a' = access -> return read/write access
't' = type -> return date type of value
'd' = debug -> return debugging info with error
'c' = count -> return count of elements in path
Parameters are always single characters with no delimiters.
Parameter options follow the URL [URL]?parameters=[p][p]
example= path/path?parameters=rvat
ACCESS TYPES
r = read
w = write
p = pre-emptive safe
DATA TYPES
Data types can be any server allowed text value. New data types can be defined and returned by the server so data types are not limited to the basic set below.
"UInt8"
"SInt8"
"UInt16"
"SInt16"
"UInt32"
"SInt32"
"UInt64",
"SInt64"
"Float32"
"Float64"
"Bool8"
"Bool16"
"CharArray"
"QTSS_Object"
"void_pointer"
QTSS_Objects, pointers and unknown data types always converted to a host ordered string of hex values. Example of hex value result: unknown_pointer=DEADBEEF; type=void_pointer
URI POST FILTERS
Filters specify a subset of data to be returned on each request.
Multiple filters are evaluated in order with each result placed in the response.
RESPONSES
Example: Unauthorized
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="QTSS/modules/admin"
Server: QTSS
Connection: Close
Content-Type: text/plain
Example: OK result
HTTP/1.0 200 OK
Server: QTSS/3.0 [v252]-Linux
Connection: Close
Content-Type: text/plain
Container="/"
admin/
error:(0)
RESPONSE END
Each OK response ends with
error:(0)
RESPONSE DATA
All entity references follow the form [NAME=VALUE] ; [attribute="value"] , [attribute="value"].
NAME=VALUE
NAME=VALUE;attribute="value"
NAME=VALUE;attribute="value",attribute="value"
All container references follow the form [NAME/] ; [attribute="value"] , [attribute="value"].
NAME/
NAME/;attribute="value"
NAME;attribute="value",attribute="value"
The order of appearance of container references and the containerÕs entity references is important. This is especially true when the response is a recursive walk of a container hierarchy.
The "Container=" reference must appear at the beginning of each new level in the hierarchy. Each Container list of elements must be a complete list of the contained elements and any containers. The appearance of a "Container=" reference indicates the end of a previous containerÕs contents and the start of a new container.
The example below shows how each new container is identified with the unique path.
Container="/level1/"
field1="value"
field2="value"
level2a/
level2b/
Container="/level1/level2a/"
field1="value"
level3a/
level3b/
Container="/level1/level2a/level3a"
field1="value"
Container="/level1/level2a/level3b"
Container="/level1/level2b/"
field1="value"
level3a/
Container="/level1/level2b/level3a/"
field1="value"
ARRAY VALUES
Arrays of elements are handled in the response by using a numerical value to represent the index. Arrays are containers.
Container="/level1/"
field1="value"
field2="value"
array1/
Container="/level1/array1/"
1=value
2=value
Array elements may be containers.
Container="/level1/array1/"
1/
2/
3/
Container="/level1/array1/1/"
field1="value"
field2="value"
Container="/level1/array1/2/"
Container="/level1/array1/3/"
field1="value"
ROOT VALUE
/admin
ERRORS IN RESPONSE
The Error state for the Request is always reported with each response at the end of the data.
Error:(0) <- no Error
Error:(404) <- data not found.
The number appearing in the parenthesis is an HTTP error code followed by an error string when debugging is turned on using the "parameters=d" query option.
error:(404);reason="No data found"
SETTING ENTITY VALUES
When changing server values the entity names and their values are located in the request body. If a match is made on an entity name including the URL base at the current container level then the value is set in the server provided the read write attribute allows the set.
base = /base/container
name = value
/base/container/name="value"
EXAMPLES
================================
This first example uses basic authentication and shows the HTTP response headers. Later examples will focus on the content of the response and URI of the request. Note a simple method for performing a request is to use a web browser using the URL
http://17.221.45.238:554/modules/admin/?parameters=a+command=get
----------------Request----------------
GET /modules/admin?parameters=a+command=get
Authorization: Basic QWXtaW5pT3RXYXRvcjXkZWZhdWx0
----------------Response----------------
HTTP/1.0 200 OK
Server: QTSS/3.0 [v252]-Linux
Connection: Close
Content-Type: text/plain
Container="/"
admin/;a=r
error:(0)
================================
3 Examples Request
----------------Request 1----------------
GET /modules/admin?command=get+parameters=r <--recurse *get everything*
----------------Request 2----------------
GET /modules/admin?command=get+parameters=rat <- recurse, access, type
----------------Request 3----------------
GET /modules/admin/*<- request elements in admin command not required if no query options are present.
========================================
An admin client may wish to just monitor the session list like so
----------------Request----------------
GET /modules/admin/server/qtssSvrClientSessions/*
----------------Response-----------------
Container="/admin/server/qtssSvrClientSessions/"
12/
2/
4/
8/
error:(0)
Response is a qtssSvrClientSessions list of unique session ids
----------------Request----------------
GET /modules/admin/server/qtssSvrClientSessions/*/qtssCliSesStreamObjects/*
----------------Response-----------------
Container="/admin/server/qtssSvrClientSessions/3/qtssCliSesStreamObjects/"
0/
1/
error:(0)
qtssCliSesStreamObjects are an indexed array of streams
========================================
GET /modules/admin/server/qtssSvrClientSessions/3/qtssCliSesStreamObjects/0/*
----------------Response-----------------
qtssRTPStrTrackID="4"
qtssRTPStrSSRC="683618521"
qtssRTPStrPayloadName="X-QT/600"
qtssRTPStrPayloadType="1"
qtssRTPStrFirstSeqNumber="-7111"
qtssRTPStrFirstTimestamp="433634204"
qtssRTPStrTimescale="600"
qtssRTPStrQualityLevel="0"
qtssRTPStrNumQualityLevels="3"
qtssRTPStrBufferDelayInSecs="3.000000"
qtssRTPStrFractionLostPackets="0"
qtssRTPStrTotalLostPackets="52"
qtssRTPStrJitter="0"
qtssRTPStrRecvBitRate="1526072"
qtssRTPStrAvgLateMilliseconds="501"
qtssRTPStrPercentPacketsLost="0"
qtssRTPStrAvgBufDelayInMsec="30"
qtssRTPStrGettingBetter="0"
qtssRTPStrGettingWorse="0"
qtssRTPStrNumEyes="0"
qtssRTPStrNumEyesActive="0"
qtssRTPStrNumEyesPaused="0"
qtssRTPStrTotPacketsRecv="6763"
qtssRTPStrTotPacketsDropped="0"
qtssRTPStrTotPacketsLost="0"
qtssRTPStrClientBufFill="0"
qtssRTPStrFrameRate="0"
qtssRTPStrExpFrameRate="3903"
qtssRTPStrAudioDryCount="0"
qtssRTPStrIsTCP="false"
qtssRTPStrStreamRef="18861508"
qtssRTPStrCurrentPacketDelay="-2"
qtssRTPStrTransportType="0"
qtssRTPStrStalePacketsDropped="0"
qtssRTPStrTimeFlowControlLifted="974373815109"
qtssRTPStrCurrentAckTimeout="0"
qtssRTPStrCurPacketsLostInRTCPInterval="52"
qtssRTPStrPacketCountInRTCPInterval="689"
QTSSReflectorModuleStreamCookie=(null)
qtssNextSeqNum=(null)
qtssSeqNumOffset=(null)
QTSSSplitterModuleStreamCookie=(null)
QTSSFlowControlModuleLossAboveTol="0"
QTSSFlowControlModuleLossBelowTol="3"
QTSSFlowControlModuleGettingWorses="0"
error:(0)
========================================
Here is an example of monitoring just the IP addresses of connected clients. Only the IP addresses are polled and returned.
----------------Request----------------
modules/admin/server/qtssSvrClientSessions/*/qtssCliRTSPSessRemoteAddrStr
---------------Response----------------
Container="/admin/server/qtssSvrClientSessions/5/"qtssCliRTSPSessRemoteAddrStr=17.221.40.1
Container="/admin/server/qtssSvrClientSessions/6/"qtssCliRTSPSessRemoteAddrStr=17.221.40.2
Container="/admin/server/qtssSvrClientSessions/8/"qtssCliRTSPSessRemoteAddrStr=17.221.40.3
Container="/admin/server/qtssSvrClientSessions/14/"qtssCliRTSPSessRemoteAddrStr=17.221.40.4
error:(0)
========================================
SPECIAL PATHS
PREFERENCES
Setting a server or module preference value causes the value to be flushed to the server's xml preference file and the new value will take affect immediately.
/modules/admin/server/qtssSvrPreferences <-- server preferences
/modules/admin/server/qtssSvrModuleObjects/*/qtssModPrefs/ <-- module preferences
The elements defined in qtssSvrPreferences are modify-only elements.
The elements in qtssModPrefs containers may be added, deleted and modified. Some deleted elements may be restored automatically by a module if the server or module requires them. The add, del, and set commands on a qtssModPrefs element will cause the streaming server.xml file to be rewritten.
SERVER STATE
/modules/admin/server/qtssSvrState
Controls the sever state. It can be modified as a UInt32 with the following values.
qtssStartingUpState = 0,
qtssRunningState = 1,
qtssRefusingConnectionsState = 2,
qtssFatalErrorState = 3,//a fatal error has occurred, not shutting down yet
qtssShuttingDownState = 4,
qtssIdleState = 5 // Like refusing connections state, but will also kill any currently connected clients
See the QTSS.h API documentation for information about other documented server attributes.

View file

@ -0,0 +1,125 @@
.TH BROADCASTERCTL 1 "August 16, 2002" "Apple Computer, Inc."
.SH NAME
broadcasterctl \- controller for the QuickTime Broadcaster
.SH SYNOPSIS
.B broadcasterctl
[-b broadcaster-path] [-a audiopreset] [-v videopreset] [-n networkpreset]
[-t (audio|video|av)] [-r (record|norecord)] [-p recording-path] [-f settingsfile]
(config|status|presets|launch|start|stop|restart|quit)
.SH DESCRIPTION
.I broadcasterctl
is a command line tool for controlling the
.I QuickTime Broadcaster
application. Using
.I broadcasterctl
you can configure, launch, start, and stop a
.SM QuickTime
streaming broadcast generated by the
.SM MacOS X
.I QuickTime Broadcaster
application.
.PP
The
.I QuickTime Broadcaster
application must be accessable on the local host on which the terminal session is exectuting in order to
communicate with that application. (i.e. It will not control a network remote copy of the
application.)
.SH OPTIONS
.PP
The following command line options can be invoked with
.I broadcasterctl:
.TP
.B config
Sets the configuration of the
.I QuickTime Broadcaster
application to be that of the currently specified settings file.
.TP
.B status
Returns the current status
.I QuickTime Broadcaster
application.
.TP
.B presets
Sets the presets of the
.I QuickTime Broadcaster
application to be that of the currently specified preset values.
.TP
.B launch
Launches the
.I QuickTime Broadcaster
application.
.TP
.B start
Tells the
.I QuickTime Broadcaster
application to begin the broadcast.
.TP
.B stop
Tells the
.I QuickTime Broadcaster
application to stop the broadcast.
.TP
.B restart
Tells the
.I QuickTime Broadcaster
application to restart the broadcast.
.TP
.B quit
Causes the
.I QuickTime Broadcaster
application to quit.
.TP
.BI \-a " audiopreset"
Specifies the the current audio preset configuration to be the name given in
the
.I audiopreset
parameter.
.TP
.BI \-b " broadcaster-path"
Specifies the file path to the
.I QuickTime Broadcaster
application.
.TP
.BI \-f " settingsfile"
Specifies the file path to the broadcast settings file.
.TP
.BI \-n " networkpreset"
Specifies the the current network preset configuration to be the name given in
the
.I networkpreset
parameter.
.TP
.BI \-p " recording-path"
Specifies the file path to record the broadcast to.
.TP
.BI \-r " (record|norecord)"
Controls whether or not the
.I QuickTime Broadcaster
will record the broadcast to a file as it is broadcasting
the stream. Specify
.I record
to record the broadcast and
.I norecord
to do nothing. (The default is the
.I norecord
option.)
.TP
.BI \-t " (audio|video|av)"
Specifies the type of broadcast to be originated. Specifiy
.I audio
for an audio-only broadcast,
.I video
for an video-only broadcast, or
.I av
for a combination audio/video broadcast.
.TP
.BI \-v " videopreset"
Specifies the the current video preset configuration to be the name given in
the
.I videopreset
parameter.
.SH "SEE ALSO"
QuickTimeStreamingServer(1), ps(1), kill(1)
.SH LIMITATIONS
Only one audio, video, or audio/video session can be controlled per invokation of
.I broadcasterctl.

View file

@ -0,0 +1,425 @@
AVT Working Group D. Serenyi
Internet Draft Apple Computer
Document: <draft-serenyi-avt-rtp-meta-00.txt> November 2001
Category: Standards Track
RTP Payload Format for Payload Meta-Information
Status of this Memo
This document is an Internet-Draft and is in full conformance with all
provisions of Section 10 of RFC2026 [ ].
Internet-Drafts are working documents of the Internet Engineering Task
Force (IETF), its areas, and its working groups. Note that other
groups may also distribute working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet- Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
1. Abstract
This memo describes the RTP payload format for payload meta-
information. A RTP-Meta-Info packet is a collection of individual
fields. Each field has its own format: the format of some fields are
documented here, other fields may be defined and documented elsewhere.
This memo also specifies methods within SDP (Session Description
Protocol) and RTSP (Real-time Streaming Protocol) for negotiating the
contents of an RTP-Meta-Info stream.
2. Conventions used in this document
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC-2119 [ ].
Serenyi Standards Track 1
INTERNET-DRAFT RTP Payload Meta-Information Nov 2001
3. Introduction
Certain RTP clients, such as RTP reflectors, relays, and caching
proxies, require per-packet meta information that goes beyond the
sequence number and timestamp already provided in the RTP header. For
instance, a caching proxy may want to provide stream thinning to its
clients in case those clients are bandwidth constrained. If that
stream thinning is based on the type of video frame being sent by the
origin server, there is no payload-independent way for the caching
proxy to determine the frame type.
4. Format of the RTP-Meta-Info Payload Type
This section documents the format of the RTP-Meta-Info payload as a
series of fields. The format of individual fields is described in
Section 6, or in other documents.
The format of each field in a RTP-Meta-Info payload consists of a
field header and a field body. The field header can either have the
"standard" format or the "compressed" format. The first bit of each
field header indicates the type of field, so it is possible to mix
standard and compressed fields in the same packet. The bit should be 0
for standard format fields, 1 for compressed format fields.
The standard format consists of a 15 bit field name and a 2 octet
field length. The field name should be ASCII representations of
alphanumeric characters, such as "ft". Because the first character has
only 7 bits of space allocated, the names must use only 7-bit ASCII
characters. The field length should be the length of the entire field
body in octets.
The following is an example of the standard RTP-Meta-Info payload
format:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|C| field name | field len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| field data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| .... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|C| field name | field len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| field data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| .... |
Serenyi Standards Track 2
INTERNET-DRAFT RTP Payload Meta-Information Nov 2001
The compressed format requires out-of-band negotiation between client
and server. During the negotiation process, a 7-bit field ID is
negotiated for each field name. Instead of the field names being sent
in the RTP payload, only the field ID is sent. Negotiation can either
happen through RTSP, described in section 5, or through the SDP
description of the RTP-Meta-Info stream, described in section 6.
In either case, the field description will be a text header consisting
of a semi-colon list of field names and field IDs. For example the
following could be a server to client RTSP header:
x-RTP-Meta-Info: to=0;ft=1;ba=2;rb=3
Each semi-colon delimited section of the header maps a field name to a
unique ID. The field IDs must be between 0 and 127, because they are
represented by 7 bits in the compressed header.
The format of the compressed header is the 1-bit header type
identifier, followed by the 7-bit field Id, followed by a 1-octet
field length.
The following is an example of a compressed RTP-Meta-Info packet with
both compressed and standard fields:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|C| field ID | field len | field data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| .... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|C| field name | field len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| field data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| .... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|C| field ID | field len | field data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| .... |
5. Field Negotiation Through RTSP
Any payload can be re-encoded as an RTP-Meta-Info stream through the
x-RTP-Meta-Info RTSP header.
Serenyi Standards Track 3
INTERNET-DRAFT RTP Payload Meta-Information Nov 2001
The "x- RTP-Meta-Info" header should be sent from a client to server
on a SETUP, and echoed by the server in its SETUP response. If the
header is not echoed, the client must assume that the server does not
support this header.
The body of the x-RTP-Meta-Info header follows the format described in
section 3: the field format followed by a semi-colon delimited list of
field names. In the client request, this is the list of fields the
client would like to receive in the RTP stream specified by the SETUP.
In the server response, this is the list of fields the server will
provide in that RTP stream. The response may also contain field ID
mappings for some or all of the field names if the server supports the
compressed header format. The server may return a subset of the field
names in the event the server doesn't support all the requested
fields, or some fields don't apply to the RTP stream specified by the
SETUP.
Example x-RTP-Meta-Info header in SETUP request:
x-RTP-Meta-Info; to;bi;bo
Example x-RTP-Meta-Info header in SETUP response:
x-RTP-Meta-Info: to=0;bi;bo=1
or:
x-RTP-Meta-Info: to;bi
6. Describing the RTP-Meta-Info Payload in SDP
It is recommended that any source of RTP-Meta-Info payload packets
describe the contents of the payload as part of the SDP description of
the media. RTP-Meta-Info descriptions consist of two additional a=
headers. The a=x-embedded-rtpmap header tells the client the payload
type of the underlying RTP payload. The a=x-RTP-Meta-Info header is a
field description equivalent in format to the x-RTP-Meta-Info header
described in section 4.
Example SDP description of the RTP-Meta-Info payload:
m=other 5084 RTP/AVP 96
a=rtpmap:96 x-RTP-Meta-Info
a=x-embedded-rtpmap:96 x-QT
a=x-RTP-Meta-Info: standard;to;bi;bo
7. Field Definitions
The fields defined below are primarily meant to be used by RTSP / RTP
caching proxies and by broadcasters sending to a reflecting server.
More field definitions can be added as is necessary.
Serenyi Standards Track 4
INTERNET-DRAFT RTP Payload Meta-Information Nov 2001
7.1 transmit time field, 'tt'
This field consists of a single 8-octet unsigned integer representing
the recommended transmission time of the RTP packet in milliseconds.
The transmit times are always offset from the start of the media
presentation. For example, if the SDP response for a URL includes a
range of 0-729.45, and the client makes a PLAY request with a Range of
100-729.45, then the first RTP packet from the server should have a tt
value of approximately 100,000 (it may not be exactly 100,000 because
the server is free to find a frame nearby the requested time). If the
SDP for a URL does not contain a range, then the client may at least
use these values as relative offsets.
Example uncompressed transmit time field:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| field name, 'tt' | field len, 8 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| hi-order transmit time |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| lo-order transmit time |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
7.2 frame type field, 'ft'
This field consists of a single 16-bit unsigned integer value with
several well-known values representing different frame types. The
well-known values are as follows:
0 - unknown frame type
1 - key frame
2 - b-frame
3 - p-frame
Future versions may add additional frame types. Any value greater than
3 should be considered to be an unknown frame type.
This field is only valid for video RTP streams. If a client asks for
it when setting up another media type, the server may strip this sub-
extension from its "x-RTP-Extension" response, or it may provide the
field with a value of 0 in every packet.
Example uncompressed frame type field:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| field name, 'ft' | field len, 2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| frame type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Serenyi Standards Track 5
INTERNET-DRAFT RTP Payload Meta-Information Nov 2001
7.3 packet number field, 'pn'
This field consists of a sinle 64-bit unsigned integer value. The
value is the packet number offset from the absolute start of the
stream. For example, if the SDP response for a URL includes a range of
0-729.45, and the client makes a PLAY request with a range of 0-
729.45, the pn value of the first packet will be 0, and increment by 1
for each subsequent packet. If there are 1000 packets between in the
first 60 seconds of a stream, and a client makes a PLAY request of 60-
729.45, the pn value of the first packet will be 1001, and increment
by 1 for each subsequent packet.
Example uncompressed packet number field:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| field name, 'pn' | field len, 8 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| hi-order packet number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| lo-order packet number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
7.4 packet position field, 'pp'
This field consists of a single 64-bit unsigned integer value. The
value is the byte offset of this packet from the absolute start of the
stream. For example, if the SDP response for a URL includes a range of
0-729.45, and the client makes a PLAY request with a range of 100-
729.45, then the pp value of the first video RTP packet will be the
total number of bytes of the video RTP packets between 0 - 100. Only
the RTP packet payload bytes are used to compute each pp value. Some
RTP streams, because they are live or dynamic media, will not be able
to supply this identifier. In general, if the media SDP has a range
attribute, the server will be able to provide the pp extension.
Example uncompressed packet position field:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| field name, 'pp' | field len, 8 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| hi-order packet position |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| lo-order packet position |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Serenyi Standards Track 6
INTERNET-DRAFT RTP Payload Meta-Information Nov 2001
7.5 media data field, 'md'
This field contains media data for the underlying RTP payload.
Example uncompressed media data field:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| field name, 'md' | field len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ... |
7.6 sequence number, 'sq'
This field consists of a 2-octet RTP sequence number. This field is
useful for mapping RTP-Meta-Info fields to the underlying payload data
that they refer to, if that data is being sent out-of-band.
Example uncompressed sequence number field:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| field name, 'sq' | field len, 2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
8. Security Considerations
None.
9. References
[1] Schulzrinne, H., "Real Time Streaming Protocol (RTSP)", RFC 2326,
April 1998
[2] Schulzrinne, H., "RTP: A Transport Protocol for Real-Time
Applications", RFC 1889, January 1996
[3] Handley, M., "SDP: Session Description Protocol", RFC 2327, April
1998
Serenyi Standards Track 7
INTERNET-DRAFT RTP Payload Meta-Information Nov 2001
10. Acknowledgments
11. Author's Addresses
Denis Serenyi
Apple Computer
1 Infinite Loop
Cupertino, CA 95014
Email: denis@apple.com
Chris LeCroy
Apple Computer
1 Infinite Loop
Cupertino, CA 95014
Email: lecroy@apple.com
12. Full Copyright Statement
"Copyright (C) The Internet Society (date). All Rights Reserved. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implmentation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English. The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE."

View file

@ -0,0 +1,53 @@
.Dd February 11, 2005 \" DATE
.Dt MP3Broadcaster 1 \" Program name and manual section number
.Os Darwin
.Sh NAME \" Section Header - required - don't modify
.Nm MP3Broadcaster
.Nd MP3 file playlist broadcaster
.Sh SYNOPSIS \" Section Header - required - don't modify
.Nm
.Op Fl vdixX \" [-vdixX]
.Op Fl a Ar ipAddress \" [-a ipAddress]
.Op Fl p Ar portNum \" [-p portNum]
.Op Fl l Ar filename \" [-l filename]
.Op Fl w Ar filename \" [-w filename]
.Op Fl e Ar filename \" [-e filename]
-c fileName
.Sh DESCRIPTION \" Section Header - required - don't modify
.Nm
streams a playlist of MP3 files to an instance of QuickTimeStreamingServer.
.Pp
A list of flags and their descriptions:
.Bl -tag -width -indent \" Differs from above in -compact tag removed
.It Fl v
display version
.It Fl d
display version
.It Fl i
use 'icy-' protocol header prefix (default is 'x-audio-')
.It Fl x
preflight configuration
.It Fl X
check MP3 files
List running currently broadcasts
.It Fl a Ar ipaddr
broadcast to this address (default = local loopback)
.It Fl p Ar portNum
broadcast to this port (default = 8000)
.It Fl l Ar filename
path to playlist (overrides config file)
.It Fl w Ar filename
path to dir to create temp lists (overrides config file)
.It Fl e Ar filename
print output to error file
.El
.Sh FILES
.Bl -tag -width /Library/QuickTimeStreaming/Playlists -compact
.It Pa /Library/QuickTimeStreaming/Movies
.It Pa /Library/QuickTimeStreaming/Playlists
.El
.Sh SEE ALSO
.Xr QuickTimeStreamingServer 8 ,
.Xr PlaylistBroadcaster 1 ,
.\" .Sh BUGS
.\" .Sh HISTORY

View file

@ -0,0 +1,54 @@
.Dd February 11, 2005 \" DATE
.Dt PlaylistBroadcaster 1 \" Program name and manual section number
.Os Darwin
.Sh NAME \" Section Header - required - don't modify
.Nm PlaylistBroadcaster
.Nd hinted media playlist broadcaster
.Sh SYNOPSIS \" Section Header - required - don't modify
.Nm
.Op Fl vhpcatfdl \" [-dvxIh]
.Op Fl i Ar destAddress \" [-i destAddress]
.Op Fl e Ar filename \" [-e filename]
.Op Fl s Ar broadcastnum \" [-s broadcastnum]
.Ar fileName
.Sh DESCRIPTION \" Section Header - required - don't modify
.Nm
streams a playlist of hinted files to an instance of QuickTimeStreamingServer.
.Pp
A list of flags and their descriptions:
.Bl -tag -width -indent \" Differs from above in -compact tag removed
.It Fl v
Prints version
.It Fl h
Prints usage
.It Fl p
Verify a broadcast description file and movie list
.It Fl c
Write the current movie to the log file
.It Fl a
ANNOUNCE the broadcast to the server
.It Fl t
Send the broadcast over TCP to the server
.It Fl f
Force a new SDP file to be created even if one already exists
.It Fl d
Run attached to the terminal
.It Fl l
List currently running broadcasts
.It Fl s Ar broadcastnum
Stop a running broadcast
.It Fl i Ar myconfigpath.conf
Specify the destination ip address. Overrides config file value.
.It Fl e Ar filename
Log errors to filename
.El
.Sh FILES
.Bl -tag -width /Library/QuickTimeStreaming/Playlists -compact
.It Pa /Library/QuickTimeStreaming/Movies
.It Pa /Library/QuickTimeStreaming/Playlists
.El
.Sh SEE ALSO
.Xr QuickTimeStreamingServer 8 ,
.Xr MP3Broadcaster 1 ,
.\" .Sh BUGS
.\" .Sh HISTORY

View file

@ -0,0 +1,52 @@
.Dd February 11, 2005 \" DATE
.Dt QuickTimeStreamingServer 8 \" Program name and manual section number
.Os Darwin
.Sh NAME \" Section Header - required - don't modify
.Nm QuickTimeStreamingServer
.Nd RTP/RTSP streaming server
.Sh SYNOPSIS \" Section Header - required - don't modify
.Nm
.Op Fl hvdxID \" [-dvxIh]
.Op Fl c Ar configFile.xml \" [-c configFile.xml]
.Op Fl o Ar configFile.conf \" [-o configFile.conf]
.Op Fl S Ar seconds \" [-S seconds]
.Sh DESCRIPTION \" Section Header - required - don't modify
.Nm
is the Real Time Streaming Protocol (RTSP)/Realtime Trasport Protocol(RTP) server.
.Pp
A list of flags and their descriptions:
.Bl -tag -width -indent \" Differs from above in -compact tag removed
.It Fl h
Prints usage
.It Fl v
Prints usage
.It Fl d
Run in the foreground
.It Fl x
Force creation of a new .xml config file and exit
.It Fl I
Start the server in the idle state
.It Fl D
Display performance data
.It Fl c Ar myconfigpath.xml
Load configuration from xml config file
.It Fl o Ar myconfigpath.conf
Load configuration from old style config file
.It Fl S Ar Seconds
Output server statistics every n seconds
.El
.Sh FILES
.Bl -tag -width /Library/QuickTimeStreaming/Config/streamingserver.xml -compact
.It Pa /Library/QuickTimeStreaming/Config/streamingserver.xml
.It Pa /Library/QuickTimeStreaming/Modules
.It Pa /Library/QuickTimeStreaming/Movies
.It Pa /Library/QuickTimeStreaming/Playlists
.It Pa /Library/QuickTimeStreaming/Logs
.It Pa /Library/QuickTimeStreaming/Docs
.El
.Sh SEE ALSO
.Xr PlaylistBroadcaster 1 ,
.Xr MP3Broadcaster 1 ,
.Xr StreamingLoadTool 8
.\" .Sh BUGS
.\" .Sh HISTORY

View file

@ -0,0 +1,38 @@
.Dd February 11, 2005 \" DATE
.Dt StreamingLoadTool 8 \" Program name and manual section number
.Os Darwin
.Sh NAME \" Section Header - required - don't modify
.Nm StreamingLoadTool
.Nd Load testing tool for QuickTimeStreamingServer
.Sh SYNOPSIS \" Section Header - required - don't modify
.Nm
.Op Fl d \" [-d]
.Op Fl i Ar urlid \" [-i urlid]
.Op Fl f Ar path \" [-f configFile]
.Op Fl c Ar # \" [-c #]
-c fileName
.Sh DESCRIPTION \" Section Header - required - don't modify
.Nm
simulates multiple RTSP/RTP clients. The number of clients, URLs, and other
options can be configured via a
.Ar configFile .
.Pp
A list of flags and their descriptions:
.Bl -tag -width -indent \" Differs from above in -compact tag removed
.It Fl f Ar configFile
Config file to use. The default is /Library/QuickTimeStreaming/Config/streamingloadtool.conf
.It Fl c Ar httpCookie
HTTP cookie to use. Overrides what is in config file
.It Fl i Ar urlID
RTSP stream URL id (i.e. trackID or streamID etc.). Default is -i trackID
.It Fl d
Display debug messages
.El
.Sh FILES
.Bl -tag -width /Library/QuickTimeStreaming/Config/streamingloadtool.conf -compact
.It Pa /Library/QuickTimeStreaming/Config/streamingloadtool.conf
.El
.Sh SEE ALSO
.Xr QuickTimeStreamingServer 8 ,
.\" .Sh BUGS
.\" .Sh HISTORY

View file

@ -0,0 +1,25 @@
.Dd February 11, 2005 \" DATE
.Dt createuserstreamingdir 8 \" Program name and manual section number
.Os Darwin
.Sh NAME \" Section Header - required - don't modify
.Nm createuserstreamingdir
.Sh SYNOPSIS \" Section Header - required - don't modify
.Nm
.Ar username
.Sh DESCRIPTION \" Section Header - required - don't modify
.Nm
will create the directory ~user/Sites/Streaming/
.br
.br
The created directory gives the QuickTimeStreamingServer access to user managed content
.Pp
A list of flags and their descriptions:
.Bl -tag -width -indent
.br
.Ar username
The user whose home directory should be updated
.El
.Sh SEE ALSO
.Xr QuickTimeStreamingServer 8 ,
.\" .Sh BUGS
.\" .Sh HISTORY

View file

@ -0,0 +1,63 @@
.Dd February 11, 2005 \" DATE
.Dt qtpasswd 1 \" Program name and manual section number
.Os Darwin
.Sh NAME \" Section Header - required - don't modify
.Nm qtpasswd
.Nd MP3 file playlist broadcaster
.Sh SYNOPSIS \" Section Header - required - don't modify
.Nm
.Op Fl ?hvFd \" [-Fxd?v]
.Op Fl f Ar filename \" [-f filename]
.Op Fl g Ar groupsfilename \" [-g groupsfilename]
.Op Fl r Ar realm \" [-r realm]
.Op Fl p Ar password \" [-p password]
.Op Fl P Ar passwordfile \" [-P passwordfile]
.Op Fl A Ar group \" [-A group]
.Op Fl D Ar group \" [-D group]
.Op Fl C Ar group \" [-C group]
.Op Fl R Ar group \" [-R group]
.Sh DESCRIPTION \" Section Header - required - don't modify
.Nm
streams a playlist of MP3 files to an instance of QuickTimeStreamingServer.
.Pp
A list of flags and their descriptions:
.Bl -tag -width -indent \" Differs from above in -compact tag removed
.It Fl ?
display usage
.It Fl h
display usage
.It Fl v
display usage
.It Fl F
Don't ask for confirmation when deleting users or overwriting existing files.
.It Fl d
Delete the user. (Deletes the user from all groups)
.It Fl f Ar filename
Password file to manipulate (Default is "/Library/QuickTimeStreaming/Config/qtusers").
.It Fl g Ar groupsfilename
Groups file to manipulate (Default is "/Library/QuickTimeStreaming/Config/qtgroups"). If not found, will create one when necessary.
.It Fl r Ar realm
The realm name to use when creating a new file via "-c" (Default is "Streaming Server").
.It Fl p Ar password
Allows entry of password at command line rather than prompting for it.
.It Fl P Ar passwordfile
File to read the password from rather than prompting for it.
.It Fl A Ar group
Add user to group. Will create group automatically if group is not already present.
.It Fl D Ar group
Delete the user from the group.
.It Fl C Ar group
Create new group. Do not specify username with this option.
.It Fl R Ar group
Delete the group. Do not specify username with this option.
.El
.Sh FILES
.Bl -tag -width /Library/QuickTimeStreaming/Config/qtusers -compact
.It Pa /Library/QuickTimeStreaming/Config/qtusers
.It Pa /Library/QuickTimeStreaming/Config/qtgroups
.It Pa /Library/QuickTimeStreaming/Config/qtaccess
.El
.Sh SEE ALSO
.Xr QuickTimeStreamingServer 8 ,
.\" .Sh BUGS
.\" .Sh HISTORY

View file

@ -0,0 +1,15 @@
.Dd February 11, 2005 \" DATE
.Dt streamingadminserver.pl 8 \" Program name and manual section number
.Os Darwin
.Sh NAME \" Section Header - required - don't modify
.Nm streamingadminserver.pl
.Sh SYNOPSIS \" Section Header - required - don't modify
.Nm
.Sh DESCRIPTION \" Section Header - required - don't modify
.Nm
is a web server that manages the html for QuickTimeStreamingServer web-based administration.
.Pp
.Sh SEE ALSO
.Xr QuickTimeStreamingServer 8 ,
.\" .Sh BUGS
.\" .Sh HISTORY

BIN
Documentation/readme.txt Normal file

Binary file not shown.