Skip to content

Commit b3d11ff

Browse files
committed
modify:unified pre play code
1 parent e4dfd6a commit b3d11ff

File tree

3 files changed

+27
-16
lines changed

3 files changed

+27
-16
lines changed

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.cpp

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -212,22 +212,7 @@ bool PushStream_RTMPTask_Handle(XENGINE_RTMPHDR* pSt_RTMPHdr, LPCXSTR lpszClient
212212
ModuleSession_PushStream_SetAVInfo(lpszClientAddr, &st_AVInfo);
213213
BaseLib_Memory_Free((XPPPMEM)&st_RTMPData.ppSt_CMDProperty, st_RTMPData.nCount);
214214
//如果启用了预拉流
215-
if (st_ServiceConfig.st_XPull.st_PullRtmp.bPrePull)
216-
{
217-
XCHAR tszSMSAddr[MAX_PATH] = {};
218-
ModuleSession_PushStream_GetAddrForAddr(lpszClientAddr, tszSMSAddr);
219-
220-
int nListCount = 0;
221-
STREAMMEDIA_PULLLISTINFO** ppSt_PullList;
222-
ModuleSession_PullStream_GetList(&ppSt_PullList, &nListCount, tszSMSAddr);
223-
for (int i = 0; i < nListCount; i++)
224-
{
225-
PushStream_RTMPTask_Play(ppSt_PullList[i]->tszClientAddr, lpszClientAddr, ptszSDBuffer);
226-
ModuleSession_PullStream_SetPushAddr(ppSt_PullList[i]->tszClientAddr, lpszClientAddr);
227-
}
228-
BaseLib_Memory_Free((XPPPMEM)&ppSt_PullList, nListCount);
229-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("RTMP推流端:%s,预发布流通知成功,个数:%d"), lpszClientAddr, nListCount);
230-
}
215+
XEngine_AVPacket_AVPrePlay(lpszClientAddr, ptszSDBuffer, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_RTMP);
231216
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("RTMP推流端:%s,请求数据协议解析成功,数据列表个数:%d"), lpszClientAddr, st_RTMPData.nCount);
232217
}
233218
else if (XENGINE_STREAMMEDIA_RTMP_MSGTYPE_COMMAND == pSt_RTMPHdr->byTypeID)

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,31 @@ bool XEngine_AVPacket_AVSetTime(LPCXSTR lpszClientAddr, int nVideoParament, int
8080
}
8181
return true;
8282
}
83+
bool XEngine_AVPacket_AVPrePlay(LPCXSTR lpszClientAddr, XCHAR* ptszSDBuffer, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE enPushType)
84+
{
85+
XCHAR tszSMSAddr[MAX_PATH] = {};
86+
ModuleSession_PushStream_GetAddrForAddr(lpszClientAddr, tszSMSAddr);
87+
//获得所有预拉流客户端
88+
int nListCount = 0;
89+
STREAMMEDIA_PULLLISTINFO** ppSt_PullList;
90+
ModuleSession_PullStream_GetList(&ppSt_PullList, &nListCount, tszSMSAddr);
91+
for (int i = 0; i < nListCount; i++)
92+
{
93+
//rtmp预拉流
94+
if (st_ServiceConfig.st_XPull.st_PullRtmp.bPrePull && ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_RTMP == enPushType)
95+
{
96+
//判断客户端
97+
if (ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_RTMP == ppSt_PullList[i]->enStreamType)
98+
{
99+
PushStream_RTMPTask_Play(ppSt_PullList[i]->tszClientAddr, lpszClientAddr, ptszSDBuffer);
100+
ModuleSession_PullStream_SetPushAddr(ppSt_PullList[i]->tszClientAddr, lpszClientAddr);
101+
}
102+
}
103+
}
104+
BaseLib_Memory_Free((XPPPMEM)&ppSt_PullList, nListCount);
105+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("RTMP推流端:%s,预发布流通知成功,个数:%d"), lpszClientAddr, nListCount);
106+
return true;
107+
}
83108
bool XEngine_AVPacket_AVHdr(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, XBYTE byAVType, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE enClientType)
84109
{
85110
XENGINE_PROTOCOL_AVINFO st_AVInfo = {};

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,6 @@ typedef struct
2020
bool XEngine_AVPacket_AVCreate(LPCXSTR lpszClientAddr);
2121
bool XEngine_AVPacket_AVDelete(LPCXSTR lpszClientAddr);
2222
bool XEngine_AVPacket_AVSetTime(LPCXSTR lpszClientAddr, int nVideoParament, int nAudioParament);
23+
bool XEngine_AVPacket_AVPrePlay(LPCXSTR lpszClientAddr, XCHAR* ptszSDBuffer, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE enPushType);
2324
bool XEngine_AVPacket_AVHdr(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, XBYTE byAVType, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE enClientType);
2425
bool XEngine_AVPacket_AVFrame(XCHAR* ptszSDBuffer, int* pInt_SDLen, XCHAR* ptszRVBuffer, int* pInt_RVLen, LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, XBYTE byAVType);

0 commit comments

Comments
 (0)