随笔 - 223  文章 - 0  评论 - 77  阅读 - 68万

RTCP报文解析

 RTCP包的头部结构体定义

复制代码
struct RTCP_Header
{
    unsigned short rc:5;
    unsigned short padding:1;
    unsigned short version:2; //1 char
    unsigned short payloadtype:8; //2 char
    unsigned short length; //3,4 char
    unsigned int ssrc; //5,6,7,8 char
};
复制代码

 

Sender Report 类型的RTCP数据部分结构体定义

struct Rtcp_SR
{
    unsigned int  NtpTimestampMSW;
    unsigned int  NtpTimestampLSW;
    unsigned int  RtpTimestamp;
    unsigned int  SenderPacketCnt;
    unsigned int  SenderOctetCnt;
};

 

RTCP报文解析函数

入参:RTCP报文指针、报文字节大小

复制代码
void parse_udp_packet(unsigned char* packet, int packet_length)
{    
    int offset = 0;
    while (offset < packet_length)
    {
        RTCP_Header* pHeader =  (RTCP_Header*)(packet + offset);
        printf("ssrc: 0x%08x ver: %d, padding: %d, rc: %d, type: %d, paloadlen: %d\n", 
            ntohl(pHeader->ssrc), pHeader->version, pHeader->padding, pHeader->rc, pHeader->payloadtype, 4 * ntohs(pHeader->length));

        if(pHeader->payloadtype == 200)
        {
            Rtcp_SR* pstSR = (Rtcp_SR*)(packet + offset + 8);

            printf("octetCnt:%d, packetCnt: %d\n", 
                ntohl(pstSR->SenderOctetCnt), ntohl(pstSR->SenderPacketCnt));
        }

        offset += 4 * ntohs(pHeader->length) + 4;
    }

    return;
}
复制代码

 

posted on   Arthurian  阅读(64)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
历史上的今天:
2018-06-03 Linux 下安装 MATLAB
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示