【Android RTMP】音频数据采集编码 ( AAC 音频格式解析 | FLV 音频数据标签解析 | AAC 音频数据标签头 | 音频解码配置信息 )(二)

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 【Android RTMP】音频数据采集编码 ( AAC 音频格式解析 | FLV 音频数据标签解析 | AAC 音频数据标签头 | 音频解码配置信息 )(二)

2. AAC 音频特殊配置


打开第 2 22 个音频数据标签 : 内容如下 , 这是完整的音频标签数据 ;


0x000001bf  :   08 00 00 07 00 00 00 00 
0x000001c7  :   00 00 00 AF 00 12 10 56 
0x000001cf  :   E5 00 00 00 00 12

image.png





3. AAC 音频数据标签


AAC 音频数据标签 : 该标签中封装实际的音频采样 , AAC 格式的 ;


0x00017494  :   08 00 00 13 00 00 85 00 
0x0001749c  :   00 00 00 AF 01 21 1A 93 
0x000174a4  :   40 7D 6B 94 64 A0 9A 03 
0x000174ac  :   EB 5C A3 25 05 C0 00 00 
0x000174b4  :   00 1E


image.png






三、 FLV 音频数据标签头


音频标签数据标签头解析 : 前 11 个字节时标签头信息 ; 这 11 1111 个字节仅做参考 , 在 RTMP 中是不封装这个标签头的 ;


0x000001bf  :   08 00 00 07 00 00 00 00 
0x000001c7  :   00 00 00



① 标签类型 ( tag type ) : 1 11 字节 , 索引区间 [ 0 ] [0][0] , 08 代表音频 , 09 代表视频 , 12 代表脚本信息 , 这里是 08 , 代表音频数据 ;


② 标签数据大小 ( data size ) : 3 33 字节 , 索引区间 [ 1 , 3 ] [1,3][1,3] , 除了包头之外的数据大小 , 包头一般是 11 1111 字节, 整个标签大小是该 标签数据大小 ( data size ) + 11 , 本标签的数据大小是 7 77 字节, 总的数据大小是 18 1818 字节, 十六进制对应 0x12 1212


③ 时间戳 ( time stamp ) : 3 33 字节 , 索引区间 [ 4 , 6 ] [4,6][4,6] , 表示从开始播放到当前时刻的播放时间 , 单位毫秒 , 也就是当前标签的时间与第一个标签时间的差值 ; 一般是 00 00 00 ;


④ 时间戳扩展位 ( time stamp ext ) : 1 11 字节 , 索引区间 [ 7 ] [7][7] , 如果时间戳较大 , 3 33 位装不下 , 扩展一位 ; 一般是 00 ;


⑤ 流编号 ( stream id ) : 3 33 字节 , 索引区间 [ 8 , 10 ] [8,10][8,10] , 一般都是 00 00 00 ;



组装 RTMP 包的时候 , 是不需要封装标签头的 , 直接将 AAC 裸数据 , 也就是这 7 77 个字节封装到 RTMP 包中 ;






四、 音频解码配置信息




1. AAC 音频数据


AAC 音频数据 : 分为两类 , 解码配置数据, 音频采样数据 ;



① AAC 格式音频解码配置信息 : 下面的 7 77 个字节时音频解码配置信息 ;



0x000001bf  :   
0x000001c7  :            AF 00 12 10 56 
0x000001cf  :   E5


② AAC 音频数据标签数据采样信息 :


0x0001749c  :            AF 01 21 1A 93 
0x000174a4  :   40 7D 6B 94 64 A0 9A 03 
0x000174ac  :   EB 5C A3 25 05 C0




2. 第 1 11 字节 AF 数据解析


第 1 11 字节 AF 数据解析 : 前 4 44 位表示音频格式 , 之后的 2 22 位表示采样率 , 之后的 1 11 位表示采样长度 , 最后一位表示音频类型 ;



① 0xAF 使用二进制表示为 0b‭1010 1111‬ ;


② 音频格式 : 4 44 位 [ 7 : 4 ] : 0b1010 = 10 , 值为 10 , 表示 AAC 格式 ;


③ 采样率 : 2 22 位 [ 3 : 2 ] : 0b11 = 3 , 代表 44000 Hz 采样率 , AAC 格式一般都是 44000 采样率


值 采样率

0 5500Hz

1 11000Hz

2 22000Hz

3 44000Hz

④ 采样位数 : 1 11 位 [ 1 ] : 0b1 = 1 , 代表采样长度 16 位 ;


值 采样位数

0 8 位 / 1 字节

1 16 位 / 2字节

⑤ 音频通道 : 1 11 位 [ 0 ] : 0b1 = 1 , 代表立体声 ;


值 音频通道

0 单声道

1 立体声


该位一般也就是声道不同 , 其它参数基本都是默认的值 , 立体声 AF , 单声道 AE ;




3. 音频数据类型


音频数据类型 :



① 音频解码配置信息 : 前两位是 AF 00 , 指导 AAC 数据如何解码 ;


② 音频采样信息 : 前两位是 AF 01 , 实际的 AAC 音频采样数据 ;


目录
相关文章
|
6天前
|
开发框架 Android开发 iOS开发
安卓与iOS开发中的跨平台策略:一次编码,多平台部署
在移动应用开发的广阔天地中,安卓和iOS两大阵营各占一方。随着技术的发展,跨平台开发框架应运而生,它们承诺着“一次编码,到处运行”的便捷。本文将深入探讨跨平台开发的现状、挑战以及未来趋势,同时通过代码示例揭示跨平台工具的实际运用。
|
3月前
|
XML IDE 开发工具
🔧Android Studio高级技巧大公开!效率翻倍,编码不再枯燥无味!🛠️
【9月更文挑战第11天】在软件开发领域,Android Studio凭借其强大的功能成为Android开发者的首选IDE。本文将揭示一些提升开发效率的高级技巧,包括自定义代码模板、重构工具、高级调试技巧及多模块架构。通过对比传统方法,这些技巧不仅能简化编码流程,还能显著提高生产力。例如,自定义模板可一键插入常用代码块;重构工具能智能分析并安全执行代码更改;高级调试技巧如条件断点有助于快速定位问题;多模块架构则提升了大型项目的可维护性和团队协作效率。掌握这些技巧,将使你的开发之旅更加高效与愉悦。
72 5
|
3月前
|
Web App开发 网络协议 Android开发
Android平台一对一音视频通话方案大比拼:WebRTC VS RTMP VS RTSP,谁才是王者?
【9月更文挑战第4天】本文详细对比了在Android平台上实现一对一音视频通话时常用的WebRTC、RTMP及RTSP三种技术方案。从技术原理、性能表现与开发难度等方面进行了深入分析,并提供了示例代码。WebRTC适合追求低延迟和高质量的场景,但开发成本较高;RTMP和RTSP则在简化开发流程的同时仍能保持较好的传输效果,适用于不同需求的应用场景。
178 1
|
3月前
|
安全 API 开发工具
Android平台RTMP推送|轻量级RTSP服务如何实现麦克风|扬声器声音采集切换
Android平台扬声器播放声音的采集,在无纸化同屏等场景下,意义很大,早期低版本的Android设备,是没法直接采集扬声器audio的(从Android 10开始支持),所以,如果需要采集扬声器audio,需要先做系统版本判断,添加相应的权限。
|
3月前
|
编解码 开发工具 Android开发
Android平台实现屏幕录制(屏幕投影)|音频播放采集|麦克风采集并推送RTMP或轻量级RTSP服务
Android平台屏幕采集、音频播放声音采集、麦克风采集编码打包推送到RTMP和轻量级RTSP服务的相关技术实现,做成高稳定低延迟的同屏系统,还需要有配套好的RTMP、RTSP直播播放器
|
24天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
64 2
|
2月前
|
缓存 Java 程序员
Map - LinkedHashSet&Map源码解析
Map - LinkedHashSet&Map源码解析
72 0
|
2月前
|
算法 Java 容器
Map - HashSet & HashMap 源码解析
Map - HashSet & HashMap 源码解析
57 0
|
2月前
|
存储 Java C++
Collection-PriorityQueue源码解析
Collection-PriorityQueue源码解析
64 0
|
2月前
|
安全 Java 程序员
Collection-Stack&Queue源码解析
Collection-Stack&Queue源码解析
85 0