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。


目录
相关文章
|
6月前
|
编解码 网络协议 网络性能优化
RTP/RTCP 协议讲解
RTP/RTCP 协议讲解
306 0
|
6月前
|
编解码 Linux C语言
实现一个传输aac音频的rtsp服务器
实现一个传输aac音频的rtsp服务器
92 0
|
6月前
|
编解码 Linux C语言
实现一个传输h.264的rtsp服务器
实现一个传输h.264的rtsp服务器
93 0
|
6月前
|
存储 网络协议 视频直播
音视频学习之rtsp学习rtp协议的理解(rtp)
音视频学习之rtsp学习rtp协议的理解(rtp)
114 0
|
编解码 网络性能优化 网络协议
|
编解码
RTP 协议
概述: 实时传送协议(Real-time Transport Protocol或简写RTP,也可以写成RTTP)是一个网络传输协议,它是由IETF的多媒体传输工作小组1996年在RFC 1889中公布的。
1181 0
|
编解码 网络协议