Skip to content

Commit 3cf82e6

Browse files
committed
fixed:not break header for rtp packet of video
1 parent 4fb5c15 commit 3cf82e6

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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
{

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_StreamMediaApp.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,8 +161,8 @@ int main(int argc, char** argv)
161161
memset(&st_XLogConfig, '\0', sizeof(HELPCOMPONENTS_XLOG_CONFIGURE));
162162
memset(&st_ServiceConfig, '\0', sizeof(XENGINE_SERVICECONFIG));
163163

164-
//pSt_VFile = _xtfopen("./1.ts", "wb");
165-
//pSt_AFile = _xtfopen("./1.h264", "wb");
164+
//pSt_VFile = _xtfopen("./1.h264", "wb");
165+
//pSt_AFile = _xtfopen("./1.aac", "wb");
166166
//初始化参数
167167
if (!XEngine_Configure_Parament(argc, argv))
168168
{

0 commit comments

Comments
 (0)