@@ -293,13 +293,14 @@ bool XEngine_AVPacket_AVFrame(XCHAR* ptszSDBuffer, int* pInt_SDLen, XCHAR* ptszR
293293 {
294294 XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X (" 检测到推流:%s 过大的音频包:%d" ), lpszClientAddr, nMsgLen);
295295 }
296+ int nStartCode = 0 ;
296297 XBYTE byFrameType = 0 ;
297298 if (0 == byAVType)
298299 {
299300 XENGINE_AVCODEC_VIDEOFRAMETYPE enFrameType;
300- AVHelp_Parse_NaluType (lpszMsgBuffer, ENUM_XENGINE_AVCODEC_VIDEO_TYPE_H264, &enFrameType);
301+ AVHelp_Parse_NaluType (lpszMsgBuffer, ENUM_XENGINE_AVCODEC_VIDEO_TYPE_H264, &enFrameType, &nStartCode );
301302 // 如果是关键帧
302- if (ENUM_XENGINE_AVCODEC_VIDEO_FRAMETYPE_SPS == enFrameType || ENUM_XENGINE_AVCODEC_VIDEO_FRAMETYPE_PPS == enFrameType || ENUM_XENGINE_AVCODEC_VIDEO_FRAMETYPE_SEI == enFrameType)
303+ if (ENUM_XENGINE_AVCODEC_VIDEO_FRAMETYPE_SPS == enFrameType || ENUM_XENGINE_AVCODEC_VIDEO_FRAMETYPE_PPS == enFrameType || ENUM_XENGINE_AVCODEC_VIDEO_FRAMETYPE_SEI == enFrameType || ENUM_XENGINE_AVCODEC_VIDEO_FRAMETYPE_I == enFrameType )
303304 {
304305 byFrameType = 1 ;
305306 }
@@ -512,7 +513,7 @@ bool XEngine_AVPacket_AVFrame(XCHAR* ptszSDBuffer, int* pInt_SDLen, XCHAR* ptszR
512513 {
513514 ModuleHelp_Rtsp_GetSsrc (stl_ListIteratorClient->tszClientID , tszSSCRStr, true );
514515 ModuleHelp_Rtsp_GetRTPAddr (stl_ListIteratorClient->tszClientID , tszADDRStr, true );
515- RTPProtocol_Packet_Packet (tszSSCRStr, lpszMsgBuffer, nMsgLen, &ppSt_RTPPacket, &nPacketCount);
516+ RTPProtocol_Packet_Packet (tszSSCRStr, lpszMsgBuffer + nStartCode , nMsgLen - nStartCode , &ppSt_RTPPacket, &nPacketCount);
516517 // 发送数据,RTSP使用UDP发送
517518 for (int i = 0 ; i < nPacketCount; i++)
518519 {
@@ -550,7 +551,7 @@ bool XEngine_AVPacket_AVFrame(XCHAR* ptszSDBuffer, int* pInt_SDLen, XCHAR* ptszR
550551 if (0 == byAVType)
551552 {
552553 ModuleSession_PullStream_RTCSSrcGet (stl_ListIteratorClient->tszClientID , tszSSCRStr, true );
553- RTPProtocol_Packet_Packet (tszSSCRStr, lpszMsgBuffer, nMsgLen, &ppSt_RTPPacket, &nPacketCount);
554+ RTPProtocol_Packet_Packet (tszSSCRStr, lpszMsgBuffer + nStartCode , nMsgLen - nStartCode , &ppSt_RTPPacket, &nPacketCount);
554555 // 发送数据,RTSP使用UDP发送
555556 for (int i = 0 ; i < nPacketCount; i++)
556557 {
0 commit comments