From d9ffa50c7e8d6b8c3157690aef8e2a70af1d1695 Mon Sep 17 00:00:00 2001
From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期三, 09 八月 2017 13:58:01 +0800
Subject: [PATCH] rtps server (not ok)

---
 RtspFace/FFmpegRTSPServer/LiveRTSPServer.cpp |   36 +++++++++++++++++++++---------------
 1 files changed, 21 insertions(+), 15 deletions(-)

diff --git a/RtspFace/FFmpegRTSPServer/LiveRTSPServer.cpp b/RtspFace/FFmpegRTSPServer/LiveRTSPServer.cpp
index 2f6790a..16af86c 100644
--- a/RtspFace/FFmpegRTSPServer/LiveRTSPServer.cpp
+++ b/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,16 +23,20 @@
 
 	}
 
+	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 (m_Enable_Pass){
@@ -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
 	}
 }
\ No newline at end of file

--
Gitblit v1.8.0