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;
}

RTCP报文解析的更多相关文章

  1. 音视频同步!RTCP 协议解析及代码实现

    RTCP 是实时控制协议(Real-Time Control Protocol)的缩写.RTCP 由 RFC 3550 定义(取代作废的 RFC 1889). 实时传输协议(RTP)和实时控制协议(R ...

  2. 报文解析及CRC类

    /// <summary> /// 报文解析转换类 /// </summary> public class DatagramConvert { public static En ...

  3. ISO8583报文解析

    在此只写了一个8583报文的拆包,组包其实也差不多的. 不多说直接上文件, 具体思路过程,在解析类里面写的有. 其中包含了四个文件 8583resp.txt报文 ISO8583medata配置文件 B ...

  4. 基于DPI(深度报文解析)的应用识别

    一.概述 1.DPI(Deep packet inspection,深度报文解析) 所谓“深度”是和普通的报文分析层次相比较而言的,“普通报文检测”仅分析IP包4 层以下的内容,包括源地址.目的地址. ...

  5. C#ModBus Tcp 报文解析

    上一篇博客已经完成 C#ModBus Tcp Master的实现 本篇主要对不同的功能码所发出的报文进行解析(包括请求报文及响应报文) 读操作 功能码 0x01 读一组线圈 读取站号为1 从地址12开 ...

  6. GOOSE报文解析

    GOOSE报文解析 变电站 使用 MMS报文 http://www.360doc.com/content/16/1014/20/36538220_598459873.shtml

  7. MH/T4029.3 IFPL报文解析

    MH/T4029.3是民航业用来规定飞行计划相关数据交互的规范,今天我们先来解析下其中I类的IFPL报文. 我们先来看看IFPL报文长啥样. ZCZC -TITLE IFPL -FILTIM 0109 ...

  8. XML报文解析

    /** * XML报文解析 * @param docStr */ private Map<String, Object> analysisXmlStr(String xmlStr) { t ...

  9. xml报文解析和组装

    package com.xjts.cipher.util;import java.io.File;import java.io.FileWriter;import java.io.IOExceptio ...

  10. Motorola和Intel格式报文解析的区别

      结论:无论用的Motorola,还是Intel格式,只在单个信号跨字节时解析才有区别. 先看下Vector的CANoe中dbc编辑器是如何呈现报文的: 图1 CAN报文中byte与bit顺序 从图 ...

随机推荐

  1. shell脚本中$0 $1 $# $@ $* $? $$ 的各种符号意义详解

    一.概述 shell中有两类字符:普通字符.元字符. 1. 普通字符 在Shell中除了本身的字面意思外没有其他特殊意义,即普通纯文本: 2. 元字符 是Shell的保留字符,在Shell中有着特殊的 ...

  2. Vue elementui 进度条随机颜色

    项目要求显示进度条,而且进度条的颜色不能重复,所以就有了随机进度条的想法. 实现的最终效果: <el-table-column header-align="center" a ...

  3. Java并发编程之验证volatile指令重排-理论篇

    Java并发编程之验证volatile指令重排-理论篇 Java并发包下的类中大量使用了volatile关键字.通过之前文章介绍,大家已经知道了volatile的三大特性:共享变量可见性:不保证原子性 ...

  4. Redis 入门 - 安装最全讲解(Windows、Linux、Docker)

    经过上一章节的介绍,相信大家对Redis已经有了大致的认知,今天主要给大家详细讲解Redis在Windows.Linux.Docker下的安装过程. 01.Windows 下面给大家介绍三种在Wind ...

  5. Linux (Debian) 安装MySQL 后如何获取登录密码

    树莓派安装MySQL后获取登录密码 树莓派基于Debian系统. 成功安装MySQL后 su root vim /etc/mysql/debian.cnf 其中 user 和 password 就是你 ...

  6. 一文看懂global, nonlocal, local变量

    Python中,变量是根据程序运行顺序进行的,比如函数外的变量,在函数内是可见的,但是可用,不可赋值.那么如何实现赋值呢? 利用global关键字进行. 在函数内,如果出现和函数外的变量同名变量,而且 ...

  7. HTML & CSS – Styling Table

    前言 Table (表格) 历史悠久, 它有许多独特的默认样式, 它也是最早的布局方案方案哦 (现在依然有用 table 来做布局的, 比如 email template). 这篇来介绍一下基本的 t ...

  8. Kubernetes Pod生命周期(十七)

    前面我们已经了解了 Pod 的设计原理,接下来我们来了解下 Pod 的生命周期.下图展示了一个 Pod 的完整生命周期过程,其中包含 Init Container.Pod Hook.健康检查 三个主要 ...

  9. ChatGPT论文降重Prompt

    你是一个已经阅读过大量论文的论文写作专家.我正在设计一个基于xxx系统.接下来,我将给你一个论文段落,你可以使用调整句子用词.句子结构等方法,重新描述这段话,对文章的内容进行润色,使之更加接近论文的写 ...

  10. 【USB3.0协议学习】Topic2·USB3.0的LTSSM分析

    一.什么是LTSSM,处于USB层次中的哪个位置? LTSSM是链路训练状态机的简称,位于USB3.0协议的link layer,共有12种状态,在链路的两端,也就是Downstream port和U ...