| | |
| | | // Copyright (c) 2015 Mina Saad. All rights reserved.
|
| | | //
|
| | |
|
| | | #include "../logger.h"
|
| | | #include "LiveRTSPServer.h"
|
| | |
|
| | | namespace MESAI
|
| | | {
|
| | | LiveRTSPServer::LiveRTSPServer( IEncoder * a_Encoder, int port, int httpPort )
|
| | | : m_Encoder (a_Encoder), portNumber(port), httpTunnelingPort(httpPort)
|
| | | : env(nullptr), framedSource(nullptr),
|
| | | m_Encoder (a_Encoder), portNumber(port), httpTunnelingPort(httpPort)
|
| | | {
|
| | | quit = 0;
|
| | | }
|
| | |
| | |
|
| | | }
|
| | |
|
| | | void LiveRTSPServer::init()
|
| | | {
|
| | | TaskScheduler* scheduler = BasicTaskScheduler::createNew();
|
| | | env = BasicUsageEnvironment::createNew(*scheduler);
|
| | | }
|
| | |
|
| | | void LiveRTSPServer::run()
|
| | | {
|
| | | TaskScheduler *scheduler;
|
| | | UsageEnvironment *env ;
|
| | | if (env == nullptr)
|
| | | init();
|
| | |
|
| | | char RTSP_Address[1024];
|
| | | RTSP_Address[0]=0x00;
|
| | |
|
| | | scheduler = BasicTaskScheduler::createNew();
|
| | | env = BasicUsageEnvironment::createNew(*scheduler);
|
| | |
|
| | | UserAuthenticationDatabase* authDB = NULL;
|
| | |
|
| | |
| | |
|
| | | if (rtspServer == NULL)
|
| | | {
|
| | | *env <<"LIVE555: Failed to create RTSP server: %s\n", env->getResultMsg();
|
| | | LOG_ERROR <<"LIVE555: Failed to create RTSP server: " << env->getResultMsg() << LOG_ENDL;
|
| | | }
|
| | | else {
|
| | | |
| | | |
| | | else
|
| | | {
|
| | | if(httpTunnelingPort)
|
| | | {
|
| | | rtspServer->setUpTunnelingOverHTTP(httpTunnelingPort);
|
| | |
| | |
|
| | | char const* descriptionString = "MESAI Streaming Session";
|
| | |
|
| | | FFmpegH264Source * source = FFmpegH264Source::createNew(*env,m_Encoder);
|
| | | StreamReplicator * inputDevice = StreamReplicator::createNew(*env, source, false);
|
| | | if (framedSource == nullptr)
|
| | | framedSource = FFmpegH264Source::createNew(*env,m_Encoder);
|
| | | StreamReplicator * inputDevice = StreamReplicator::createNew(*env, framedSource, false);
|
| | |
|
| | | ServerMediaSession* sms = ServerMediaSession::createNew(*env, RTSP_Address, RTSP_Address, descriptionString);
|
| | | sms->addSubsession(MESAI::LiveServerMediaSubsession::createNew(*env, inputDevice));
|
| | | rtspServer->addServerMediaSession(sms);
|
| | |
|
| | | char* url = rtspServer->rtspURL(sms);
|
| | | *env << "Play this stream using the URL \"" << url << "\"\n";
|
| | | LOG_INFO << "Play this stream using the URL " << url << LOG_ENDL;
|
| | | delete [] url;
|
| | |
|
| | | //signal(SIGNIT,sighandler);
|
| | |
| | | }
|
| | |
|
| | | env->reclaim();
|
| | | delete scheduler;
|
| | | //delete scheduler; // #todo
|
| | | }
|
| | | } |