RTP传输AAC

简介: RTP传输AAC

AAC格式

  • AAC音频文件有一帧一帧的ADTS帧组成,每个ADTS帧包含ADTS头部和AAC数据,如下所示

  • ADTS头部的大小通常为7个字节,包含着这一帧数据的信息,由固定和可变两部分组成
  • 固定部分

  • 可变部分

  • 各字段的意思如下
  • syncword :总是0xFFF, 代表一个ADTS帧的开始, 用于同步.
  • ID :MPEG Version: 0 for MPEG-4,1 for MPEG-2
  • layer :always: ‘00’
  • protection_absent :Warning, set to 1 if there is no CRC and 0 if there is CRC
  • profile :表示使用哪个级别的AAC,如01 Low Complexity(LC) – AAC LC
  • sampling_frequency_index :采样率的下标

  • aac_frame_length :一个ADTS帧的长度包括ADTS头和AAC原始流
  • adts_buffer_fullness :0x7FF 说明是码率可变的码流
  • number_of_raw_data_blocks_in_frame :表示ADTS帧中有number_of_raw_data_blocks_in_frame + 1个AAC原始帧

AAC的RTP打包

  • AAC的RTP打包方式并没有向H.264那样丰富,我知道的只有一种方式,原因主要是AAC一帧数据大小都是几百个字节,不会向H.264那么少则几个字节,多则几千
  • AAC的RTP打包方式就是将ADTS帧取出ADTS头部,取出AAC数据,每帧数据封装成一个RTP包
  • 需要注意的是,并不是将AAC数据直接拷贝到RTP的载荷中。AAC封装成RTP包,在RTP载荷中的前四个字节是有特殊含义的,然后再是AAC数据,如下图所示
  • 其中RTP载荷的一个字节为0x00,第二个字节为0x10
  • 第三个字节和第四个字节保存AAC Data的大小,最多只能保存13bit,第三个字节保存数据大小的高八位,第四个字节的高5位保存数据大小的低5位
  • AAC RTP包的时间戳计算
    假设音频的采样率位44100,即每秒钟采样44100次,AAC一般将1024次采样编码成一帧,所以一秒就有44100/1024=43帧,RTP包发送的每一帧数据的时间增量为44100/43=1025,每一帧数据的时间间隔为1000/43=23ms。


目录
相关文章
|
监控 安全 Unix
进程回收的实现方式与注意事项:Linux C/C中的回收机制
进程回收的实现方式与注意事项:Linux C/C中的回收机制
970 1
|
网络协议 Linux
音视频学习之rtsp推拉流学习2(流媒体服务器ZLMediaKit)
音视频学习之rtsp推拉流学习2(流媒体服务器ZLMediaKit)
2864 0
|
Linux C语言 内存技术
Linux下使用alsa-lib库完成音频开发: 实现放音和录音(从声卡获取PCM数据保存、向声卡写PCM数据输出)
Linux下使用alsa-lib库完成音频开发: 实现放音和录音(从声卡获取PCM数据保存、向声卡写PCM数据输出)
2100 0
|
算法 计算机视觉
Opencv学习笔记(六):cv2.resize函数的介绍
这篇文章介绍了OpenCV库中cv2.resize函数的使用方法,包括其参数、插值方式选择以及实际代码示例。
3261 1
Opencv学习笔记(六):cv2.resize函数的介绍
|
应用服务中间件 Linux nginx
FFmpeg学习笔记(一):实现rtsp推流rtmp以及ffplay完成拉流操作
这篇博客介绍了如何使用FFmpeg实现RTSP推流到RTMP服务器,并使用ffplay进行拉流操作,包括在Windows和Linux系统下的命令示例,以及如何通过HTML页面显示视频流。
3854 0
|
编解码 容器
音视频学习之时间戳相关整理(时间基tbr,tbn,tbc)
音视频学习之时间戳相关整理(时间基tbr,tbn,tbc)
686 0
|
网络协议 Java Linux
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
本文介绍了PyAV库,它是FFmpeg的Python绑定,提供了底层库的全部功能和控制。文章详细讲解了PyAV的安装过程,包括在Windows、Linux和ARM平台上的安装步骤,以及安装中可能遇到的错误和解决方法。此外,还解释了时间戳的概念,包括RTP、NTP、PTS和DTS,并提供了Python代码示例,展示如何获取RTSP流中的各种时间戳。最后,文章还提供了一些附录,包括Python通过NTP同步获取时间的方法和使用PyAV访问网络视频流的技巧。
4278 4
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
|
API
FFmpeg中AVPacket、AVFrame结构的基本使用
FFmpeg中AVPacket和AVFrame结构的内存分配、释放和引用计数处理,以及如何避免内存泄漏。
535 3
|
编解码 网络协议 网络性能优化
RTP/RTCP 协议讲解
RTP/RTCP 协议讲解
4406 0
|
存储 编解码 数据处理
深入浅出:FFmpeg 音频解码与处理AVFrame全解析(二)
深入浅出:FFmpeg 音频解码与处理AVFrame全解析
1210 0