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

    推荐阅读
  • 防弹少年团哪几年参加偶像运动会(韩国偶像组合防弹少年团最新杂志写真曝光)

    韩国偶像组合防弹少年团近日为某杂志最新一期拍摄了写真。

  • 川味酸辣面做法窍门(川味酸辣面怎么做)

    下面更多详细答案一起来看看吧!川味酸辣面做法窍门挂面煮至7分熟,盛入碗中备用,把青菜也烫熟放入碗中。做锅放少许油,油热后放入蒜泥,小米辣,少许葱花,加入胡椒,盐,陈醋,酱油,麻辣酱,炒香后加水煮开。把煮好的酸辣汤汁倒入面条碗中,煮好鸡蛋切开,黄瓜切丝放入碗中即可。

  • 哈尔滨有哪些好玩的景点(哈尔滨旅游景点简单介绍)

    哈尔滨有哪些好玩的景点松花江:这个是黑龙江的最大支流,涵盖东北四省。松花江全长一千八百四十公里,流域范围很广。哈尔滨滑雪场:位于尚志市东南部,距哈尔滨市190公里。建于1926年,占地2.3万平方米,目前是黑龙江现存最完整的仿古建筑。哈尔滨步行街,以其独特的欧式建筑和精彩纷呈的生活文化,向人们展示了它的美感和不同。

  • 怀孕可以吃莲子吗(怀孕能吃莲子吗)

    磷对于胎儿的骨骼发育来说是非常重要的,铁可以避免孕妈妈出现贫血,而钾可以有效的维持孕妇身体的正常代谢。但是莲子由于属于是阴凉性质的食物,所以体寒的孕妇不建议食用过多,避免对自身和胎儿会产生一些不利的影响。如果食用了具有收涩伤阴的莲子,则可能会导致胎儿发育受到影响。除此外,莲子较苦寒,所以不适合空腹食用。

  • 安全教育的目的是什么(为什么要进行安全教育)

    安全教育的目的是什么培养学生做合格、守法的公民。教导学生学会用法律武器保护自己和他人。学习更多的安全防范知识,学会自我救助。安全教育的目的是提高全员的安全意识,安全管理水平和防止事故发生,实现安全生产。通过安全教育,提高企业各级生产管理人员和广大职工搞好安全工作的责任感和自觉性,增强安全意识,掌握安全生产的科学知识,不断提高安全管理水平和安全操作水平,增强自我防护能力。

  • 木兰的人物形象(如下四点可充分体现木兰的伟大形象)

    木兰的人物形象木兰的孝顺和勇敢,课文开篇写木兰停机叹息,为下文设置悬念。这是她将做出一个重大决定之前所发出叹息。其实木兰辞官还乡和父母团聚,也可以看出木兰孝敬父母。这几句写出了木兰出征的路线及征程的遥远,也点明了宿营地的荒凉,作为一个柔弱女子,同一群男儿一起纵马奔驰,从另一角度突出了她的勇敢。木兰的谨慎机智,“同行十二年,不知木兰是女郎。”木兰天天女扮男装,一直要让这个秘密埋藏起来,是何等的困难。

  • 网红店铺投资回报率(那个网红折扣店要破产了)

    2020年初,疫情来得猝不及防。于是,顾晓健与范智峯合计,索性将尾货抛售清仓,各自解散两个团队。成立一年,繁荣集市累计开出20余家门店,营业额突破1.5亿,范智峯计划在2022年发展60余家门店,并预计到2023年在全国超过1000家门店。尽管公司并未承认,但负面消息并没有停止。临期食品出现的主要原因,是食品市场产能过剩导致的库存积压。上海证券数据显示,2021年,临期食品的市场规模已经快速增长至318亿元,预计2025年将达401亿元。

  • boost电路电压控制模式(一文看懂经典BUCK-BOOST负电压电路)

    在电路系统中,负电压的应用远没有正电压多,因此是很多人忽略的一个电源架构,很多同学经常就会问,怎么产生负电压?BUCK-BOOST是一种经典的负电源架构,属于斩波器的一种,广泛应用在OLED驱动、音频等领域,其基本架构见下图,与BUCK、BOOST一样,BUCK-BOOST也是由基本的开关、二极管和电感组成。后面会讲解如何对电感进行选型。

  • 少年闰土给我讲了哪四件事(《少年闰土》中闰土给我讲了哪四件事?)

    思想内容小说写“我”在听到母亲提到闰土时,脑子忽然闪出了一幅“神异的图画”,“似乎看到了我的美丽的故乡了”:深蓝的天空中……文章通过作者的回忆,刻画了一个见识丰富,而又活泼可爱的、聪明能干的农村少年闰土的形象,反映了作者与闰土儿时真挚而又短暂的友谊以及对他的怀念之情。

  • 嬴政和丽姬几个孩子(嬴政和丽姬有孩子吗)

    接下来我们就一起去了解一下吧!秦王嬴政对丽姬一见钟情,明知道丽姬已经有喜欢的人了,可还是不死心,以换解药救荆轲为条件,逼丽姬进宫。嬴政得到丽姬后,发现她竟然怀孕了,他既生气又无奈,气丽姬怀了别人的孩子,却对丽姬无可奈何。丽姬坚持生下孩子,嬴政为得到丽姬的心就同意了,还为孩子起名叫秦天明,承认孩子是自己的骨肉。