Something about AAC

    技术2022-05-11  28

    终于拿到了AACDecoder……昨天拿iTunes生成的m4a文件来测试,弄了好久没有成功;今天换了个思路,原来AAC还有这么多玄机。

     

    关于AAC的基本概念都可以在wikipediaAudio Coding找到,就说几个不太好理解的问题。(部分内容来自doom9.net

    1。文件头

    AAC有多种存储的方式,分别是ADTS文件头加RAW Data BlockADIFRAW Data BlockLATMRAW Data Block;或者就是将RAW Data直接存储在MP4容器格式里。

    ADTS (Audio Data Transport Stream) 适用于用于网络传输; ADIF (Audio Data Interchange Format) 则主要用于本地存储。ADTS文件头存在于每一个RAW Data Block前或者每隔2-4RAW Data Block前,以确保网络传输的健壮性;而ADIF文件头仅存在于文件的起始处。

    2.容器格式

    容器格式允许你将不同种类的多媒体数据流(多为视频流和音频流)合并在一个单一的文件内。多媒体容器格式,就是我们熟知的AVI(.avi), MPEG(.mpg, .mpeg), Matroska(.mkv, .mka), OGM(.ogm), Quicktime(.mov),Realmedia(.rm, .rmvb).MP4是遵循MPEG-4ISO 14496-14)的官方容器格式定义的广义文件扩展名。它可以流媒体化并支持众多多媒体的内容(多音轨(multiple audio)、视频流(video)、字幕(subtitlestreams)、图片(pictures)、可变桢率(variable- framerates)、码率(bitrates)、采样率(samplerates)等)和高级内容(advanced content)(官方称之为“Richmedia”(超媒体)“BIFS”(Binary Format for Scenes/二进制格式场景),类似2D3D图形,动画、用户界面、类DVD菜单等。

     

    3.扩展名 mp4 m4a aac

    -.mp4:唯一的mpeg-4官方扩展名,支持所有音频和视频以及高级内容(或它们的混合)

    其他相关的扩展名:- .m4v:是.mp4文件的错误扩展名,由apple提出,支持视频+音频,m4v扩展名可以安全地更名为.mp4- .m4a:是.mp4文件的错误扩展名,由apple提出,只支持音频,m4a扩展名可以安全地更名为.mp4- .m4p:随iTunes发售的DRM(Digital Rights Management/数字版权保护技术)产权保护的文件,使用Apple开发的DRM sheme- .m4e:由.sdp修改扩展名的来的文件,Envivio用其于流媒体播放。- .m4v, -.mp4v, -.cmp, -.divx, .-xvid, .264rawmpeg-4视频流(并非内含于mp4)。- .3gp, -.3g2:手机中使用的格式,其中储存的内容同样在.mp4未被定义(H.263, AMR(Adaptive Multi Rate/自适应多码率))。

    -.aac:是aac音频文件的扩展名,不属于mpeg-4定义的容器格式(MPEG-2 part7定义),一般包含ADTSADIF文件头

     

    4.将AAC音频文件MUX进入MP4容器格式会发生什么

    文件体积会减小,比特率大约降低3kbps,原因在于ATDS文件头在mux的过程中被去除了。也就是说,存储与容器格式中的aac音频本身是没有文件头的,而是依赖于mp4文件的文件头。加上第3点中对文件后缀的描述,就不难理解m4a文件为什么不能正常播放了,一方面之前所使用的Deocder依赖于ADTS或者ADIF文件头,以此来获取文件信息,另一方面无法识别容器格式的文件头,自然无法正常解码了。

     

    最新回复(0)