Skip to content

Commit 6ce03ce

Browse files
committed
added:ts and srt pre stream support
1 parent 0e7f963 commit 6ce03ce

File tree

3 files changed

+37
-8
lines changed

3 files changed

+37
-8
lines changed

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.cpp

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -192,17 +192,23 @@ bool PullStream_ClientGet_Handle(LPCXSTR lpszClientAddr, XCHAR*** ppptszListHdr,
192192
}
193193
else if (0 == _tcsxnicmp(tszVluBuffer, "ts", 2))
194194
{
195-
if (!st_ServiceConfig.st_XPull.st_PullTs.bPrePull)
195+
bool bSMSFound = false;
196+
197+
if (ModuleSession_PushStream_FindStream(tszSMSAddr, tszPushAddr))
196198
{
197-
//TS流,需要预拉流
198-
if (!ModuleSession_PushStream_FindStream(tszSMSAddr, tszPushAddr))
199+
bSMSFound = true;
200+
}
201+
else
202+
{
203+
if (!st_ServiceConfig.st_XPull.st_PullTs.bPrePull)
199204
{
200205
ModuleProtocol_Packet_Comm(tszRVBuffer, &nRVLen, NULL, 404, "not found");
201206
HttpProtocol_Server_SendMsgEx(xhHttpPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen);
202207
XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP);
203208
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("拉流端:%s,请求拉流的URL参数不正确:%s,可能流不存在,错误:%lX"), lpszClientAddr, tszVluBuffer, ModuleSession_GetLastError());
204209
return false;
205210
}
211+
bSMSFound = false;
206212
}
207213

208214
enStreamType = ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_TS;
@@ -217,7 +223,10 @@ bool PullStream_ClientGet_Handle(LPCXSTR lpszClientAddr, XCHAR*** ppptszListHdr,
217223
XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP);
218224

219225
ModuleSession_PullStream_Insert(lpszClientAddr, tszSMSAddr, tszPushAddr, enStreamType);
220-
ModuleSession_PushStream_ClientInsert(tszPushAddr, lpszClientAddr, enStreamType);
226+
if (bSMSFound)
227+
{
228+
ModuleSession_PushStream_ClientInsert(tszPushAddr, lpszClientAddr, enStreamType);
229+
}
221230
}
222231
else
223232
{

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_SrtTask.cpp

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,17 +35,27 @@ bool PushStream_SrtTask_Connct(LPCXSTR lpszClientAddr, XSOCKET hSocket)
3535
{
3636
XCHAR tszPushAddr[128];
3737
memset(tszPushAddr, '\0', sizeof(tszPushAddr));
38-
if (!st_ServiceConfig.st_XPull.st_PullSrt.bPrePull)
38+
39+
bool bSMSFound = false;
40+
//得到推流地址
41+
if (ModuleSession_PushStream_FindStream(tszSMSAddr, tszPushAddr))
42+
{
43+
bSMSFound = true;
44+
}
45+
else
3946
{
40-
//得到推流地址
41-
if (!ModuleSession_PushStream_FindStream(tszSMSAddr, tszPushAddr))
47+
if (!st_ServiceConfig.st_XPull.st_PullSrt.bPrePull)
4248
{
4349
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("SRT客户端:%s,请求拉流的参数不正确:%s,错误:%lX"), lpszClientAddr, tszSMSAddr, ModuleSession_GetLastError());
4450
return false;
4551
}
52+
bSMSFound = false;
4653
}
4754
ModuleSession_PullStream_Insert(lpszClientAddr, tszSMSAddr, tszPushAddr, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_SRT);
48-
ModuleSession_PushStream_ClientInsert(tszPushAddr, lpszClientAddr, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_SRT);
55+
if (bSMSFound)
56+
{
57+
ModuleSession_PushStream_ClientInsert(tszPushAddr, lpszClientAddr, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_SRT);
58+
}
4959
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("SRT客户端:%s,拉取流成功,拉流地址:%s,类型:拉流端"), lpszClientAddr, tszSMSAddr);
5060
}
5161
return true;

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,16 @@ bool XEngine_AVPacket_AVPrePlay(LPCXSTR lpszClientAddr, XCHAR* ptszSDBuffer, XCH
109109
PullStream_ClientGet_XStreamPlay(ppSt_PullList[i]->tszClientAddr, lpszClientAddr, ptszSDBuffer, ptszRVBuffer);
110110
ModuleSession_PullStream_SetPushAddr(ppSt_PullList[i]->tszClientAddr, lpszClientAddr);
111111
}
112+
if (st_ServiceConfig.st_XPull.st_PullTs.bPrePull && ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_TS == ppSt_PullList[i]->enStreamType)
113+
{
114+
ModuleSession_PushStream_ClientInsert(ppSt_PullList[i]->tszClientAddr, lpszClientAddr, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_TS);
115+
ModuleSession_PullStream_SetPushAddr(ppSt_PullList[i]->tszClientAddr, lpszClientAddr);
116+
}
117+
if (st_ServiceConfig.st_XPull.st_PullSrt.bPrePull && ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_SRT == ppSt_PullList[i]->enStreamType)
118+
{
119+
ModuleSession_PushStream_ClientInsert(ppSt_PullList[i]->tszClientAddr, lpszClientAddr, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_SRT);
120+
ModuleSession_PullStream_SetPushAddr(ppSt_PullList[i]->tszClientAddr, lpszClientAddr);
121+
}
112122
}
113123
}
114124
BaseLib_Memory_Free((XPPPMEM)&ppSt_PullList, nListCount);

0 commit comments

Comments
 (0)