-
Notifications
You must be signed in to change notification settings - Fork 67
Expand file tree
/
Copy pathLiveRTSPServer.cpp
More file actions
executable file
·79 lines (60 loc) · 2.38 KB
/
LiveRTSPServer.cpp
File metadata and controls
executable file
·79 lines (60 loc) · 2.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
//
// LiveRTSPServer.cpp
// FFmpegRTSPServer
//
// Created by Mina Saad on 9/22/15.
// Copyright (c) 2015 Mina Saad. All rights reserved.
//
#include "LiveRTSPServer.h"
namespace MESAI
{
LiveRTSPServer::LiveRTSPServer( FFmpegH264Encoder * a_Encoder, int port, int httpPort )
: m_Encoder (a_Encoder), portNumber(port), httpTunnelingPort(httpPort)
{
quit = 0;
}
LiveRTSPServer::~LiveRTSPServer()
{
}
void LiveRTSPServer::run()
{
TaskScheduler *scheduler;
UsageEnvironment *env ;
char RTSP_Address[1024];
RTSP_Address[0]=0x00;
scheduler = BasicTaskScheduler::createNew();
env = BasicUsageEnvironment::createNew(*scheduler);
UserAuthenticationDatabase* authDB = NULL;
// if (m_Enable_Pass){
// authDB = new UserAuthenticationDatabase;
// authDB->addUserRecord(UserN, PassW);
// }
OutPacketBuffer::maxSize = 2000000;
RTSPServer* rtspServer = RTSPServer::createNew(*env, portNumber, authDB);
if (rtspServer == NULL)
{
*env <<"LIVE555: Failed to create RTSP server: %s\n", env->getResultMsg();
}
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);
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";
delete [] url;
//signal(SIGNIT,sighandler);
env->taskScheduler().doEventLoop(&quit); // does not return
Medium::close(rtspServer);
Medium::close(inputDevice);
}
env->reclaim();
delete scheduler;
}
}