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;
}
RTCP报文解析的更多相关文章
- 音视频同步!RTCP 协议解析及代码实现
RTCP 是实时控制协议(Real-Time Control Protocol)的缩写.RTCP 由 RFC 3550 定义(取代作废的 RFC 1889). 实时传输协议(RTP)和实时控制协议(R ...
- 报文解析及CRC类
/// <summary> /// 报文解析转换类 /// </summary> public class DatagramConvert { public static En ...
- ISO8583报文解析
在此只写了一个8583报文的拆包,组包其实也差不多的. 不多说直接上文件, 具体思路过程,在解析类里面写的有. 其中包含了四个文件 8583resp.txt报文 ISO8583medata配置文件 B ...
- 基于DPI(深度报文解析)的应用识别
一.概述 1.DPI(Deep packet inspection,深度报文解析) 所谓“深度”是和普通的报文分析层次相比较而言的,“普通报文检测”仅分析IP包4 层以下的内容,包括源地址.目的地址. ...
- C#ModBus Tcp 报文解析
上一篇博客已经完成 C#ModBus Tcp Master的实现 本篇主要对不同的功能码所发出的报文进行解析(包括请求报文及响应报文) 读操作 功能码 0x01 读一组线圈 读取站号为1 从地址12开 ...
- GOOSE报文解析
GOOSE报文解析 变电站 使用 MMS报文 http://www.360doc.com/content/16/1014/20/36538220_598459873.shtml
- MH/T4029.3 IFPL报文解析
MH/T4029.3是民航业用来规定飞行计划相关数据交互的规范,今天我们先来解析下其中I类的IFPL报文. 我们先来看看IFPL报文长啥样. ZCZC -TITLE IFPL -FILTIM 0109 ...
- XML报文解析
/** * XML报文解析 * @param docStr */ private Map<String, Object> analysisXmlStr(String xmlStr) { t ...
- xml报文解析和组装
package com.xjts.cipher.util;import java.io.File;import java.io.FileWriter;import java.io.IOExceptio ...
- Motorola和Intel格式报文解析的区别
结论:无论用的Motorola,还是Intel格式,只在单个信号跨字节时解析才有区别. 先看下Vector的CANoe中dbc编辑器是如何呈现报文的: 图1 CAN报文中byte与bit顺序 从图 ...
随机推荐
- shell脚本中$0 $1 $# $@ $* $? $$ 的各种符号意义详解
一.概述 shell中有两类字符:普通字符.元字符. 1. 普通字符 在Shell中除了本身的字面意思外没有其他特殊意义,即普通纯文本: 2. 元字符 是Shell的保留字符,在Shell中有着特殊的 ...
- Vue elementui 进度条随机颜色
项目要求显示进度条,而且进度条的颜色不能重复,所以就有了随机进度条的想法. 实现的最终效果: <el-table-column header-align="center" a ...
- Java并发编程之验证volatile指令重排-理论篇
Java并发编程之验证volatile指令重排-理论篇 Java并发包下的类中大量使用了volatile关键字.通过之前文章介绍,大家已经知道了volatile的三大特性:共享变量可见性:不保证原子性 ...
- Redis 入门 - 安装最全讲解(Windows、Linux、Docker)
经过上一章节的介绍,相信大家对Redis已经有了大致的认知,今天主要给大家详细讲解Redis在Windows.Linux.Docker下的安装过程. 01.Windows 下面给大家介绍三种在Wind ...
- Linux (Debian) 安装MySQL 后如何获取登录密码
树莓派安装MySQL后获取登录密码 树莓派基于Debian系统. 成功安装MySQL后 su root vim /etc/mysql/debian.cnf 其中 user 和 password 就是你 ...
- 一文看懂global, nonlocal, local变量
Python中,变量是根据程序运行顺序进行的,比如函数外的变量,在函数内是可见的,但是可用,不可赋值.那么如何实现赋值呢? 利用global关键字进行. 在函数内,如果出现和函数外的变量同名变量,而且 ...
- HTML & CSS – Styling Table
前言 Table (表格) 历史悠久, 它有许多独特的默认样式, 它也是最早的布局方案方案哦 (现在依然有用 table 来做布局的, 比如 email template). 这篇来介绍一下基本的 t ...
- Kubernetes Pod生命周期(十七)
前面我们已经了解了 Pod 的设计原理,接下来我们来了解下 Pod 的生命周期.下图展示了一个 Pod 的完整生命周期过程,其中包含 Init Container.Pod Hook.健康检查 三个主要 ...
- ChatGPT论文降重Prompt
你是一个已经阅读过大量论文的论文写作专家.我正在设计一个基于xxx系统.接下来,我将给你一个论文段落,你可以使用调整句子用词.句子结构等方法,重新描述这段话,对文章的内容进行润色,使之更加接近论文的写 ...
- 【USB3.0协议学习】Topic2·USB3.0的LTSSM分析
一.什么是LTSSM,处于USB层次中的哪个位置? LTSSM是链路训练状态机的简称,位于USB3.0协议的link layer,共有12种状态,在链路的两端,也就是Downstream port和U ...