mediaServer/live555MediaServer.cpp File Reference

#include <BasicUsageEnvironment.hh>
#include "DynamicRTSPServer.hh"
#include "RTSPOverHTTPServer.hh"
#include "version.hh"

Include dependency graph for live555MediaServer.cpp:

Go to the source code of this file.

Functions

int main (int argc, char **argv)


Function Documentation

int main ( int  argc,
char **  argv 
)

Definition at line 25 of file live555MediaServer.cpp.

References UserAuthenticationDatabase::addUserRecord(), RTSPOverHTTPServer::createNew(), DynamicRTSPServer::createNew(), BasicUsageEnvironment::createNew(), BasicTaskScheduler::createNew(), TaskScheduler::doEventLoop(), env, UsageEnvironment::getResultMsg(), LIVEMEDIA_LIBRARY_VERSION_STRING, MEDIA_SERVER_VERSION_STRING, NULL, rtspServer, rtspServerPortNum, RTSPServer::rtspURLPrefix(), and UsageEnvironment::taskScheduler().

00025                                 {
00026   // Begin by setting up our usage environment:
00027   TaskScheduler* scheduler = BasicTaskScheduler::createNew();
00028   UsageEnvironment* env = BasicUsageEnvironment::createNew(*scheduler);
00029 
00030   UserAuthenticationDatabase* authDB = NULL;
00031 #ifdef ACCESS_CONTROL
00032   // To implement client access control to the RTSP server, do the following:
00033   authDB = new UserAuthenticationDatabase;
00034   authDB->addUserRecord("username1", "password1"); // replace these with real strings
00035   // Repeat the above with each <username>, <password> that you wish to allow
00036   // access to the server.
00037 #endif
00038 
00039   // Create the RTSP server.  Try first with the default port number (554),
00040   // and then with the alternative port number (8554):
00041   RTSPServer* rtspServer;
00042   portNumBits rtspServerPortNum = 554;
00043   rtspServer = DynamicRTSPServer::createNew(*env, rtspServerPortNum, authDB);
00044   if (rtspServer == NULL) {
00045     rtspServerPortNum = 8554;
00046     rtspServer = DynamicRTSPServer::createNew(*env, rtspServerPortNum, authDB);
00047   }
00048   if (rtspServer == NULL) {
00049     *env << "Failed to create RTSP server: " << env->getResultMsg() << "\n";
00050     exit(1);
00051   }
00052 
00053   *env << "LIVE555 Media Server\n";
00054   *env << "\tversion " << MEDIA_SERVER_VERSION_STRING
00055        << " (LIVE555 Streaming Media library version "
00056        << LIVEMEDIA_LIBRARY_VERSION_STRING << ").\n";
00057 
00058   char* urlPrefix = rtspServer->rtspURLPrefix();
00059   *env << "Play streams from this server using the URL\n\t"
00060        << urlPrefix << "<filename>\nwhere <filename> is a file present in the current directory.\n";
00061   *env << "Each file's type is inferred from its name suffix:\n";
00062   *env << "\t\".aac\" => an AAC Audio (ADTS format) file\n";
00063   *env << "\t\".amr\" => an AMR Audio file\n";
00064   *env << "\t\".m4e\" => a MPEG-4 Video Elementary Stream file\n";
00065   *env << "\t\".mp3\" => a MPEG-1 or 2 Audio file\n";
00066   *env << "\t\".mpg\" => a MPEG-1 or 2 Program Stream (audio+video) file\n";
00067   *env << "\t\".ts\" => a MPEG Transport Stream file\n";
00068   *env << "\t\t(a \".tsx\" index file - if present - provides server 'trick play' support)\n";
00069   *env << "\t\".wav\" => a WAV Audio file\n";
00070   *env << "See http://www.live555.com/mediaServer/ for additional documentation.\n";
00071 
00072 #if 0 // RTSP-over-HTTP tunneling is not yet working
00073   // Also, attempt to create a HTTP server for RTSP-over-HTTP tunneling.
00074   // Try first with the default HTTP port (80), and then with the alternative HTTP
00075   // port number (8000).
00076   RTSPOverHTTPServer* rtspOverHTTPServer;
00077   portNumBits httpServerPortNum = 80;
00078   rtspOverHTTPServer = RTSPOverHTTPServer::createNew(*env, httpServerPortNum, rtspServerPortNum);
00079   if (rtspOverHTTPServer == NULL) {
00080     httpServerPortNum = 8000;
00081     rtspOverHTTPServer = RTSPOverHTTPServer::createNew(*env, httpServerPortNum, rtspServerPortNum);
00082   }
00083   if (rtspOverHTTPServer == NULL) {
00084     *env << "(No server for RTSP-over-HTTP tunneling was created.)\n";
00085   } else {
00086     *env << "(We use port " << httpServerPortNum << " for RTSP-over-HTTP tunneling.)\n";
00087   }
00088 #endif
00089 
00090   env->taskScheduler().doEventLoop(); // does not return
00091 
00092   return 0; // only to prevent compiler warning
00093 }


Generated on Tue Oct 7 15:39:22 2008 for live by  doxygen 1.5.2