【问题标题】:How to find Nal header in h.264 RTP packet如何在 h.264 RTP 数据包中找到 Nal 标头
【发布时间】:2015-06-01 21:07:30
【问题描述】:

我需要通过解析 RTP 数据包来找到 NAL 标头,其中每个 NAL 单元被封装到一个 RTP 数据包中,然后我解析 Nal 标头以了解它是否是 PPS 单元。我尝试了以下但没有结果:

       dataBuffer = (char*)MESSAGE_ReturnPacket(msg);

       byte * hdr = (byte*)dataBuffer + RTP_HDR_SIZE; //dataBuffer contains  the RTP packet

        RTPParsing((byte*)dataBuffer,rp,hdr);

        if (rp.nal_type == 8 )
        {
            printf("\n  PPS is found \n");

        }
        else
       {
       printf("\n No PPS is found\n");

        }

在哪里

    int RTPParsing(byte *pData,RTPpacket_t &rp, byte *hdr)
    {
    if ((pData[0] & 0xc0) != (2 << 6)){
    printf("[RTP] version is incorrect! dump = 0x%x 0x%x 0x%x 0x%x 

    \n",pData[0], pData[1], pData[2], pData[3]);
    return 0;
    }

/* parse RTP header */

rp.v = (pData[0] & 0xc0) >> 6; /* protocol version */
rp.p = (pData[0] & 0x40) >> 5; /* padding flag */
rp.x = (pData[0] & 0x20) >> 4; /* header extension flag */
rp.cc = (pData[0] & 0x0f);  /* CSRC count */
rp.m = (pData[1] & 0x80) >> 7; /* marker bit */
rp.pt = (pData[1] & 0x7F); //Payload Type
rp.seq = ntohs (((unsigned short *) pData)[1]);    /* sequence number */
rp.timestamp = ntohl (((unsigned int *) pData)[1]); /* timestamp */
rp.ssrc = ntohl (((unsigned int *) pData)[2]);  /* synchronization source */
rp.nal_type = (hdr[1] & 0x1F); // get NAL unit's type

if (rp.cc)

    {
    for (int i = 0; i < rp.cc; i++)
    {
        //fprintf (out, " csrc: 0x%08x",ntohl (((unsigned int *) data)[3 + i]));
    }
    }
    return 0;
    }

有什么帮助吗?

【问题讨论】:

    标签: header h.264 rtp


    【解决方案1】:

    根据RFC6184 在单 NAL 单元模式下,“NAL 单元的第一个字节作为 RTP 负载头”

    您的偏移量不正确(1 而不是 0):

    rp.nal_type = (hdr[1] & 0x1F); // get NAL unit's type
    

    此外,将 RTP_HDR_SIZE 硬编码为 12(如果您正在这样做)可能会导致问题,因为标头的大小可能会因扩展标头、CSRC 等而异。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-06
      • 2011-11-26
      • 1970-01-01
      • 2011-10-05
      • 2011-12-16
      • 1970-01-01
      • 2016-03-22
      • 1970-01-01
      相关资源
      最近更新 更多