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

简介: 【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 音频采样数据 ;


目录
相关文章
|
开发框架 前端开发 Android开发
Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势
本文深入探讨了 Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势。这对于实现高效的跨平台移动应用开发具有重要指导意义。
1614 4
|
11月前
|
安全 数据库 Android开发
在Android开发中实现两个Intent跳转及数据交换的方法
总结上述内容,在Android开发中,Intent不仅是活动跳转的桥梁,也是两个活动之间进行数据交换的媒介。运用Intent传递数据时需注意数据类型、传输大小限制以及安全性问题的处理,以确保应用的健壯性和安全性。
672 11
|
开发工具 Android开发 开发者
Android平台如何不推RTMP|不发布RTSP流|不实时录像|不回传GB28181数据时实时快照?
本文介绍了一种在Android平台上实现实时截图快照的方法,尤其适用于无需依赖系统接口的情况,如在RTMP推送、RTSP服务或GB28181设备接入等场景下进行截图。通过底层模块(libSmartPublisher.so)实现了截图功能,封装了`SnapShotImpl.java`类来管理截图流程。此外,提供了关键代码片段展示初始化SDK实例、执行截图、以及在Activity销毁时释放资源的过程。此方案还考虑到了快照数据的灵活处理需求,符合GB/T28181-2022的技术规范。对于寻求更灵活快照机制的开发者来说,这是一个值得参考的设计思路。
444 1
|
存储 XML Java
Android 文件数据储存之内部储存 + 外部储存
简介:本文详细介绍了Android内部存储与外部存储的使用方法及核心原理。内部存储位于手机内存中,默认私有,适合存储SharedPreferences、SQLite数据库等重要数据,应用卸载后数据会被清除。外部存储包括公共文件和私有文件,支持SD卡或内部不可移除存储,需申请权限访问。文章通过代码示例展示了如何保存、读取、追加、删除文件以及将图片保存到系统相册的操作,帮助开发者理解存储机制并实现相关功能。
2917 2
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
994 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
数据采集 安全 数据挖掘
淘宝天猫宝贝详情页面商品评论采集接口全解析
淘宝天猫商品评论采集接口为电商数据挖掘提供了重要工具。通过分析海量评论,消费者可获取购买决策参考,商家能优化产品与服务,市场研究者则能洞察行业趋势与竞品表现。该接口支持Python请求,助力开发者构建智能分析应用,推动电商生态中各方价值提升。使用时需遵守平台规则,确保数据安全与合法利用。
424 15
|
JSON JavaScript 前端开发
一次采集JSON解析错误的修复
两段采集来的JSON格式数据存在格式问题,直接使用PHP的`json_decode`会报错。解决思路包括:1) 手动格式化并逐行排查错误;2) 使用PHP-V8JS扩展在JavaScript环境中解析。具体方案一是通过正则表达式和字符串替换修复格式,方案二是利用V8Js引擎执行JS代码并返回JSON字符串,最终实现正确解析。 简介: 两段采集的JSON数据因掺杂JavaScript代码导致PHP解析失败。解决方案包括手动格式化修复和使用PHP-V8JS扩展在JavaScript环境中解析,确保JSON数据能被正确处理。
|
Java Unix Linux
Android Studio中Terminal运行./gradlew clean build提示错误信息
遇到 `./gradlew clean build`命令执行出错时,首先应检查错误信息的具体内容,这通常会指向问题的根源。从权限、环境配置、依赖下载、版本兼容性到项目配置本身,逐一排查并应用相应的解决措施。记住,保持耐心,逐步解决问题,往往复杂问题都是由简单原因引起的。
1566 2
|
缓存 API Android开发
Android经典实战之Kotlin Flow中的3个数据相关的操作符:debounce、buffer和conflate
本文介绍了Kotlin中`Flow`的`debounce`、`buffer`及`conflate`三个操作符。`debounce`过滤快速连续数据,仅保留指定时间内的最后一个;`buffer`引入缓存减轻背压;`conflate`仅保留最新数据。通过示例展示了如何在搜索输入和数据流处理中应用这些操作符以提高程序效率和用户体验。
447 6
|
编解码 网络协议 前端开发
如何实现Android平台GB28181设备接入模块按需打开摄像头并回传数据
后台采集摄像头,如果想再进一步扩展,可以把android平台gb28181的camera2 demo,都移植过来,实现功能更强大的国标设备侧,这里主要是展示,收到国标平台侧的回传请求后,才打开摄像头,才开始编码打包,最大限度的减少资源的占用
443 3

热门文章

最新文章

推荐镜像

更多
  • DNS