00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include <BasicUsageEnvironment.hh>
00021 #include "DynamicRTSPServer.hh"
00022 #include "RTSPOverHTTPServer.hh"
00023 #include "version.hh"
00024
00025 int main(int argc, char** argv) {
00026
00027 TaskScheduler* scheduler = BasicTaskScheduler::createNew();
00028 UsageEnvironment* env = BasicUsageEnvironment::createNew(*scheduler);
00029
00030 UserAuthenticationDatabase* authDB = NULL;
00031 #ifdef ACCESS_CONTROL
00032
00033 authDB = new UserAuthenticationDatabase;
00034 authDB->addUserRecord("username1", "password1");
00035
00036
00037 #endif
00038
00039
00040
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\".dv\" => a DV Video file\n";
00066 *env << "\t\".mp3\" => a MPEG-1 or 2 Audio file\n";
00067 *env << "\t\".mpg\" => a MPEG-1 or 2 Program Stream (audio+video) file\n";
00068 *env << "\t\".ts\" => a MPEG Transport Stream file\n";
00069 *env << "\t\t(a \".tsx\" index file - if present - provides server 'trick play' support)\n";
00070 *env << "\t\".wav\" => a WAV Audio file\n";
00071 *env << "See http://www.live555.com/mediaServer/ for additional documentation.\n";
00072
00073 #if 0 // RTSP-over-HTTP tunneling is not yet working
00074
00075
00076
00077 RTSPOverHTTPServer* rtspOverHTTPServer;
00078 portNumBits httpServerPortNum = 80;
00079 rtspOverHTTPServer = RTSPOverHTTPServer::createNew(*env, httpServerPortNum, rtspServerPortNum);
00080 if (rtspOverHTTPServer == NULL) {
00081 httpServerPortNum = 8000;
00082 rtspOverHTTPServer = RTSPOverHTTPServer::createNew(*env, httpServerPortNum, rtspServerPortNum);
00083 }
00084 if (rtspOverHTTPServer == NULL) {
00085 *env << "(No server for RTSP-over-HTTP tunneling was created.)\n";
00086 } else {
00087 *env << "(We use port " << httpServerPortNum << " for RTSP-over-HTTP tunneling.)\n";
00088 }
00089 #endif
00090
00091 env->taskScheduler().doEventLoop();
00092
00093 return 0;
00094 }