Skip to content

Commit c99e267

Browse files
committed
added:stun network of the webrtc support
1 parent c9efec7 commit c99e267

File tree

6 files changed

+41
-2
lines changed

6 files changed

+41
-2
lines changed

XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,11 @@ typedef struct tag_XEngine_ServiceConfig
7676
int nARTPPort;
7777
int nARTCPPort;
7878
}st_PullRtsp;
79+
struct
80+
{
81+
bool bEnable;
82+
int nSTUNPort;
83+
}st_PullWebRtc;
7984
}st_XPull;
8085
struct
8186
{

XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE
120120
pSt_ServerConfig->st_XTime.nRTMPTimeout = st_JsonXTime["nRTMPTimeout"].asInt();
121121
pSt_ServerConfig->st_XTime.nJT1078Timeout = st_JsonXTime["nJT1078Timeout"].asInt();
122122
//时间配置
123-
if (st_JsonRoot["XPull"].empty() || (5 != st_JsonRoot["XPull"].size()))
123+
if (st_JsonRoot["XPull"].empty() || (6 != st_JsonRoot["XPull"].size()))
124124
{
125125
Config_IsErrorOccur = true;
126126
Config_dwErrorCode = ERROR_MODULE_CONFIGURE_JSON_XPULL;
@@ -132,18 +132,21 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE
132132
Json::Value st_PullFlv = st_Pull["FLV"];
133133
Json::Value st_PullRtsp = st_Pull["RTSP"];
134134
Json::Value st_PullHls = st_Pull["HLS"];
135+
Json::Value st_PullWebRtc = st_Pull["RTC"];
135136

136137
pSt_ServerConfig->st_XPull.st_PullXStream.bEnable = st_PullXStream["bEnable"].asBool();
137138
pSt_ServerConfig->st_XPull.st_PullRtmp.bEnable = st_PullRtmp["bEnable"].asBool();
138139
pSt_ServerConfig->st_XPull.st_PullFlv.bEnable = st_PullFlv["bEnable"].asBool();
140+
pSt_ServerConfig->st_XPull.st_PullHls.bEnable = st_PullHls["bEnable"].asBool();
141+
pSt_ServerConfig->st_XPull.st_PullWebRtc.bEnable = st_PullWebRtc["bEnable"].asBool();
139142

140143
pSt_ServerConfig->st_XPull.st_PullRtsp.bEnable = st_PullRtsp["bEnable"].asBool();
141144
pSt_ServerConfig->st_XPull.st_PullRtsp.nVRTPPort = st_PullRtsp["nVRTPPort"].asInt();
142145
pSt_ServerConfig->st_XPull.st_PullRtsp.nVRTCPPort = st_PullRtsp["nVRTCPPort"].asInt();
143146
pSt_ServerConfig->st_XPull.st_PullRtsp.nARTPPort = st_PullRtsp["nARTPPort"].asInt();
144147
pSt_ServerConfig->st_XPull.st_PullRtsp.nARTCPPort = st_PullRtsp["nARTCPPort"].asInt();
145148

146-
pSt_ServerConfig->st_XPull.st_PullHls.bEnable = st_PullHls["bEnable"].asBool();
149+
pSt_ServerConfig->st_XPull.st_PullWebRtc.nSTUNPort = st_PullWebRtc["nSTUNPort"].asInt();
147150
//日志配置
148151
if (st_JsonRoot["XLog"].empty() || (3 != st_JsonRoot["XLog"].size()))
149152
{

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_Hdr.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,8 @@ extern XHANDLE xhVRTPSocket;
122122
extern XHANDLE xhVRTCPSocket;
123123
extern XHANDLE xhARTPSocket;
124124
extern XHANDLE xhARTCPSocket;
125+
//WEBRTC网络
126+
extern XHANDLE xhSTUNSocket;
125127
//配置文件
126128
extern XENGINE_SERVICECONFIG st_ServiceConfig;
127129
//调试

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_Network.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,11 @@ void CALLBACK Network_Callback_AudioRTCPRecv(LPCXSTR lpszClientAddr, XSOCKET hSo
158158
PullStream_ClientRtsp_RTCPProcess(lpszClientAddr, hSocket, lpszRecvMsg, nMsgLen);
159159
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_DEBUG, _X("RTCP音频客户端:%s,发送数据大小:%d 给服务器"), lpszClientAddr, nMsgLen);
160160
}
161+
//WEBRTC
162+
void CALLBACK Network_Callback_STUNRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam)
163+
{
164+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_DEBUG, _X("STUN客户端:%s,发送数据大小:%d 给服务器"), lpszClientAddr, nMsgLen);
165+
}
161166
//////////////////////////////////////////////////////////////////////////网络IO关闭操作
162167
void XEngine_Network_Close(LPCXSTR lpszClientAddr, XSOCKET hSocket, bool bHeart, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE enClientType)
163168
{

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_Network.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ void CALLBACK Network_Callback_VideoRTPRecv(LPCXSTR lpszClientAddr, XSOCKET hSoc
3939
void CALLBACK Network_Callback_VideoRTCPRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam);
4040
void CALLBACK Network_Callback_AudioRTPRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam);
4141
void CALLBACK Network_Callback_AudioRTCPRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam);
42+
//WEBRTC
43+
void CALLBACK Network_Callback_STUNRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam);
4244
//关闭与发送
4345
void XEngine_Network_Close(LPCXSTR lpszClientAddr, XSOCKET hSocket, bool bHeart, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE enClientType);
4446
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: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ XHANDLE xhVRTPSocket = NULL;
3737
XHANDLE xhVRTCPSocket = NULL;
3838
XHANDLE xhARTPSocket = NULL;
3939
XHANDLE xhARTCPSocket = NULL;
40+
//WEBRTC网络
41+
XHANDLE xhSTUNSocket = NULL;
4042
//配置文件
4143
XENGINE_SERVICECONFIG st_ServiceConfig;
4244
//调试
@@ -61,6 +63,10 @@ void ServiceApp_Stop(int signo)
6163
NetCore_UDPXCore_DestroyEx(xhARTPSocket);
6264
NetCore_UDPXCore_DestroyEx(xhARTCPSocket);
6365
}
66+
if (st_ServiceConfig.st_XPull.st_PullWebRtc.bEnable)
67+
{
68+
NetCore_UDPXCore_DestroyEx(xhSTUNSocket);
69+
}
6470
//销毁心跳
6571
SocketOpt_HeartBeat_DestoryEx(xhHttpHeart);
6672
SocketOpt_HeartBeat_DestoryEx(xhXStreamHeart);
@@ -477,6 +483,18 @@ int main(int argc, char** argv)
477483
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,启动RTSP视频RTP端口:%d 和视频RTCP端口:%d,以及音频的RTP端口:%d 和RTCP端口:%d 成功"), st_ServiceConfig.st_XPull.st_PullRtsp.nVRTPPort, st_ServiceConfig.st_XPull.st_PullRtsp.nVRTCPPort, st_ServiceConfig.st_XPull.st_PullRtsp.nARTPPort, st_ServiceConfig.st_XPull.st_PullRtsp.nARTCPPort);
478484
}
479485

486+
if (st_ServiceConfig.st_XPull.st_PullWebRtc.bEnable)
487+
{
488+
xhSTUNSocket = NetCore_UDPXCore_StartEx(st_ServiceConfig.st_XPull.st_PullWebRtc.nSTUNPort, 1);
489+
if (NULL == xhSTUNSocket)
490+
{
491+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,启动WEBRTC的STUN网络端口:%d 失败,错误:%d"), st_ServiceConfig.st_XPull.st_PullWebRtc.nSTUNPort, errno);
492+
goto XENGINE_SERVICEAPP_EXIT;
493+
}
494+
NetCore_UDPXCore_RegisterCallBackEx(xhSTUNSocket, Network_Callback_VideoRTPRecv);
495+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,启动WEBRTC的STUN端口:%d 成功"), st_ServiceConfig.st_XPull.st_PullWebRtc.nSTUNPort);
496+
}
497+
480498
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());
481499

482500
while (true)
@@ -501,6 +519,10 @@ int main(int argc, char** argv)
501519
NetCore_UDPXCore_DestroyEx(xhARTPSocket);
502520
NetCore_UDPXCore_DestroyEx(xhARTCPSocket);
503521
}
522+
if (st_ServiceConfig.st_XPull.st_PullWebRtc.bEnable)
523+
{
524+
NetCore_UDPXCore_DestroyEx(xhSTUNSocket);
525+
}
504526
//销毁心跳
505527
SocketOpt_HeartBeat_DestoryEx(xhHttpHeart);
506528
SocketOpt_HeartBeat_DestoryEx(xhXStreamHeart);

0 commit comments

Comments
 (0)