@@ -59,6 +59,23 @@ bool PullStream_ClientGet_FLVPlay(LPCXSTR lpszClientAddr, LPCXSTR lpszPushAddr,
5959 ModuleSession_PushStream_ClientInsert (lpszPushAddr, lpszClientAddr, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_FLV);
6060 return true ;
6161}
62+ bool PullStream_ClientGet_XStreamPlay (LPCXSTR lpszClientAddr, LPCXSTR lpszPushAddr, XCHAR* ptszSDBuffer, XCHAR* ptszRVBuffer)
63+ {
64+ int nRVLen = 0 ;
65+ int nSDLen = 0 ;
66+ XENGINE_PROTOCOL_AVINFO st_AVInfo = {};
67+ // 拷贝头
68+ ModuleSession_PushStream_GetAVInfo (lpszPushAddr, &st_AVInfo);
69+ nRVLen = sizeof (XENGINE_PROTOCOL_AVINFO);
70+ nSDLen = _xstprintf (ptszSDBuffer, _X (" %x\r\n " ), nRVLen);
71+ memcpy (ptszSDBuffer + nSDLen, ptszRVBuffer, nRVLen);
72+ nSDLen += nRVLen;
73+ memcpy (ptszSDBuffer + nSDLen, _X (" \r\n " ), 2 );
74+ nSDLen += 2 ;
75+ XEngine_Network_Send (lpszClientAddr, ptszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP);
76+ ModuleSession_PushStream_ClientInsert (lpszPushAddr, lpszClientAddr, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_XSTREAM);
77+ return true ;
78+ }
6279bool PullStream_ClientGet_Handle (LPCXSTR lpszClientAddr, XCHAR*** ppptszListHdr, int nListCount)
6380{
6481 int nRVLen = 0 ;
@@ -155,32 +172,23 @@ bool PullStream_ClientGet_Handle(LPCXSTR lpszClientAddr, XCHAR*** ppptszListHdr,
155172 bSMSFound = false ;
156173 }
157174 enStreamType = ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_XSTREAM;
158- XENGINE_PROTOCOL_AVINFO st_AVInfo;
159-
160- memset (&st_AVInfo, ' \0 ' , sizeof (XENGINE_PROTOCOL_AVINFO));
175+
161176 memset (tszSDBuffer, ' \0 ' , sizeof (tszSDBuffer));
162-
163- ModuleSession_PushStream_GetAVInfo (tszPushAddr, &st_AVInfo);
164-
165- nRVLen = sizeof (XENGINE_PROTOCOL_AVINFO);
166177 // 返回数据,为HTTP CHUNKED
167178 nSDLen = _xstprintf (tszSDBuffer, _X (" HTTP/1.1 200 OK\r\n "
168179 " Connection: Close\r\n "
169180 " Content-Type: video/x-stream\r\n "
170181 " Server: XEngine/%s\r\n "
171182 " Access-Control-Allow-Origin: *\r\n "
172183 " Access-Control-Allow-Credentials: true\r\n "
173- " Transfer-Encoding: chunked\r\n\r\n "
174- " %x\r\n " ), BaseLib_Version_XTypeStr (), nRVLen);
175- memcpy (tszSDBuffer + nSDLen, &st_AVInfo, nRVLen);
176- nSDLen += nRVLen;
177- memcpy (tszSDBuffer + nSDLen, _X (" \r\n " ), 2 );
178- nSDLen += 2 ;
179-
184+ " Transfer-Encoding: chunked\r\n\r\n " ), BaseLib_Version_XTypeStr ());
180185 XEngine_Network_Send (lpszClientAddr, tszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP);
181-
186+
182187 ModuleSession_PullStream_Insert (lpszClientAddr, tszSMSAddr, tszPushAddr, enStreamType);
183- ModuleSession_PushStream_ClientInsert (tszPushAddr, lpszClientAddr, enStreamType);
188+ if (bSMSFound)
189+ {
190+ PullStream_ClientGet_XStreamPlay (lpszClientAddr, tszPushAddr, tszSDBuffer, tszRVBuffer);
191+ }
184192 }
185193 else if (0 == _tcsxnicmp (tszVluBuffer, " ts" , 2 ))
186194 {
@@ -219,7 +227,7 @@ bool PullStream_ClientGet_Handle(LPCXSTR lpszClientAddr, XCHAR*** ppptszListHdr,
219227 XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X (" 拉流端:%s,请求拉流的数据类型不支持:%s,错误:%lX" ), lpszClientAddr, tszVluBuffer, ModuleSession_GetLastError ());
220228 return false ;
221229 }
222- XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" 拉流端:%s,请求拉流数据成功 :%s" ), lpszClientAddr, tszVluBuffer);
230+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" 拉流端:%s,请求拉流数据类型 :%s,地址:%s 成功 " ), lpszClientAddr, tszVluBuffer, tszSMSAddr );
223231 }
224232 else if (0 == _tcsxnicmp (lpszStreamStop, tszVluBuffer, _tcsxlen (lpszStreamStop)))
225233 {
0 commit comments