houxiao
2017-08-09 d9ffa50c7e8d6b8c3157690aef8e2a70af1d1695
RtspFace/FFmpegRTSPServer/LiveRTSPServer.cpp
@@ -6,12 +6,14 @@
//  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;
   }
@@ -21,15 +23,19 @@
   }
   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;
        
@@ -43,11 +49,10 @@
        
        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);
@@ -55,15 +60,16 @@
            
            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);
@@ -74,6 +80,6 @@
        }
        
        env->reclaim();
        delete scheduler;
      //delete scheduler; // #todo
   }
}