77百科网
当前位置: 首页 生活百科

aac格式怎么播放音频(AAC音频格式详解和实战解析)

时间:2023-06-01 作者: 小编 阅读量: 4 栏目名: 生活百科

aac格式怎么播放音频一.基本概念AAC:即MPEG-2AdvancedAudioCoding,分为流格式和文件格式。文件格式主要用于文件存储和文件播放,流格式主要用于流媒体在线播放。流式AAC可以简单理解如下图:固定头如下:syncword同步字Thebitstring‘111111111111’,说明一个ADTS帧的开始。Raw数据块:一个帧包含1024个采样Duration算法:一个AAC原始帧包含一段时间内1024个采样及相关数据。时间t=总帧数x一个AAC音频帧的播放时间。

aac格式怎么播放音频?一.基本概念AAC:即MPEG-2 Advanced Audio Coding,分为流格式和文件格式文件格式主要用于文件存储和文件播放,流格式主要用于流媒体在线播放,今天小编就来说说关于aac格式怎么播放音频?下面更多详细答案一起来看看吧!

aac格式怎么播放音频

一.基本概念

AAC:即MPEG-2 Advanced Audio Coding,分为流格式和文件格式。文件格式主要用于文件存储和文件播放,流格式主要用于流媒体在线播放。

文件格式:adif格式

adif格式

该格式特点:只有开头有一个头部信息,后面都是AAC裸数据。适应磁盘存储和文件播放

流格式:adts_frame格式

adts_frame格式

该格式特点:每一帧数据=固定头(fixed_header)可变头(variable_header) 帧数据(raw_data),适合流媒体在线播放。

流式AAC可以简单理解如下图:

固定头如下:

syncword 同步字The bit string ‘1111 1111 1111’,说明一个ADTS帧的开始。

ID MPEG 标示符, 设置为1.

layer Indicates which layer is used. Set to ‘00’

protection_absent 表示是否误码校验

profile 表示使用哪个级别的AAC,如01 Low Complexity(LC)--- AACLC

sampling_frequency_index 表示使用的采样率下标

channel_configuration 表示声道数

frame_length 一个ADTS帧的长度包括ADTS头和raw data block.

可变头如下:

adts_buffer_fullness 0x7FF 说明是码率可变的码流

number_of_raw_data_blocks_in_frame

表示ADTS帧中有number_of_raw_data_blocks_in_frame1个AAC原始帧.

所以说number_of_raw_data_blocks_in_frame == 0 表示说ADTS帧中有一个AAC数据块并不是说没有。

其他字段为定义,可以忽略,。

Raw数据块:

一个帧包含1024个采样

Duration算法:

一个AAC原始帧包含一段时间内1024个采样及相关数据。

一个AAC音频帧的播放时间=一个AAC帧对应的采样样本的个数/采样率。总时间t=总帧数x一个AAC音频帧的播放时间。

时间t=总帧数x一个AAC音频帧的播放时间。

二. 实战演练

1)使用ffmpeg抽取一个mp4文件中的aac音频如下:

ffmpeg.exe -i CCTV-2-dszg-1.mp4 -vn -y -acodec copy audio.aac

2)利用工具分析该aac音频固定头和可变头字段如下:

adts头解析

3)使用程序代码解析

#include"stdafx.h"#include<windows.h>typedefstruct_AdtsHeader{unsignedintnSyncWord;unsignedintnId;unsignedintnLayer;unsignedintnProtectionAbsent;unsignedintnProfile;unsignedintnSfIndex;unsignedintnPrivateBit;unsignedintnChannelConfiguration;unsignedintnOriginal;unsignedintnHome;unsignedintnCopyrightIdentificationBit;unsignedintnCopyrigthIdentificationStart;unsignedintnAacFrameLength;unsignedintnAdtsBufferFullness;unsignedintnNoRawDataBlocksInFrame;}AdtsHeader;int_tmain(intargc,_TCHAR*argv[]){FILE*fd=fopen("D:\\ffmpeg-4.1-tool\\bin\\audio.aac","rb ");if(fd==NULL){printf("fopenisfailed,err%d\n",GetLastError());}charadts[7];intadtslen=7;intret=fread(adts,adtslen,1,fd);if(ret!=1){printf("freadisfailed,err%d\n",GetLastError());}char*p=adts;GetAdtsSpecificConfig(p,&tAdtsHeader);printf("AACkeyparam:\n");printf("id:%d\n",tAdtsHeader.nId);printf("layer:%d\n",tAdtsHeader.nLayer);printf("ProtectionAbsent:%d\n",tAdtsHeader.nProtectionAbsent);printf("Profile:%d\n",tAdtsHeader.nProfile);printf("SfIndex:%d\n",tAdtsHeader.nSfIndex);printf("PrivateBit:%d\n",tAdtsHeader.nPrivateBit);printf("ChannelConfiguration:%d\n",tAdtsHeader.nChannelConfiguration);printf("Original:%d\n",tAdtsHeader.nOriginal);printf("nHome:%d\n",tAdtsHeader.nHome);printf("nCopyrigthIdentificationStart:%d\n",tAdtsHeader.nCopyrigthIdentificationStart);printf("nAacFrameLength:%d\n",tAdtsHeader.nAacFrameLength);printf("nAdtsBufferFullness:%d\n",tAdtsHeader.nAdtsBufferFullness);printf("NoRawDataBlocksInFrame:%d\n",tAdtsHeader.nNoRawDataBlocksInFrame);getchar();return0;}

由此可见:代码读出来的参数和工具分析参数一致。

更多更详细资源请关注公众号:AV_Chat

    推荐阅读
  • 泳衣如何清洗(泳衣清洗方法)

    应在游泳后尽快使用20度以下清水清洗以保清新洁净不可氯漂,不可熨烫,不可转笼翻转干燥,悬挂晾干洗后置于阴凉通风处晾干,避免日光直接曝晒,以保质料之弹性与韧性想保持泳衣的鲜艳度和柔软度,可以在清水里加几滴柔顺剂把泳衣浸泡10分钟直接拿出晾干,我来为大家讲解一下关于泳衣如何清洗?想保持泳衣的鲜艳度和柔软度,可以在清水里加几滴柔顺剂把泳衣浸泡10分钟直接拿出晾干。

  • 短小的新年总结(抒写新年的愿景)

    2019年,于敏、申纪兰、孙家栋、李延年、张富清、袁隆平、黄旭华、屠呦呦被授予“共和国勋章”。然而,为遵守新冠肺炎疫情防控要求,我调整了创作节奏。根据中国航天科技集团的计划,2022年将有40次以上航天发射任务,包括载人航天6次重大任务。在今年,中国空间站将全面建成。此外,还将完成长征六号甲运载火箭首飞等多个重点火箭型号的发射。如今,要求来华坪女高一起开展党日活动的单位非常多。

  • 怀念逝去的爹娘语录(致我逝去多年爹娘的一封信)

    二老还健在的时候,常常惦记着我们这些不成器的儿女,把爱无私地撒在我们身上,而往往忽略了自身的病疾,以至于爹患有严重高血压坚持工作,娘带着膝关节长弯了的骨刺的痛苦依然还坚持在田地之间劳作。但事与愿违,我们辜负了二老的期望。感谢时间老人的抚慰,如今的我已经步入知命之年,每每想起高峻伟岸的二老,我的思念就愈烈。

  • 命运2版本选择(命运2更完善也更回归传统)

    有传言说,如果2017年年内《命运2》不能发售,也许整个工作室还会进一步丧失在动视旗下的自主权。守护者们在一代中拳打脚踢,饱揍邪恶外星种族,虽然故事线上埋下了许多巨坑,但看起来人类的命运又变得安稳了。与前作相比,《命运2》中的大型战斗无论是敌人数量还是战斗纵深都大大超过前代,足够让玩家使用各种战术耗死对手。这次《命运2》发售不过3天,就有40%的玩家获得了满级20级的奖杯,可见主线战役的成功。

  • 干燥箱是什么样子的(干燥箱有什么作用)

    干燥箱是根据干燥物质的不同,分为电热鼓风干燥箱和真空干燥箱两大类,现今已被广泛应用于化工,电子通讯,塑料,电缆,电镀,五金,汽车,光电,橡胶制品,模具,喷涂,印刷,医疗,航天及高等院校等行业。微电脑智能化温控显示,PID自整定,自动示温示警,漏电保护,时间设置,控温精度高。

  • 奥拉星手游初心识别码在哪(初心识别码获取攻略)

    下面内容希望能帮助到你,我们来一起看看吧!奥拉星手游初心识别码在哪首先,点击下面的消息盒子。点击活动提醒,选择相伴十载初心未来。回到手游,可以看见已经领取成功了。输入初心识别码可打开胶囊,领未来的蛋,点开蛋里面有码和手游一样。点活动页面的左边第一个,然后你去点初心,然后去获得那个蛋,得到后就和手游一样了,互相输码就可以。

  • 丰田塞纳音响怎么设置 丰田塞纳音响怎么设置前后都工作

    丰田塞纳分为标准车型和豪华车型。丰田塞纳是丰田汽车推出的高端MPV。车内整体做工精致,用料充足,丰田塞纳还采用了丰富的配置,为驾乘人员营造了舒适自然的乘坐环境。但作为商务用车,丰田塞纳更注重驾驶的舒适性。丰田塞纳是丰田旗下的一款mpv车型。丰田塞纳有前轮驱动车型和四轮驱动车型。at变速箱内部装有行星齿轮。

  • 庄子的别称和作者又名什么(庄子的别称是什么)

    庄子的别称和作者又名什么庄子,姓庄,名周,字子休,别称庄子、庄子休。创立了华夏重要的哲学学派庄学,是继老子之后,战国时期道家学派的代表人物,是道家学派的主要代表人物之一。其书与《老子》《周易》合称“三玄”。《庄子》一书主要反映了庄子的哲学、艺术、美学与人生观、政治观等等。

  • 中华万年历和万年历有什么区别(给专注的人一点掌声)

    给专注的人一点掌声使用中华万年历很长一段时间了,最近的V4.5新版本改动比较大,有些细节颠覆之前的使用习惯,作为老用户也得重新研究下新玩法,得有个适应过程现在更符合微信用户的使用习惯了‍‍我最常用功能是:‍日历活动记事。