Atitit m4a文件元数据结构

目录

1. 一、基本概念 1

2. MP4文件由若干称为Atom(或称为box)的数据对象组成, 2

2.1. MP4文件概述 2

2.2. M4A没有视频流而已,从文件头来看就是MP4... 3

2.3. 1、MP4(或M4A)文件开头数据字节结构 4

2.4. mp4是由一个个“box”组成的, 5

2.5. 典型简化mp4 5

2.6. 下图表是对于以上几个重要的box存放信息的说明: 7

2.7. 面这张图是常见的box的树结构图,可以用来大致了解MP4文件的构造。 8

3. Java 8

4. 工具 9

4.1. 图形化分析工具MP4Reader:mp4info 9

4.2. Windows自带音乐可以修改m4a信息了 10

4.3. AudioShell是一个免费的音乐批量重命名+ID3标签修改工具。 10

  1. 一、基本概念

1、 文件,由许多Box和FullBox组成。

2、 Box,每个Box由Header和Data组成。

3、 FullBox,是Box的扩展,Box结构的基础上在Header中增加8bits version和24bits flags。

4、 Header,包含了整个Box的长度size和类型type。当size==0时,代表这是文件中最后一个Box;当size==1时,意味着Box长度需要更多bits来描述,在后面会定义一个64bits的largesize描述Box的长度;当type是uuid时,代表Box中的数据是用户自定义扩展类型。

5、 Data,是Box的实际数据,可以是纯数据也可以是更多的子Boxes。

6、 当一个Box的Data中是一系列子Box时,这个Box又可成为Container Box。

作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

  • MP4文件格式(ISO-14496-12/14)
  1. MP4文件由若干称为Atom(或称为box)的数据对象组成,
  • 每个Atom的起首为四个字节的数据长度(Big Endian)和四个字节的类型标识,数据长度和类型标志都可以扩展。Atom可以嵌套,即其数据域可以由若干其它Atom组成,从而实现结构化的数据。

    1. MP4文件概述

MP4文件就是由各式各样的Box组成的,下表中列出了所有必选或可选的Box类型,√代表Box必选。

具体列表:

正式开始前先对文件的几个重要部分宏观介绍一下,以便诸位在后续学习时心中有数:

1、  ftypbox,在文件的开始位置,描述的文件的版本、兼容协议等;

2、  moovbox,这个box中不包含具体媒体数据,但包含本文件中所有媒体数据的宏观描述信息,moov box下有mvhd和trak box。

>>mvhd中记录了创建时间、修改时间、时间度量标尺、可播放时长等信息。

>>trak中的一系列子box描述了每个媒体轨道的具体信息。

3、  moofbox,这个box是视频分片的描述信息。并不是MP4文件必须的部分,但在我们常见的可在线播放的MP4格式文件中(例如Silverlight Smooth Streaming中的ismv文件)确是重中之重。

4、  mdatbox,实际媒体数据。我们最终解码播放的数据都在这里面。

5、  mfrabox,一般在文件末尾,媒体的索引文件,可通过查询直接定位所需时间点的媒体数据。

  1. M4A没有视频流而已,从文件头来看就是MP4...

A Java API to read, write and create MP4 container. Manipulating containers is different from encoding and decoding videos and audio

https://github.com/sannies/mp4parser

m4a与mp4格式是不是文件结构一样的?

是的,只是M4A没有视频流而已,从文件头来看就是MP4...

有的、ID3V2标签,不过和MP3不一样,它不在文件头部,而是在叫moov的BOX里。。。我用WINHEX打开个M4A文件,找ID3是有的,但不在文件头。。。希望我想的是对的。。。我现在仍在研究

由于产品的音乐播放器上需要支持对M4A格式文件的ID3信息和专辑封面信息的显示,查了相关资料,对照M4A的二进制文件,捣鼓出了M4A格式(实际上就是MP4的音频信息)简单的ID3信息及专辑封面的方法。

  1. 1、MP4(或M4A)文件开头数据字节结构

+--------------------------------+

|      Header Size (4 bytes)     |大小是按字节顺序存储

+--------------------------------+

|      固定标记 (4 bytes)ftyp    |

+--------------------------------+

|类型 (8 bytes) M4A、mp42、isom等|

+--------------------------------+

| 剩余字节为ASCII编码的字符串信息|

+--------------------------------+

2、此后每一个ATOM的结构都是:4个字节的长度+4个字节的标识符

3、ATOM之间具有包含关系,当A包含B时且B是A的第一个子ATOM,格式如下:

XXXX AAAA xxxx BBBB xxxx CCCC ....

其中XXXX4个字节表示出标记为AAAA的ATOM的总的大小

后续子ATOM包含在这个总的大小之内

也就是XXXX = 8 + xxxx(B) + xxxx(C) + ...

上式中的8表示4个长度字节XXXX以及4个标识符字节AAAA

4、具体包含关系作者也没搞明白,这里仅仅对照m4a格式的二进制文件分析出标签及封面信息如何解析;

下面给

---------------------

  1. mp4是由一个个“box”组成的,

大box中存放小box,一级嵌套一级来存放媒体信息。box的基本结构是:

  其中,size指明了整个box所占用的大小,包括header部分。如果box很大(例如存放具体视频数据的mdat box),超过了uint32的最大数值,size就被设置为1,并用接下来的8位uint64来存放大小。

  1. 典型简化mp4

 一个mp4文件有可能包含非常多的box,在很大程度上增加了解析的复杂性,这个网页上http://mp4ra.org/atoms.html记录了一些当前注册过的box类型。看到这么多box,如果要全部支持,一个个解析,怕是头都要爆了。还好,大部分mp4文件没有那么多的box类型,下图就是一个简化了的,常见的mp4文件结构:

  1. 图表是对于以上几个重要的box存放信息的说明:
  1. 面这张图是常见的box的树结构图,可以用来大致了解MP4文件的构造。
  1. Java

atomBox:ftyp

atomBox:moov

atomBox:mvhd

atomBox:trak

atomBox:udta

atomBox:meta

atomBox:hdlr

atomBox:ilst

atomBox:----

atomBox:�ART

atomBox:�day

atomBox:�alb

atomBox:�gen

atomBox:Xtra

atomBox:free

atomBox:mdat

{

"ARTIST":"volin",

"DATE":"2018",

"ALBUM":"homyao"

}

  1. 工具

    1. 图形化分析工具MP4Reader:mp4info

https://en.freedownloadmanager.org/Windows-PC/MP4-Reader-FREE.html

这个工具相比于mp4info会强大很多,图形化显示信息之外,还会将MP4文件的二进制信息同步显示,方便对比分析。

mp4info有问题再win7上,打不开m4a文件,扩展名已经换成mp4。。使用MP4Reade也r比较好强大。。还有个

Quicktime tool 也比较一般

  1. Windows自带音乐可以修改m4a信息了

标题以及更多信息可以右键属性修改

  1. AudioShell是一个免费的音乐批量重命名+ID3标签修改工具。

AudioShell的主要功能就是对于多种格式的音乐档,包含 MP3, WMA, ASF, WMV, M4A, M4P, M4R, OGG, flac, APE, dsf等等多种格式、多种档案内建标签和资讯的修改。

虽然当前 Windows 8 之后的后版本对于这类音乐的修改已经相当简单好用了,不过如果你一次要处理多个文件、希望能快速处理这些标签、资讯并使用更简单的方法来修改多个文件的文件名,让这些音乐能快速套用专辑名称、歌手名称、歌名等等个讯息来重新命名的话,AudioShell 会是个相当方便的免费小工具。

它可以帮你集成到系统的右键菜单中,想要编辑音频时就可以直接对文件进行编辑操作了,支持标准和非标准的音频/视频文件标签的修改编辑和添加。

(9+条消息)M4A格式的ID3信息提取 - WeroCPP的专栏 - CSDN博客.html

(9+条消息)M4A格式的ID3信息提取 - zengming00 - CSDN博客.html

(9+条消息)M4A格式的ID3信息提取 - zengming00 - CSDN博客.html

atitit.mp4 视频文件多媒体格式结构详解

mp4文件格式解析 - nigaopeng - 博客园.html

Atitit m4a文件元数据结构 目录 1. 一、基本概念 1 2. MP4文件由若干称为Atom(或称为box)的数据对象组成, 2 2.1. MP4文件概述 2 2.2. M4A没有视频流而已相关推荐

  1. 鸟哥Linux私房菜基础学习篇 第二部分 Linux 文件、目录与磁盘格式_Linux文件权限与 目录配置_Linux文件与目录管理...

    2019独角兽企业重金招聘Python工程师标准>>> 1.相对路径相对某目录比较灵活方便(如安软件时候指定目录),绝对路径一般不会因为环境变化而产生错误. 2.目录变化时的切换 - ...

  2. Linux 根文件系统目录结构与功能,4.Linux根文件系统和目录结构及bash特性

    4.1Linux目录结构和根文件系统全面讲解 Linux文件系统: Linux:glibc 程序编译方式: 动态链接 静态编译 进程的类型: 终端:硬件设备, 关联一个用户接口 与终端相关:通过终端启 ...

  3. Linux随笔2 - Linux的目录配置、文件元数据信息、符号链接与硬链接和常用文件和目录管理命令示例

    目录 1. Linux的目录配置与FHS(Filesystem Hierarchy Standard) 1.1 根目录(/)的意义与内容 1.1.1 FHS要求根目录中必须存在的目录 1.1.2 FH ...

  4. windows用 tree命令查看目录文件夹结构

    windows用 tree命令查看目录文件夹结构 ## 查看帮助 tree --helptree --dirsfirst --filelimit 6 -h -t –dirsfirst 目录优先展示 – ...

  5. Atitit 大json文件的结构化查看解决方案,高性能的jsonview  attilax总结.docx

    Atitit 大json文件的结构化查看解决方案,高性能的jsonview  attilax总结.docx 1.1. 实现目标:1 1.2. 实现key与value类型的..一直分析到非 jsonob ...

  6. Linux文件存储结构,包括目录项、inode、数据块

    2019独角兽企业重金招聘Python工程师标准>>> 先说inode 理解inode,要从文件储存说起.文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sec ...

  7. linux 源码目录结构 文件系统目录结构

    学习Linux也有一段时间了,具体来整理一下Linux源码的目录结构和文件系统的目录结构,以便加深记忆. 一.Linux源码的目录结构 首先上一张截图,如下所示: 再看各个文件的介绍,借用一下其他资源 ...

  8. bat 复制文件夹_怎么生成电脑上文件夹的目录结构

    有时我们会看见有人发布这样的内容: 这个是电脑上一个文件夹的目录结构,用于显示文件夹里各个文件的名称.怎么生成这样的目录呢? 一.按住shift键,右击你要生成目录的文件夹,选择"在此处打开 ...

  9. Java 目录操作二(获取文件的上级目录、获取目录最后修改时间、打印目录结构、遍历指定目录下的所有目录)

    获取文件的上级目录 import java.io.File;public class Main {public static void main(String[] args) {File file = ...

  10. linux查看文件元数据,Linux切换目录、查看目录下的文件、文件类型介绍和查看文件的元数据信息...

    本篇博客介绍几个Linux的基础命令:写的如有不足,还望读者不吝赐教! 切换目录 cd(ChangeDirectory)切换工作目录 语法:cd  [要切换的目录] cd:进入用户的宿主目录(回家) ...

最新文章

  1. DDoS***、CC***的***方式和防御方法
  2. python matplotlib 显示opencv的图像
  3. libqrencode生成二维码图片的问题
  4. SBT搭建Spark
  5. 笔记2——C++ static关键字与一维动态数组的使用
  6. Leaflet中使用leaflet.easyPrint插件实现打印效果
  7. 领域驱动设计战术模式--值对象
  8. CGCTF-Web-签到2
  9. 数据库中char与varchar类型的区别 1
  10. 图像水平梯度和竖直梯度代码_Opencv图像处理(三)
  11. (31)FPGA面试技能提升篇(CAN)
  12. ORB-SLAM3学习笔记-基本概念
  13. 个人财务管理系统mysql_个人财务管理系统功能模块设计
  14. 详解.class文件
  15. distpicker联动失效问题
  16. 题解 UVA12304 【2D Geometry 110 in 1!】
  17. c#: UrlDecode()
  18. Android Google Map 开发指南(一)解决官方demo显示空白只展示google logo问题
  19. SAS学习第9章:卡方检验之适合性检验与独立性检验
  20. 「六一端午」双节|营销人必看的新玩法

热门文章

  1. 如何让Java文件在虚拟机中运行_深入理解JVM--Java程序如何在虚拟机中运行
  2. 禁用app里面的java_java – 我们可以禁用AOP调用吗?
  3. 函数判断的和是用android,WPJAM Basic 内置的系统和设备判断函数
  4. gdb调试Python进程
  5. centos7.3 安装ansible
  6. Spring Security 11 种过滤器介绍
  7. 怎样处理Win10自动更新?如何取消?
  8. mybatis支持属性使用驼峰的命名
  9. ASP.NET MVC搭建项目后台UI框架—9、服务器端排序
  10. 3DSmax里的nurms toggle命令中文版是什么意思