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. Linux驱动 | 从0写一个设备树节点实例

    一.前言 设备树是每一个Linux驱动工程师都必须掌握的一个知识点,有很多之前做单片机的朋友刚接触Linux驱动时,会一脸懵! 其实设备树的使用并没有大家想像的那么复杂,对于大部分工程师来说,只要会修 ...

  2. Antd-React-TreeSelect前端搜索过滤

    在开发过程中,但是antd中的搜索会把多余的也会带出来 就例如下图,我们本想去搜索1但是他会把其子节点都带出来,其实我们的本意是像搜2一样或者当中间隔层处理 但是我们该如何解决这样的问题呢如何做到下面 ...

  3. Ubuntu20.04安装CUDA和CUDNN

    CUDA是GPU深度学习的运行库,那么cuDNN就是训练加速工具,两者要相互配合使用,所以一般机器学习需要训练引擎(tensorflow-gpu) + CUDA + cuDNN使用.想不安装cuDNN ...

  4. Visual Studio Code 配置文件关联

    在编写 Linux 的 .service 文件的时候,我发现 .service 文件的本质是 INI 文件.然而 VS Code 却并没有使用 INI 格式进行语法高亮.于是我通过如下设置使 VS C ...

  5. 使用 SSH 转义代码来控制连接

    OpenSSH 最常被忽视的一个非常有用的功能是能够从连接内部控制会话的某些方面.通过使用 SSH 转义代码,我们能够在会话内部与本地 SSH 软件进行交互. 强制从客户端断开连接(如何退出卡住或冻结 ...

  6. FFmpeg开发笔记(五十一)适合学习研究的几个音视频开源框架

    ​很多程序员想学习音视频的编程开发,却不知从何学习,因为音视频技术的体系庞大.知识杂糅,一眼望去就令人生怯.那么学习音视频建议站在前人的肩膀上,从优秀的音视频开源框架开始钻研,先熟悉这些开源工具的具体 ...

  7. 防御DDOS攻击

    如何防御DDOS攻击 1.采用高性能的网络设备 首先要保证网络设备不能成为瓶颈,因此选择路由器.交换机.硬件防火墙等设备的时候要尽量选用知名度高.口碑好的产品.再就是假如和网络提供商有特殊关系或协议的 ...

  8. MMDetection

    安装了mmdetection,想跑一下有几篇文章的工作.总觉得发展很快,一转眼几年时间,好多东西都变了.可再仔细看,感觉又没变啥,还是faster rcnn, ssd, yolo等,这几年变化的主要是 ...

  9. SQL SEVER CDC 启动和关闭 操作说明

    什么是变更数据捕获 (CDC)? 变更数据捕获使用 SQL Server 代理记录表中发生的插入.更新及删除. 因此,它使得可以通过关系格式轻松使用这些数据更改. 将为修改的行捕获将这些更改数据应用到 ...

  10. 算法学习-Dancing Links X

    Dancing Links X 舞蹈链. 实质为用循环十字链在图上将所有"1"的位置链起来 构造较为巧妙,且极易理解,本题为 DLX 模板(精确覆盖问题) DLX 算法的题目做法一 ...