Skip to content

Commit 0772e98

Browse files
committed
added:rtp and rtcp udp socket supported
1 parent 6c29a6c commit 0772e98

File tree

6 files changed

+49
-1
lines changed

6 files changed

+49
-1
lines changed

XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ typedef struct tag_XEngine_ServiceConfig
7171
struct
7272
{
7373
bool bEnable;
74+
int nRTPPort;
75+
int nRTCPPort;
7476
}st_PullRtsp;
7577
}st_XPull;
7678
struct

XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,11 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE
136136
pSt_ServerConfig->st_XPull.st_PullXStream.bEnable = st_PullXStream["bEnable"].asBool();
137137
pSt_ServerConfig->st_XPull.st_PullRtmp.bEnable = st_PullRtmp["bEnable"].asBool();
138138
pSt_ServerConfig->st_XPull.st_PullFlv.bEnable = st_PullFlv["bEnable"].asBool();
139+
139140
pSt_ServerConfig->st_XPull.st_PullRtsp.bEnable = st_PullRtsp["bEnable"].asBool();
141+
pSt_ServerConfig->st_XPull.st_PullRtsp.nRTPPort = st_PullRtsp["nRTPPort"].asInt();
142+
pSt_ServerConfig->st_XPull.st_PullRtsp.nRTCPPort = st_PullRtsp["nRTCPPort"].asInt();
143+
140144
pSt_ServerConfig->st_XPull.st_PullHls.bEnable = st_PullHls["bEnable"].asBool();
141145
//日志配置
142146
if (st_JsonRoot["XLog"].empty() || (3 != st_JsonRoot["XLog"].size()))

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_Hdr.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,12 +109,14 @@ extern XHANDLE xhRTMPSocket;
109109
extern XHANDLE xhRTMPHeart;
110110
extern XHANDLE xhRTMPPool;
111111
extern XHANDLE xhSRTPool;
112-
//配置文件
113112
//JT1078推流
114113
extern XHANDLE xhJT1078Socket;
115114
extern XHANDLE xhJT1078Heart;
116115
extern XHANDLE xhJT1078Pkt;
117116
extern XHANDLE xhJT1078Pool;
117+
//RTSP的UDP网络
118+
extern XHANDLE xhRTPSocket;
119+
extern XHANDLE xhRTCPSocket;
118120
//配置文件
119121
extern XENGINE_SERVICECONFIG st_ServiceConfig;
120122
//调试

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_Network.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,15 @@ void CALLBACK Network_Callback_SRTLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket,
138138
{
139139
XEngine_Network_Close(lpszClientAddr, hSocket, false, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_SRT);
140140
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("SRT客户端:%s,离开了服务器"), lpszClientAddr);
141+
}
142+
//UDP
143+
void CALLBACK Network_Callback_RTPRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam)
144+
{
145+
146+
}
147+
void CALLBACK Network_Callback_RTCPRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam)
148+
{
149+
141150
}
142151
//////////////////////////////////////////////////////////////////////////网络IO关闭操作
143152
void XEngine_Network_Close(LPCXSTR lpszClientAddr, XSOCKET hSocket, bool bHeart, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE enClientType)

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_Network.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ void CALLBACK Network_Callback_JT1078HBLeave(LPCXSTR lpszClientAddr, XSOCKET hSo
3434
bool CALLBACK Network_Callback_SRTLogin(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam);
3535
void CALLBACK Network_Callback_SRTRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam);
3636
void CALLBACK Network_Callback_SRTLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam);
37+
//UDP
38+
void CALLBACK Network_Callback_RTPRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam);
39+
void CALLBACK Network_Callback_RTCPRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam);
3740
//关闭与发送
3841
void XEngine_Network_Close(LPCXSTR lpszClientAddr, XSOCKET hSocket, bool bHeart, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE enClientType);
3942
bool XEngine_Network_Send(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE enClientType);

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_StreamMediaApp.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ XHANDLE xhJT1078Socket = NULL;
3232
XHANDLE xhJT1078Heart = NULL;
3333
XHANDLE xhJT1078Pkt = NULL;
3434
XHANDLE xhJT1078Pool = NULL;
35+
//RTSP的UDP网络
36+
XHANDLE xhRTPSocket = NULL;
37+
XHANDLE xhRTCPSocket = NULL;
3538
//配置文件
3639
XENGINE_SERVICECONFIG st_ServiceConfig;
3740
//调试
@@ -49,6 +52,11 @@ void ServiceApp_Stop(int signo)
4952
NetCore_TCPXCore_DestroyEx(xhXStreamSocket);
5053
NetCore_TCPXCore_DestroyEx(xhRTMPSocket);
5154
NetCore_TCPXCore_DestroyEx(xhJT1078Socket);
55+
if (st_ServiceConfig.st_XPull.st_PullRtsp.bEnable)
56+
{
57+
NetCore_UDPXCore_DestroyEx(xhRTPSocket);
58+
NetCore_UDPXCore_DestroyEx(xhRTCPSocket);
59+
}
5260
//销毁心跳
5361
SocketOpt_HeartBeat_DestoryEx(xhHttpHeart);
5462
SocketOpt_HeartBeat_DestoryEx(xhXStreamHeart);
@@ -431,6 +439,21 @@ int main(int argc, char** argv)
431439
}
432440
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,启动SRT端处理线程池成功,线程个数:%d"), st_ServiceConfig.st_XMax.nSRTThread);
433441
}
442+
443+
if (st_ServiceConfig.st_XPull.st_PullRtsp.bEnable)
444+
{
445+
xhRTPSocket = NetCore_UDPXCore_StartEx(st_ServiceConfig.st_XPull.st_PullRtsp.nRTPPort, 1);
446+
if (NULL == xhSRTPool)
447+
{
448+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,启动RTSP的RTP网络端口失败,错误:%d"), errno);
449+
goto XENGINE_SERVICEAPP_EXIT;
450+
}
451+
xhRTCPSocket = NetCore_UDPXCore_StartEx(st_ServiceConfig.st_XPull.st_PullRtsp.nRTCPPort, 1);
452+
453+
NetCore_UDPXCore_RegisterCallBackEx(xhRTPSocket, Network_Callback_RTPRecv);
454+
NetCore_UDPXCore_RegisterCallBackEx(xhRTCPSocket, Network_Callback_RTCPRecv);
455+
}
456+
434457
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("所有服务成功启动,服务运行中,XEngine版本:%s,服务版本:%s,发行次数;%d。。。"), BaseLib_OperatorVer_XNumberStr(), st_ServiceConfig.st_XVer.pStl_ListVer->front().c_str(), st_ServiceConfig.st_XVer.pStl_ListVer->size());
435458

436459
while (true)
@@ -448,6 +471,11 @@ int main(int argc, char** argv)
448471
NetCore_TCPXCore_DestroyEx(xhXStreamSocket);
449472
NetCore_TCPXCore_DestroyEx(xhRTMPSocket);
450473
NetCore_TCPXCore_DestroyEx(xhJT1078Socket);
474+
if (st_ServiceConfig.st_XPull.st_PullRtsp.bEnable)
475+
{
476+
NetCore_UDPXCore_DestroyEx(xhRTPSocket);
477+
NetCore_UDPXCore_DestroyEx(xhRTCPSocket);
478+
}
451479
//销毁心跳
452480
SocketOpt_HeartBeat_DestoryEx(xhHttpHeart);
453481
SocketOpt_HeartBeat_DestoryEx(xhXStreamHeart);

0 commit comments

Comments
 (0)