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。


目录
相关文章
|
Web App开发 编解码 Android开发
2023年音视频开发知识技术合集(基础入门到高级进阶)
2023年音视频开发知识技术合集(基础入门到高级进阶)
|
Linux C语言 内存技术
Linux下使用alsa-lib库完成音频开发: 实现放音和录音(从声卡获取PCM数据保存、向声卡写PCM数据输出)
Linux下使用alsa-lib库完成音频开发: 实现放音和录音(从声卡获取PCM数据保存、向声卡写PCM数据输出)
1751 0
|
JSON JavaScript 前端开发
|
存储 网络协议 网络安全
RTMP协议详解及Wiresahrk抓包分析(一)
RTMP协议详解及Wiresahrk抓包分析
951 2
|
传感器 机器学习/深度学习 编解码
音视频同步的方法:深入探索基于FFmpeg的音视频同步策略(二)
音视频同步的方法:深入探索基于FFmpeg的音视频同步策略
963 1
|
存储 缓存 编解码
FFmpeg开发笔记(四):ffmpeg解码的基本流程详解
FFmpeg开发笔记(四):ffmpeg解码的基本流程详解
FFmpeg开发笔记(四):ffmpeg解码的基本流程详解
|
Linux C语言
RTSP协议的实现
RTSP协议的实现
198 0
|
编解码 UED
音视频同步的方法:深入探索基于FFmpeg的音视频同步策略(一)
音视频同步的方法:深入探索基于FFmpeg的音视频同步策略
1635 1
|
编解码 移动开发 C++
RTMP协议深度解析:从原理到实践,掌握实时流媒体传输技术
RTMP协议深度解析:从原理到实践,掌握实时流媒体传输技术
1982 0
RTMP协议深度解析:从原理到实践,掌握实时流媒体传输技术
|
Web App开发 编解码 网络协议
WebRTC SDP 详解和剖析
WebRTC 技术体系中,SDP 是看起来简单却坑非常多的点,就像直播中的时间戳几乎占据了 80% 的问题,SDP 也是问题频发的点。这篇文章详细分享了 SDP 的关键点,容易出问题的点,是非常实用的满满的干货。
WebRTC SDP 详解和剖析