Atitit m4a文件元数据结构 目录 1. 一、基本概念 1 2. MP4文件由若干称为Atom(或称为box)的数据对象组成, 2 2.1. MP4文件概述 2 2.2. M4A没有视频流而已
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、 文件,由许多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)
- MP4文件由若干称为Atom(或称为box)的数据对象组成,
- 每个Atom的起首为四个字节的数据长度(Big Endian)和四个字节的类型标识,数据长度和类型标志都可以扩展。Atom可以嵌套,即其数据域可以由若干其它Atom组成,从而实现结构化的数据。
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,一般在文件末尾,媒体的索引文件,可通过查询直接定位所需时间点的媒体数据。
- 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、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格式的二进制文件分析出标签及封面信息如何解析;
下面给
---------------------
大box中存放小box,一级嵌套一级来存放媒体信息。box的基本结构是:
其中,size指明了整个box所占用的大小,包括header部分。如果box很大(例如存放具体视频数据的mdat box),超过了uint32的最大数值,size就被设置为1,并用接下来的8位uint64来存放大小。
一个mp4文件有可能包含非常多的box,在很大程度上增加了解析的复杂性,这个网页上http://mp4ra.org/atoms.html记录了一些当前注册过的box类型。看到这么多box,如果要全部支持,一个个解析,怕是头都要爆了。还好,大部分mp4文件没有那么多的box类型,下图就是一个简化了的,常见的mp4文件结构:
- 下图表是对于以上几个重要的box存放信息的说明:
- 面这张图是常见的box的树结构图,可以用来大致了解MP4文件的构造。
- 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"
}
- 工具
- 图形化分析工具MP4Reader:mp4info
https://en.freedownloadmanager.org/Windows-PC/MP4-Reader-FREE.html
这个工具相比于mp4info会强大很多,图形化显示信息之外,还会将MP4文件的二进制信息同步显示,方便对比分析。
mp4info有问题再win7上,打不开m4a文件,扩展名已经换成mp4。。使用MP4Reade也r比较好强大。。还有个
Quicktime tool 也比较一般
- Windows自带音乐可以修改m4a信息了
标题以及更多信息可以右键属性修改
- 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没有视频流而已相关推荐
- 鸟哥Linux私房菜基础学习篇 第二部分 Linux 文件、目录与磁盘格式_Linux文件权限与 目录配置_Linux文件与目录管理...
2019独角兽企业重金招聘Python工程师标准>>> 1.相对路径相对某目录比较灵活方便(如安软件时候指定目录),绝对路径一般不会因为环境变化而产生错误. 2.目录变化时的切换 - ...
- Linux 根文件系统目录结构与功能,4.Linux根文件系统和目录结构及bash特性
4.1Linux目录结构和根文件系统全面讲解 Linux文件系统: Linux:glibc 程序编译方式: 动态链接 静态编译 进程的类型: 终端:硬件设备, 关联一个用户接口 与终端相关:通过终端启 ...
- Linux随笔2 - Linux的目录配置、文件元数据信息、符号链接与硬链接和常用文件和目录管理命令示例
目录 1. Linux的目录配置与FHS(Filesystem Hierarchy Standard) 1.1 根目录(/)的意义与内容 1.1.1 FHS要求根目录中必须存在的目录 1.1.2 FH ...
- windows用 tree命令查看目录文件夹结构
windows用 tree命令查看目录文件夹结构 ## 查看帮助 tree --helptree --dirsfirst --filelimit 6 -h -t –dirsfirst 目录优先展示 – ...
- Atitit 大json文件的结构化查看解决方案,高性能的jsonview attilax总结.docx
Atitit 大json文件的结构化查看解决方案,高性能的jsonview attilax总结.docx 1.1. 实现目标:1 1.2. 实现key与value类型的..一直分析到非 jsonob ...
- Linux文件存储结构,包括目录项、inode、数据块
2019独角兽企业重金招聘Python工程师标准>>> 先说inode 理解inode,要从文件储存说起.文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sec ...
- linux 源码目录结构 文件系统目录结构
学习Linux也有一段时间了,具体来整理一下Linux源码的目录结构和文件系统的目录结构,以便加深记忆. 一.Linux源码的目录结构 首先上一张截图,如下所示: 再看各个文件的介绍,借用一下其他资源 ...
- bat 复制文件夹_怎么生成电脑上文件夹的目录结构
有时我们会看见有人发布这样的内容: 这个是电脑上一个文件夹的目录结构,用于显示文件夹里各个文件的名称.怎么生成这样的目录呢? 一.按住shift键,右击你要生成目录的文件夹,选择"在此处打开 ...
- Java 目录操作二(获取文件的上级目录、获取目录最后修改时间、打印目录结构、遍历指定目录下的所有目录)
获取文件的上级目录 import java.io.File;public class Main {public static void main(String[] args) {File file = ...
- linux查看文件元数据,Linux切换目录、查看目录下的文件、文件类型介绍和查看文件的元数据信息...
本篇博客介绍几个Linux的基础命令:写的如有不足,还望读者不吝赐教! 切换目录 cd(ChangeDirectory)切换工作目录 语法:cd [要切换的目录] cd:进入用户的宿主目录(回家) ...
最新文章
- DDoS***、CC***的***方式和防御方法
- python matplotlib 显示opencv的图像
- libqrencode生成二维码图片的问题
- SBT搭建Spark
- 笔记2——C++ static关键字与一维动态数组的使用
- Leaflet中使用leaflet.easyPrint插件实现打印效果
- 领域驱动设计战术模式--值对象
- CGCTF-Web-签到2
- 数据库中char与varchar类型的区别 1
- 图像水平梯度和竖直梯度代码_Opencv图像处理(三)
- (31)FPGA面试技能提升篇(CAN)
- ORB-SLAM3学习笔记-基本概念
- 个人财务管理系统mysql_个人财务管理系统功能模块设计
- 详解.class文件
- distpicker联动失效问题
- 题解 UVA12304 【2D Geometry 110 in 1!】
- c#: UrlDecode()
- Android Google Map 开发指南(一)解决官方demo显示空白只展示google logo问题
- SAS学习第9章:卡方检验之适合性检验与独立性检验
- 「六一端午」双节|营销人必看的新玩法
热门文章
- 如何让Java文件在虚拟机中运行_深入理解JVM--Java程序如何在虚拟机中运行
- 禁用app里面的java_java – 我们可以禁用AOP调用吗?
- 函数判断的和是用android,WPJAM Basic 内置的系统和设备判断函数
- gdb调试Python进程
- centos7.3 安装ansible
- Spring Security 11 种过滤器介绍
- 怎样处理Win10自动更新?如何取消?
- mybatis支持属性使用驼峰的命名
- ASP.NET MVC搭建项目后台UI框架—9、服务器端排序
- 3DSmax里的nurms toggle命令中文版是什么意思