RTP载荷AAC音频

监控摄像头音频无声?3步排查G711/AAC协议兼容性问题(附Wireshark抓包分析) 本文详细解析监控摄像头音频无声问题的排查方法,重点分析G711/AAC协议兼容性问题。通过3步诊断流程(设备编码能力核查、SDP协议协商分析、RTP流深度分析)结合Wireshark抓包技术,帮助运维人员快速定位并解决音频协议不匹配导致的静默、杂音等问题,提升视频监控系统的可靠性。 阅读详情

《音视频应用开发系列文章目录》

编码RTP over AAC的大致过程

1.添加RTP12字节的头

2.如果AAC有ADTS头,则跳过7字节的data

3.添加4字节的AU_HEAD

  字节1:0x00

  字节2:0x10

  字节3:(data_len & 0x1fe0) >> 5

  字节4:(data_len & 0x1f) << 3

4.添加payload(AAC的真实数据)

RTP打包图

伪代码

void rtp_send_aac(char *data, int len){
	
	// skip ADTS
	if(HAVE_AAC_ADTS){
		
		len -= 7;
		data += 7;
	}
	char buf[RTP_MAX_SIZE];
	// fix buf[0~11] for rtp head
	memcpy(&buf[0], &rtp_head, 12); 
	// fix AU_HEAD
	buf[12] = 0x00;
	buf[13] = 0x10;
	buf[14] = (len & 0x1fe0) >> 5;
	buf[15] = (len & 0x1f) << 3;
	while(1){
	
		if(default_len < len){
		
			// fix payload
			memcpy(&buf[16], data, default_len);
			rtp_head.mark = 0;
			rtp_send(buf, default_len + 16);
			len -= default_len;
			data += default_len;
		}else{ // it's end
			
			// fix last payload and set rtp mark the frame end
			memcpy(&buf[16], data, len);
			rtp_head.mark = 1;
			rtp_send(buf, len + 16);
			break;
		}
	}
}

RTSP->SDP

v=0
o=username 994160913 1 IN IP4 
s=stream
c=IN IP4 0.0.0.0
t=0 0
a=range:npt=0-
a=sendonly
a=control:*
m=video 0 RTP/AVP 96
a=rtpmap:96 H264/90000
a=control:track0
m=audio 0 RTP/AVP 37
a=rtpmap:37 mpeg4-generic/8000/1
a=fmtp:37 streamtype=5; profile-level-id=15; mode=AAC-hbr; sizelength=13; indexlength=3; indexdeltalength=3; config=1588
a=control:track1

audio->aac->sdp->config值的计算方法:

char ConfigStr[12] = {0};
snprintf(ConfigStr, sizeof(ConfigStr), "%02x%02x", 
		(unsigned char)((profile + 1) << 3)|(index >> 1), 
		(unsigned char)((index << 7)|(channels<< 3)));
// ConfigStr为config的值
// profile一般为1
// channels为音频的通道数
// index的值需要根据采样率确定,方法为根据采样率从
// 以下数组取得下表即为index(采样率8000即index为11)
const unsigned int aac_samplerate[16] = {

	97000, 88200, 64000, 48000,
	44100, 32000, 24000, 22050,
	16000, 12000, 11025, 8000,
	7350, 0, 0, 0 
};

注意事项

1.RTP的时间戳需要计算对,不然声音时好时坏,时有时无。

2.AAC的SDP需要描述对,不然VLC无法正常接收。mpeg4-generic/8000/1表示采样率为8K,1个通道。config的值需要计算,计算方法如上描述。

 

 

从零开始写一个RTSP服务器(五)RTP传输AAC 从零开始写一个RTSP服务器系列 从零开始写一个RTSP服务器(一)不一样的RTSP协议讲解 从零开始写一个RTSP服务器(二)RTSP协议的实现 从零开始写一个RTSP服务器(三)RTP传输H.264 从零开始写一个RTSP服务器(四)一个传输H.264的RTSP服务器 从零开始写一个RTSP服务器(五)RTP传输AAC 从零开始写一个RTSP服务器(六)一个传输AAC的RTSP服务器(待写) ... 阅读详情

相关推荐

RTP 协议

实时传送协议(Real-time Transport Protocol或简写RTP,也可以写成RTTP)是一个网络传输协议,它是由IETF的多媒体传输工作小组1996年在RFC 1889中公布的。 RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式。它一开始被设计为一个多播协议,但后来被用在很多单播应用中。RTP协议常用于流媒体系统(配合RTCP协议或者RTSP协议)。因为RTP自身具

技术联盟 2226

RTSP/SDP中的AAC配置

RTSP的音频使用AAC格式, SDP的内容差不多是这样的 v=0 o=- 16128587303007558182 16128587303007558182 IN IP4 WINDOWS-75IDU9Q s=Unnamed i=N/A c=IN IP4 0.0.0.0 t=0 0 a=tool:vlc 3.0.5 a=recvonly a=type:broadcast a=charset:UTF...

wzj_whut的专栏 6138

RTP_AAC_发送_接收_本地文件

RTP_AAC_发送_接收_本地文件

AAC的RTP/SDP

RTP中并没有定义AAC的payload type,因此需要用户自定义。 在h.264+aac的情况下,由于h.264也没有定义payload type,用户可以定义为96; 那么aac的就要定义不同的,如97。 网上给出的例子一般如下: a=rtpmap:97 MP4A-LATM/48000 在实际应用中,要根据实际的aac格式来决定。 这边按照如上配置,vlc拉流可以识别aac

处女座的工程师 2082

伺服电机的位置控制模式:PP模式与CSP模式的比较

在轮廓位置模式下,上位机给定目标绝对位置(或相对位置)、速度、加速度等参数,伺服内部的轨迹发生器根据这些参数生成目标位置曲线指令,通过伺服驱动器内部实现三环控制(位置环、速度环、力矩环)。如果还不理解,不妨看看下面的类比:轮廓位置模式中,上位控制器对伺服电机说,我给你个位置,怎么去哪,走那条路,那是你自己的事,这个时候伺服电机是有自己的思想的。同期同步位置模式红,上位机控制器对伺服电机的管理就和 严格,除了告诉你目标位置,走那条路都是控制器说的算,伺服电机就是个没有灵魂的工具。重点关注,轮廓位置模式。

m0_49968063的博客 5804

PyTorch实战:3D U-Net医学图像分割从零搭建(附完整代码)

本文详细介绍了如何使用PyTorch从零搭建3D U-Net模型进行医学图像分割,涵盖三维卷积实现、模块化架构设计、医学图像专属优化策略及完整训练流程。通过实战代码演示,帮助开发者掌握UNet-3D在CT、MRI等三维医学图像分割中的应用,提升肝脏肿瘤分割、肺结节检测等任务的准确性。

weixin_29061997的博客 329

sdp中aac config字段计算

在rtsp和sip协议中,生成sdp信息时经常要计算aac config字段。本文主要讲述aac config字段的计算方法。

程序人生 5700

FINN vs GFED vs GFAS vs QFED:四大火灾排放清单实战对比(含Python数据处理代码)

本文针对GFED、FINN、GFAS、QFED四大主流火灾排放清单,提供了实战对比分析与Python数据处理代码。通过量化对比东南亚农业火点与亚马逊雨林大火两个典型场景,揭示了不同清单在时空分辨率、算法内核和应用场景上的核心差异,并给出了基于研究目标、区域和模型的清单选择决策框架,帮助研究人员为空气质量模拟或火灾影响评估挑选最合适的数据源。

s3t4u的博客 422

sdp 例子

  AAC: m=audio 4002 RTP/AVP 97 a=rtpmap:97 MPEG4-GENERIC/44100/2 a=fmtp:97 profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3; config=1210 c=IN IP4 10.10.40.41   mpga: ...

yunlianglinfeng的专栏 873

Fleury算法寻找欧拉回路(mtlab代码详解)

【代码】Fleury算法寻找欧拉回路(mtlab代码详解)

m0_63449998的博客 1296

STM32硬件SPI驱动ADS1255/1256避坑指南:从Cube MX配置到稳定采样实战

本文详细解析了使用STM32硬件SPI驱动高精度ADC芯片ADS1255/1256的完整流程与关键陷阱。重点阐述了Cube MX中SPI模式(必须为CPOL=1, CPHA=1)、数据帧格式(MSB First)及波特率(建议从256kHz起)的正确配置,并提供了分步读写时序的代码实现与逻辑分析仪调试方法,帮助开发者避开常见坑点,实现稳定可靠的高精度数据采样。

weixin_29193259的博客 359

rtp中的sdp信息生成

首先看协议中的真实数据,如下所示: v=0 s=liveplay c=IN IP4 172.21.18.61 t=0 0 a=control:* m=video 0 RTP/AVP 96 a=rtpmap:96 H264/90000 a=fmtp:96 profile-level-id=42401E; sprop-parameter-sets=Z0JAHqbBQfoQAAADABAAAAMC

沧海一声笑的专栏 2462

Python爬虫实战:利用Playwright与异步技术高效抓取链家十万级二手房数据

在开始编写代码之前,我们首先需要为项目选择合适的技术栈。1. 传统方案:Requests + BeautifulSoup优点: 简单、轻量、学习成本低。直接发送HTTP请求获取HTML,然后解析。缺点: 对于大量由JavaScript动态渲染的内容无能为力。现代网站(包括链家)大量使用JS来加载数据和实现交互,简单的HTTP请求无法获取到完整的页面内容。此外,容易被基于IP或请求头特征的反爬机制拦截。2. 进阶方案:Selenium优点。

2201_76125261的博客 891

RTP载荷AAC

RTP载荷H264RTP载荷H265AAC音频格式ADTS头详解RTP包的结构: RTP头在 “RTP载荷H264(实战细节)”讲的很清楚了,不了解的可以从上面链接进入查看,AAC中RTP头的使用方法和H264一样,下面介绍下RTP载荷AAC的载荷结构: 载荷和H264的载荷方式是一样的,根据帧数据的大小分为:单包,分片包,聚合包。具体的解释请参考“RTP载荷H264(实战细节)”。一般情况下音频帧只有几百字节,不会使用分片包,又由于聚合包不常用,所以本章说下单包封装AAC的载荷

qq_39466755的博客 576

【雕爷学编程】Arduino动手做(111)---震动提醒模块

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。

雕爷学编程 1898

【机器学习概率统计】11 贝叶斯统计推断:最大后验

这一节,我们来介绍另外一种统计推断方法:贝叶斯统计推断方法。 1.回顾贝叶斯定理 首先,我们先来复习一下贝叶斯定理: p(Θ∣X)=p(X∣Θ)p(Θ)p(X)p(\Theta|X)=\frac{p(X|\Theta)p(\Theta)}{p(X)}p(Θ∣X)=p(X)p(X∣Θ)p(Θ)​ 在这个简简单单的式子当中,蕴含了我们要掌握的很多重要内容: 贝叶斯定理当中的四个概率表达式,他们都非常重要,在这一节的内容中将反复出现,我们来一一解析一下: p(Θ)p(\Theta)p(Θ):先验分布。 反映的是在

机器学习数学基础系列专栏 3270

RTSP协议实现发送ACC音频数据

ACC音频数据进行RTP打包

weixin_44651073的博客 6695

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

保姆级教程:手把手教你用C++实现AAC音频的RTP打包与RTSP推流(附完整源码)

本文提供了一份详细的C++实现AAC音频RTP打包与RTSP推流的保姆级教程,涵盖ADTS头解析、RTP封装、RTSP服务器实现等关键技术,并附完整源码。通过实战指南帮助开发者掌握流媒体传输的核心技术,适用于音视频开发领域。

weixin_30897079的博客 440

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

流媒体基础-RTP协议

RTP协议是流媒体最常用的协议,在学习的过程中,我建议是把所有头字段都给背出来,而不仅仅是照表操作

键盘敲的劈啪响 3867

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

音视频入门基础:RTP专题(17)——音频的SDP媒体描述

音频的SDP媒体描述

崔杰城的博客 2175

RTP格式解析

一般为12字节,16字节头(转自https://www.cnblogs.com/qingquan/archive/2011/07/28/2120440.html) 概述: 实时传送协议(Real-time Transport Protocol或简写RTP,也可以写成RTTP)是一个网络传输协议,它是由IETF的多媒体传输工作小组1996年在RFC 1889中公布的。 RTP协议详细说明了在互...

weixin_30556161的博客 234
上一篇: RTSP音视频传输频笔记
下一篇: RTP载荷H264视频
KayChanGeek
KayChanGeek 领域专家: 嵌入式与硬件开发技术领域 领域专家: 嵌入式与硬件开发技术领域
博客等级 码龄11年 926粉丝 143原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值