@@ -20,7 +20,7 @@ bool XEngine_AVPacket_AVCreate(LPCXSTR lpszClientAddr)
2020 {
2121 RTMPProtocol_Packet_Insert (lpszClientAddr);
2222 }
23- if (st_ServiceConfig.st_XPull .st_PullHls .bEnable || st_ServiceConfig.st_XPull .st_PullSrt .bEnable )
23+ if (st_ServiceConfig.st_XPull .st_PullHls .bEnable || st_ServiceConfig.st_XPull .st_PullSrt .bEnable || st_ServiceConfig. st_XPull . st_PullTs . bEnable )
2424 {
2525 HLSProtocol_TSPacket_Insert (lpszClientAddr, 100 );
2626
@@ -386,13 +386,12 @@ bool XEngine_AVPacket_AVFrame(XCHAR* ptszSDBuffer, int* pInt_SDLen, XCHAR* ptszR
386386 }
387387 }
388388 }
389- if (st_ServiceConfig.st_XPull .st_PullHls .bEnable || st_ServiceConfig.st_XPull .st_PullSrt .bEnable )
389+ if (st_ServiceConfig.st_XPull .st_PullHls .bEnable || st_ServiceConfig.st_XPull .st_PullSrt .bEnable || st_ServiceConfig. st_XPull . st_PullTs . bEnable )
390390 {
391- int nListCount = 0 ;
392- XBYTE** pptszMsgBuffer = NULL ;
391+ *pInt_SDLen = 0 ;
393392 if (0 == byAVType)
394393 {
395- HLSProtocol_TSPacket_AVPacket (lpszClientAddr, &pptszMsgBuffer, &nListCount , 0x100 , lpszMsgBuffer, nMsgLen);
394+ HLSProtocol_TSPacket_AVPacket (lpszClientAddr, (XBYTE *)ptszSDBuffer, pInt_SDLen , 0x100 , lpszMsgBuffer, nMsgLen);
396395 }
397396 else
398397 {
@@ -403,7 +402,7 @@ bool XEngine_AVPacket_AVFrame(XCHAR* ptszSDBuffer, int* pInt_SDLen, XCHAR* ptszR
403402 AVHelp_Packet_AACHdr ((XBYTE*)byAACBuffer, st_AVInfo.st_AudioInfo .nSampleRate , st_AVInfo.st_AudioInfo .nChannel , nMsgLen);
404403 memcpy (byAACBuffer + 7 , lpszMsgBuffer, nMsgLen);
405404 nMsgLen += 7 ;
406- HLSProtocol_TSPacket_AVPacket (lpszClientAddr, &pptszMsgBuffer, &nListCount , 0x101 , byAACBuffer, nMsgLen);
405+ HLSProtocol_TSPacket_AVPacket (lpszClientAddr, (XBYTE*)ptszSDBuffer, pInt_SDLen , 0x101 , byAACBuffer, nMsgLen);
407406 }
408407
409408 int nPATLen = 0 ;
@@ -452,10 +451,7 @@ bool XEngine_AVPacket_AVFrame(XCHAR* ptszSDBuffer, int* pInt_SDLen, XCHAR* ptszR
452451 // HLS推流
453452 if (st_ServiceConfig.st_XPull .st_PullHls .bEnable )
454453 {
455- for (int i = 0 ; i < nListCount; i++)
456- {
457- ModuleSession_PushStream_HLSWrite (lpszClientAddr, (LPCXSTR)pptszMsgBuffer[i], 188 );
458- }
454+ ModuleSession_PushStream_HLSWrite (lpszClientAddr, ptszSDBuffer, *pInt_SDLen);
459455 }
460456 // SRT推流
461457 if (st_ServiceConfig.st_XPull .st_PullSrt .bEnable )
@@ -472,14 +468,20 @@ bool XEngine_AVPacket_AVFrame(XCHAR* ptszSDBuffer, int* pInt_SDLen, XCHAR* ptszR
472468 XEngine_Network_Send (stl_ListIteratorClient->tszClientID , (LPCXSTR)tszPATBuffer, 188 , ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_SRT);
473469 XEngine_Network_Send (stl_ListIteratorClient->tszClientID , (LPCXSTR)tszPMTBuffer, 188 , ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_SRT);
474470 }
475- for (int i = 0 ; i < nListCount; i++)
471+ XEngine_Network_Send (stl_ListIteratorClient->tszClientID , ptszSDBuffer, *pInt_SDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_SRT);
472+ }
473+ if (ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_TS == stl_ListIteratorClient->enClientType )
474+ {
475+ // 如果是关键帧
476+ if (1 == byFrameType)
476477 {
477- XEngine_Network_Send (stl_ListIteratorClient->tszClientID , (LPCXSTR)pptszMsgBuffer[i], 188 , ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_SRT);
478+ XEngine_Network_Send (stl_ListIteratorClient->tszClientID , (LPCXSTR)tszPATBuffer, 188 , ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP);
479+ XEngine_Network_Send (stl_ListIteratorClient->tszClientID , (LPCXSTR)tszPMTBuffer, 188 , ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP);
478480 }
481+ XEngine_Network_Send (stl_ListIteratorClient->tszClientID , ptszSDBuffer, *pInt_SDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP);
479482 }
480483 }
481484 }
482- BaseLib_OperatorMemory_Free ((XPPPMEM)&pptszMsgBuffer, nListCount);
483485 }
484486 if (st_ServiceConfig.st_XPull .st_PullRtsp .bEnable )
485487 {
0 commit comments