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