mp4、AAC数据格式、解析文件的创建修改时间
AAC文件
资料:
http://blog.csdn.net/u013427969/article/details/53091594
http://blog.chinaunix.net/uid-26084833-id-3416600.html
http://blog.csdn.net/sunnylgz/article/details/7676340
AAC的音频文件格式有ADIF & ADTS:
ADIF:Audio Data Interchange Format 音频数据交换格式。这种格式的特征是可以确定的找到这个音频数据的开始,不需进行在音频数据流中间开始的解码,即它的解码必须在明确定义的开始处进行。故这种格式常用在磁盘文件中。
ADTS:Audio Data Transport Stream 音频数据传输流。这种格式的特征是它是一个有同步字的比特流,解码可以在这个流中任何位置开始。它的特征类似于mp3数据流格式。
http://blog.csdn.net/jay100500/article/details/52955232
http://blog.csdn.net/liukun321/article/details/25337425
http://blog.csdn.net/andyhuabing/article/details/40983423
.一加手机的录音文件是AAC格式的。

经过观察,这个音频文件格式为ADTS。对这种类型文件分析,可以参考下mp3文件的音频数据帧
---------------------------------------------------------------------------------------------------------------------------------------------
MP4文件格式
http://www.360doc.com/content/16/0304/16/6887512_539388342.shtml
http://blog.sina.com.cn/s/blog_48f93b530100jz4b.html
M4A文件头:
MP4文件中的所有数据都装在box(QuickTime中为atom)中,也就是说MP4文件由若干个box组成,每个box有类型和长度,可以将box理解为一个数据对象块。box中可以包含另一个box,这种box称为container box。一个MP4文件首先会有且只有一个“ftyp”类型的box,作为MP4格式的标志并包含关于文件的一些信息。
Box说明:
首先需要说明的是,box中的字节序为网络字节序,也就是大端字节序(Big-Endian),简单的说,就是一个32位的4字节整数存储方式为高位字节在内存的低端。
Box由header和body组成,
其中header统一指明box的大小和类型,
body根据类型有不同的意义和格式。
标准的box开头的4个字节(32位)为box size,该大小包括box header和box body整个box的大小,这样我们就可以在文件中定位各个box。
如果size为1,则表示这个box的大小为large size,真正的size值要在largesize域上得到。(实际上只有“mdat”类型的box才有可能用到large size。)如果size为0,表示该box为文件的最后一个box,文件结尾即为该box结尾。(同样只存在于“mdat”类型的box中。)

size后面紧跟的32位为box type,一般是4个字符,如“ftyp”、“moov”等,这些box type都是已经预定义好的,分别表示固定的意义。如果是“uuid”,表示该box为用户扩展类型。如果box type是未定义的,应该将其忽略。
box类型,增加一个wide类型。
后记mp4,AAC,M4A文件格式解析
m4a(aac编码)就是mp4格式的音频内容
m4a同mp3一样,也是一种音频格式的文件,但一般普通的m4a文件扩展名通常是mp4,由于苹果的iTunes的原因,现在大多数的音乐软件都直接支持了m4a。
如果遇到有m4a音频格式的文件,可以安全地把只包含音频的.mp4 文件的扩展名改成.m4a,以便让它能在你喜欢的播放器里播放,反过来转换也可以。
随着苹果手机iPhone和平板iPad的流行,使得iPhone和iPad中支持的m4a格式文件如今流行了起来。M4A是MPEG-4音频标准的文件的扩展名。
在MPEG4标准中提到,普通的MPEG4文件扩展名是“.mp4”。自从Apple开始在它的iTunes以及iPod中使用“.m4a”以区别MPEG4的视频和音频文件以来,
“.m4a”这个扩展名开始被大家认识。
注:AAC文件就是不经封装的音频流。M4A文件就是以MPEG-4标准的封装格式进行封装的AAC
====================================
文件的创建、修改时间的解析,思路:
计算得到:
1904-01-01零点 到 1970-01-01零点经过的秒数
把从文件中解析得到的秒数 减去 上面的秒数
得到的值就可以使用ctime函数了。
mp4、AAC数据格式、解析文件的创建修改时间的更多相关文章
- delphi获取文件的创建/修改时间、按时间删除指定文件下的文件
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrl ...
- 使用PowerShell来修改文件访问,创建,修改时间属性
Function Set-FileTimeStamps { Param ( [Parameter(mandatory=$true)] [string[]]$path, [datetime]$date ...
- java获得文件的最后修改时间
原文:http://www.open-open.com/code/view/1453190044980 java的File类的lastModified()方法可以返回文件的最后修改时间: String ...
- delphi 获取文件的最新修改时间 http://www.delphitop.com/html/wenjian/64.html
delphi 获取文件的最新修改时间 作者:admin 来源:未知 日期:2010/1/28 13:15:22 人气:1054 标签: QQ空间新浪微博腾讯微博腾讯朋友QQ收藏百度空间百度贴吧更多0 ...
- 如何用golang获取linux上文件的访问/创建/修改时间
在linux上想获取文件的元信息,我们需要使用系统调用lstat或者stat. 在golang的os包里已经把stat封装成了Stat函数,使用它比使用syscall要方便不少. 这是os.Stat的 ...
- Centos-修改文件访问和修改时间-touch
touch 如果文件存在,则改变文件的访问时间和修改时间,如果不存在则创建一个空文件 相关选项 -a 更改文件访问时间为当前系统时间 -m 更改文件修改时间为当前系统时间 -c 如果文 ...
- java实现遍历文件目录,根据文件最后的修改时间排序,并将文件全路径存入List集合
package com.ultra.aliyun.control.main; import java.io.File; import java.util.ArrayList; import java. ...
- Shell中取得文件的最后修改时间
stat -c %y file 取得修改日期 -,-,-
- 比较二个文件的最后修改时间FileListener
import java.io.File; import java.text.SimpleDateFormat; import java.util.Timer; import java.util.Tim ...
随机推荐
- Node前后端分离基本概括
首先从一个重要的概念“模板”说起. 广义上来说,web中的模板就是填充数据后可以生成文件的页面. 严格意义上来说,应该是模板引擎利用特定格式的文件和所提供的数据编译生成页面.模板大致分为前端模板(如e ...
- 【三】php 数组
数组 1.数字索引数组:array('a','b','c'); 2.访问数组内容 $arr[下标] 3.新增数组元素 $arr[下标]=内容 4.使用循环访问数组 //针对数字索引 $arr=arr ...
- Intent 类型
Intent 分为两种类型: 显式 Intent:按名称(完全限定类名)指定要启动的组件. 通常,您会在自己的应用中使用显式 Intent 来启动组件,这是因为您知道要启动的 Activity 或服务 ...
- 下载安装 Android sdk
下载地址: https://www.androiddevtools.cn/ 选择sdk 选择版本 将解压出的整个文件夹复制或者移动到 your sdk 路径/platforms文件夹,然后打开SDK ...
- centos7 Python3终端中敲击方向键显示「^[[C^[[D」
[root@localhost src]# python3 Python ( , ::) [GCC (Red Hat -)] on linux Type "help", " ...
- CentOS 7 安装pip2
使用yum安装python-pip,但是报错,说没有可用的包 安装epel源 [root@sishen yum.repos.d]# yum install -y epel-release 然后再安装 ...
- Codeforces 1006 F - Xor-Paths
F - Xor-Path 思路: 双向搜索dfs 如果普通的搜索复杂度是n 那么双向搜索复杂度是√n 代码: #include<bits/stdc++.h> using namespace ...
- HeadFIrst Ruby 第七章总结 hashes
前言 这一章节介绍了 Ruby 中 hash 这一数据类型的用法和特征. Hash 的定义 与 array 的对比 最大的不同: An array can only use integers as i ...
- 雷林鹏分享:C# 可空类型(Nullable)
C# 可空类型(Nullable) C# 可空类型(Nullable) C# 提供了一个特殊的数据类型,nullable 类型(可空类型),可空类型可以表示其基础值类型正常范围内的值,再加上一个 nu ...
- eQTL | Expression quantitative trait loci | 数量性状位点 | 表达数量性状基因座
一篇通俗的文章:eQTL Expression quantitative trait loci (eQTLs) are genomic loci that explain all or a fract ...