@@ -44,7 +44,7 @@ bool PushStream_ClientProtocol_Handle(LPCXSTR lpszClientAddr, XSOCKET hSocket, L
4444 }
4545 else
4646 {
47- bool bRet = Cryption_Server_AcceptMemoryEx (xhRTCSsl , hSocket, lpszClientAddr, tszSDBuffer, &nSDLen, lpszMsgBuffer, nMsgLen);
47+ bool bRet = Cryption_Server_AcceptMemoryEx (xhRTCWhipSsl , hSocket, lpszClientAddr, tszSDBuffer, &nSDLen, lpszMsgBuffer, nMsgLen);
4848 if (nSDLen > 0 )
4949 {
5050 XEngine_Network_Send (lpszClientAddr, tszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_RTC);
@@ -53,7 +53,7 @@ bool PushStream_ClientProtocol_Handle(LPCXSTR lpszClientAddr, XSOCKET hSocket, L
5353 if (bRet)
5454 {
5555 XBYTE tszKEYBuffer[XPATH_MAX] = {};
56- Cryption_Server_GetKeyEx (xhRTCSsl , lpszClientAddr, tszKEYBuffer);
56+ Cryption_Server_GetKeyEx (xhRTCWhipSsl , lpszClientAddr, tszKEYBuffer);
5757 ModuleHelp_SRTPCore_Create (tszKEYBuffer);
5858
5959 XCHAR tszSMSName[128 ] = {};
@@ -111,7 +111,7 @@ bool PushStream_ClientProtocol_Handle(LPCXSTR lpszClientAddr, XSOCKET hSocket, L
111111 NatProtocol_StunNat_Packet (tszSDBuffer, &nSDLen, (LPCXSTR)st_NatClient.byTokenStr , RFCCOMPONENTS_NATCLIENT_PROTOCOL_STUN_CLASS_RESPONSE, RFCCOMPONENTS_NATCLIENT_PROTOCOL_STUN_ATTR_MAPPED_ADDRESS, tszRVBuffer, true , st_ServiceConfig.st_XPull .st_PullWebRtc .tszICEPass , true );
112112 // 更新绑定的地址
113113 ModuleSession_PullStream_RTCAddrSet (tszUserStr, lpszClientAddr);
114- SocketOpt_HeartBeat_ActiveAddrEx (xhRTCHeart , tszUserStr); // 激活一次心跳
114+ SocketOpt_HeartBeat_ActiveAddrEx (xhRTCWhipHeart , tszUserStr); // 激活一次心跳
115115 XEngine_Network_Send (lpszClientAddr, tszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_RTC);
116116 XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" RTC客户端:%s,请求的STUN协议处理成功,请求的用户:%s" ), lpszClientAddr, tszUserStr);
117117 }
@@ -214,6 +214,7 @@ bool PushStream_ClientWhip_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LP
214214 XNETHANDLE xhPacket = 0 ;
215215 XCHAR tszRVBuffer[4096 ] = {};
216216 XCHAR tszSDBuffer[4096 ] = {};
217+ XENGINE_PROTOCOL_AVINFO st_AVInfo = {};
217218 RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam = {};
218219
219220 st_HDRParam.nHttpCode = 200 ; // HTTP CODE码
@@ -225,7 +226,6 @@ bool PushStream_ClientWhip_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LP
225226 BaseLib_String_GetStartEnd (pSt_HTTPParam->tszHttpUri , tszSMSAddr + _tcsxlen (tszSMSAddr), _X (" stream=" ), NULL );
226227 // 查找流是否存在
227228 XCHAR tszPushAddr[128 ] = {};
228- XENGINE_PROTOCOL_AVINFO st_AVInfo = {};
229229 if (ModuleSession_PushStream_FindStream (tszSMSAddr, tszPushAddr))
230230 {
231231 ModuleProtocol_Packet_Comm (tszRVBuffer, &nRVLen, NULL , 400 , " stream is published" );
@@ -282,6 +282,10 @@ bool PushStream_ClientWhip_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LP
282282 {
283283 nAudioIndex = _ttxoi (ppSt_AVMedia[i]->pptszAVList [j]);
284284 st_SDPAudioInfo = st_SDPMeida;
285+
286+ st_AVInfo.st_AudioInfo .bEnable = true ;
287+ st_AVInfo.st_AudioInfo .nChannel = st_SDPMeida.st_RTPMap .nChannel ;
288+ st_AVInfo.st_AudioInfo .nSampleRate = st_SDPMeida.st_RTPMap .nSampleRate ;
285289 XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" WEBRTC:%s,找到了合适的音频信息索引:%s" ), lpszClientAddr, ppSt_AVMedia[i]->pptszAVList [j]);
286290 break ;
287291 }
@@ -299,6 +303,10 @@ bool PushStream_ClientWhip_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LP
299303 {
300304 nVideoIndex = _ttxoi (ppSt_AVMedia[i]->pptszAVList [j]);
301305 st_SDPVideoInfo = st_SDPMeida;
306+
307+ st_AVInfo.st_VideoInfo .bEnable = true ;
308+ st_AVInfo.st_VideoInfo .nFrameNumber = st_SDPMeida.st_FmtpVideo .nFrameRate ;
309+ st_AVInfo.st_VideoInfo .nBitRate = st_SDPMeida.st_RTPMap .nSampleRate ;
302310 XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" WEBRTC:%s,找到了合适的视频信息索引:%s,帧率:%d" ), lpszClientAddr, ppSt_AVMedia[i]->pptszAVList [j], st_AVInfo.st_VideoInfo .nFrameRate );
303311 }
304312 }
@@ -332,10 +340,6 @@ bool PushStream_ClientWhip_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LP
332340 _xstprintf (tszUserStr, _X (" %s:%s" ), st_ServiceConfig.st_XPull .st_PullWebRtc .tszICEUser , tszICEUser);
333341 _xstprintf (tszHDRStr, _X (" Location: /rtc/v1/whip/?action=delete&token=%s&app=live&stream=livestream.flv&session=%s\r\n " ), tszTokenStr, tszUserStr);
334342
335- ModuleSession_PullStream_Insert (tszUserStr, tszSMSAddr, tszPushAddr, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_RTC);
336- ModuleSession_PullStream_RTCSet (tszUserStr, tszTokenStr, tszICEUser, tszICEPass, tszHMacStr);
337- SocketOpt_HeartBeat_InsertAddrEx (xhRTCHeart, tszUserStr); // 需要加入心跳,不然没法知道超时
338-
339343 if (nIndex1 >= 0 && nIndex2 >= 0 )
340344 {
341345 PushStream_ClientWebRtc_SDKPacket (xhPacket, tszUserStr, false , nAudioIndex, &st_SDPAudioInfo);
@@ -349,7 +353,13 @@ bool PushStream_ClientWhip_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LP
349353 SDPProtocol_Packet_GetPacket (xhPacket, tszRVBuffer, &nRVLen);
350354 SDPProtocol_Packet_Destory (xhPacket);
351355
356+ ModuleSession_PushStream_Create (tszUserStr, tszSMSAddr, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_RTC);
357+ ModuleSession_PushStream_SetAVInfo (tszUserStr, &st_AVInfo);
358+ ModuleSession_PullStream_RTCSet (tszUserStr, tszTokenStr, tszICEUser, tszICEPass, tszHMacStr);
359+ SocketOpt_HeartBeat_InsertAddrEx (xhRTCWhipHeart, tszUserStr); // 需要加入心跳,不然没法知道超时
360+
352361 st_HDRParam.nHttpCode = 201 ;
362+ _xstprintf (st_HDRParam.tszMimeType , _X (" sdp" ));
353363 HttpProtocol_Server_SendMsgEx (xhHttpPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen, tszHDRStr);
354364 XEngine_Network_Send (lpszClientAddr, tszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP);
355365 XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" WEBRTC:%s,Whip协议推流请求成功" ), lpszClientAddr);
0 commit comments