Skip to content

Commit 4543a5d

Browse files
committed
added:xstream play with pre pull support
1 parent 6c5b500 commit 4543a5d

File tree

2 files changed

+26
-17
lines changed

2 files changed

+26
-17
lines changed

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.cpp

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
}
6279
bool 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
{

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,6 @@
1111
// History:
1212
*********************************************************************/
1313
bool PullStream_ClientGet_FLVPlay(LPCXSTR lpszClientAddr, LPCXSTR lpszPushAddr, XCHAR* ptszSDBuffer, XCHAR* ptszRVBuffer);
14+
bool PullStream_ClientGet_XStreamPlay(LPCXSTR lpszClientAddr, LPCXSTR lpszPushAddr, XCHAR* ptszSDBuffer, XCHAR* ptszRVBuffer);
1415
//任务处理相关函数,处理包的内容
1516
bool PullStream_ClientGet_Handle(LPCXSTR lpszClientAddr, XCHAR*** ppptszListHdr, int nListCount);

0 commit comments

Comments
 (0)