为了账号安全,请及时绑定邮箱和手机立即绑定

【金秋打卡】第18天 AAC的ADTS格式以及通过ffmpeg生成 AAC 数据

标签:
Android

课程名称音视频基础+ffmpeg原理 入门音视频技术开发
课程章节:音频编码原理
课程讲师李超

课程内容

1.AAC的ADTS格式

AAC的音频文件格式有ADIF和ADTS两种。

  • ADIF:Audio Data Interchange Format,音频数据交换格式。这种格式的特征是可以确定的找到这个音频数据的开始,不需进行在音频数据流中间开始的解码,即它的解码必须在明确定义的开始处进行。故这种格式常用在磁盘文件中。
  • ADTS:Audio Data Transport Stream。是AAC音频的传输流格式。这种格式的特征是它是一个有同步字的比特流,解码可以在这个流中任何位置开始。

总结:ADTS可以在任意帧解码,也就是说它每一帧都有头信息。ADIF只有一个统一的头,所以必须得到所有的数据后解码。且这两种的header的格式也是不同的,目前一般编码后的和抽取出的都是ADTS格式的音频流。

ADTS由7个字节或9个字节组成,ADTS头包含了AAC文件的采样率、通道数、帧数据长度等信息。ADTS头分为固定头信息和可变头信息两个部分,固定头信息在每个帧中的是一样的,可变头信息在各个帧中并不是固定值。ADTS头一般是7个字节((28+28)/ 8)长度,如果需要对数据进行CRC校验,则会有2个Byte的校验码,所以ADTS头的实际长度是7个字节或9个字节。

AAC ADTS格式的参考网址:https://www.p23.nl/projects/aac-header

2.通过ffmpeg生成AAC数据

音频编码器有 libfaac、libfdk_aac、Nero AAC,ffmpeg内置aac,libfdk_aac 音频编码质量最优。通过 ffmpeg 生成 AAC 数据的命令:

ffmpeg -i 01.mp4 -vn -c:a libfdk_aac -ar 44100 -channels 2 -profile:a aac_he_v2 3.aac

其中:

  • -i xxx.mp4 代表输入的多媒体文件,文件中一定要带音频;
  • -vn:即video no简写,表示过滤视频;
  • -c:a:即codec:audio简写,指定音频编解码器为libfdk_aac;
  • -ar:代表音频采样率;
  • -channels:代表通道数,2表示双声道(左声道和右声道)
  • -profile:a:表示对音频参数(aac_he_v2)进行设置
  • 3.aac:表示最终输出aac文件的名字

ffmpeg 生成aac文件参数查询网址: http://ffmpeg.org/ffmpeg-codecs.html#libfdk_005faac

图片描述
图片描述

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
11
获赞与收藏
16

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消