m4a 格式文件中的内容是有很多的box 组成的,box 格式如下:

box length(4B 大端格式) + box type(4B)+ box content(box length - 8)

例如如下是ftyp这个box 的数据内容,可以看到该box 长度是0x20字节。

从m4a文件中找到moov box是重点,因为找到了这个box ,需要从box 找出来每个采样帧的位置及大小。

一般是需要从m4a中找到如下的结构,重点是知道stsd   stts   stsc  stsz   stco这几个box。

moov

--->trak

--->mdia

--->minf

--->stbl

--->stsd

--->mp4a

===》从这里可以得到channel num、sample bits、sample rate;

--->esds

===》从这里可以得到audio type、max bitrate、avg bitrate、decoder config data;

--->stts

===》可以获取该trak下面有多少的samples,如下第一个参数是0x00000001,那么后面四个字节组成的就是                                          这个trak中的samples count=0x00002c64;

--->stsc

===》会得到一个表格,关于这个表的数据如何去理解,用一个实际例子来说明。第个参数0x00000002,那么

后面的数据有两组:(0x00000001   0x00000015   0x00000001)

(0x0000021e  0x00000003    0x00000001)

可以得出如下信息:

trunk 编号是从0x00000001  ~  0x0000021e;

编号从0x01~0x21d的trunk,每个trunk都有0x15个sample;

编号从0x21e的trunk,有0x3个sample;

所以计算一下samples=0x21d * 0x15  +  0x3 = 0x2c64,这和上面stts是相匹配的。

--->stsz

===》这个表可以知道每个sample的大小。

两个红色数据分别是0x00000000    0x00002c64(表示后面有0x2c64的四字节记录每个sample 大小)

--->stco

===》可以知道每个trunk的位置

红色数据是0x0000021e,表示后面有0x21e个四字节记录每个trunk的位置;

例如编号1的trunk的位置在文件的0x00000030位置;

例如编号2的trunk的位置在文件的0x000021e3位置;

----》我们可以算一下,根据前面0x21d个trunk每个都是有0x15个sample,sample的大小可以通过stsz                                                   知道,计算下来编号1的trunk中这15个sample的size总共是0x21b3。

由于第一个trunk的位置是0x30;

所以第二个trunk的位置是0x21b3+0x30=0x21e3,这佐证了这里记录的trunk位置。

===》通过编号1的trunk的位置0x30,也就是第一个sample的位置;

那么第二个sample的位置就是0x30+0x173(来自于stsz的数据)=0x1a3

我对M4A文件格式的理解相关推荐

  1. 对TGA图像文件格式的理解

    一.什么是TGA格式 TGA格式的定义 TGA是由美国Truevision公司为其显示卡开发的一种图像文件格式,已被国际上的图形.图像工业所接受.现已成为数字化图像,以及运用光线跟踪算法所产生的高质量 ...

  2. 对 cplex/gurobi MPS/LP文件格式的理解

    文章目录 1. MPS 文件的理解 2. LP 文件的理解 优化求解器如 cplex 或 gurobi,都支持直接读取线性规划建模文件 MPS 格式或 LP 格式,因此,有必要研究一下,这样就可以编写 ...

  3. 电脑下载的M4A格式文件怎么转换为MP3格式

    M4A文件格式并不是一个家喻户晓的名字,与MP3格式相比,知名度远远落后.但是,这并不意味着它无关紧要,有时候我们下载的音乐可能就是M4A格式的,如果换一个设备播放可能就会出现格式不兼容无法播放的情况 ...

  4. 对Multi-bin 技术的理解

    [bin文件的格式]: Bin文件格式比较简单.结构如下: struct BinFile  { BYTE signature[7];    //前面7个字节是标志, 固定的{'B','0','0',' ...

  5. 电脑下载的M4A格式文件怎么转换为MP3格式 1

    M4A文件格式并不是一个家喻户晓的名字,与MP3格式相比,知名度远远落后.但是,这并不意味着它无关紧要,有时候我们下载的音乐可能就是M4A格式的,如果换一个设备播放可能就会出现格式不兼容无法播放的情况 ...

  6. Class文件格式实战:使用ASM动态生成class文件

    https://blog.csdn.net/zhangjg_blog/article/details/22976929 概述 本专栏前面的文章,主要详细讲解了Class文件的格式,并且在上一篇文章中做 ...

  7. 殊途同归的CVE-2012-0774 TrueType字体整数溢出漏洞分析

    1. 前言 官方的漏洞通报中,关于这个漏洞的信息其实很少: Integer overflow in Adobe Reader and Acrobat 9.x before 9.5.1 and 10.x ...

  8. 每个大数据工程师都应该知道的OLAP 核心知识点

    转载:https://mp.weixin.qq.com/s/I2WqQoGwK7LRrpB4R2pobw 很值得学习的一篇文章,不适用于初学者,适用于中级或者进阶高级的大数据工程师 OLAP 系统广泛 ...

  9. Hemberg-lab单细胞转录组数据分析(三)

    Hemberg-lab单细胞转录组数据分析(一) Hemberg-lab单细胞转录组数据分析(二) 收藏|北大生信平台"单细胞分析.染色质分析"视频和PPT分享 生信老司机以中心法 ...

最新文章

  1. Java生成html为pdf
  2. 区块链开发公司能做什么?对企业未来市场有何帮助?
  3. Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name 解决
  4. 关于GAN的灵魂七问
  5. 只读变量(常量)和位置变量
  6. this static 面向对象三大特点
  7. 年度大战即将拉开!iPhone 11系列后,轮到华为Mate30系列表演了
  8. 【python】python的环境搭建
  9. ROS2 Galactic Depth to World coordinate RGBD相机的深度数据转换到世界坐标系
  10. 画图软件Microsoft visio下载安装及使用
  11. PS2019工具介绍笔记(一)
  12. 任正非:华为云不能简单模仿阿里、亚马逊,要有所为有所不为|CEO说
  13. 图像工作回顾之七:人脸姿态估计
  14. Android——支持图片加视频无限轮播的banner
  15. 快速新建多个文件夹,而且是指定名称的!
  16. Windows中的环境变量一览
  17. 华为 日志服务器 配置文件,华为设置日志服务器配置
  18. 【鸿蒙】鸿蒙App应用-《记账软件》登录,注册,找回密码功能
  19. 批处理文件语法大全(怎么写Bat文件)
  20. 盒模型和开发中常用的布局

热门文章

  1. 用jquery获取tbody下的第一个tr的最后一个td里面的第一个a标签
  2. 【杂谈】 Listary自带的字典功能失效?没关系,让我们自己来改造它
  3. 安装tensorflow报错---CondaHTTPError: HTTP 000 CONNECTION FAILED for url
  4. 新手真无线蓝牙耳机怎么选?大神推荐高颜值时尚主流蓝牙耳机推荐
  5. Java设计模式(03) -- 里氏替换原则
  6. linux 汇编 push rbp,无法从汇编(yasm)代码调用64位Linux上的C标准库函数
  7. 英语单词词性顺口溜_巧记英语单词的顺口溜 这样记忆不枯燥
  8. 点云数据生成DEM,并导出三维模型
  9. 车载冰箱E-mark认证要多长时间?
  10. 示波器测量的波形一直抖动怎么办