关于Sample的分析报告
首先,这是一个典型的sample Table box:

一、 Stbl box中常见的子box:
stts:Decoding Time to Sample Box时间戳和Sample映射表。通过这个box可以实现时间到sample number的映射。
stsd:Sample Description,主要描述当前track有关的编码信息,以及用于初始化解码的附加信息。
stsz,stz2:Sample Size Boxes每个Sample大小的表。
stsc:Sample to chunk的映射表。
stco,co64:Chunk位置偏移表。
Stss:关键帧index。
二、对主要的子box进行解析:
(1)解析stsd可获得coding型、视频宽高、音频samplesize、channelcount这些和解码器有关信息。
(2)解析stsz box 可以获得一个sample size的表。
|
Filed name |
type |
Size(bits) |
|
FullBox Header |
--- |
--- |
|
sample_size |
uint32 |
32 |
|
sample_count |
uint32 |
32 |
|
entry_size |
uint32[] |
varies |
sample_size中表示sample长度,如果是0表示每个sample长度不定,会记录在entry_size中;否则每个sample长度一样,并且entry_size域不存在。
'stz2' box中的entry_size是compact的,长度由特定字段指定。
(3)解析stsc 还原Sample 与chunk的映射表 ,记录了每个chunk中包含多少sample,其结构定义如下:
|
Filed name |
type |
Size(bits) |
|
FullBox Header |
--- |
--- |
|
entry_cout |
uint32 |
32 |
|
chunk_entry |
uint32[3] |
varies |
chunk_entry包含三个字段:
first_chunk: uint32
samples_per_chunk: uint32
sample_description_index: uint32
每个entry表示从first_chunk开始的每个chunk都包含samples_per_chunk个samples,这些sample都可以用使用sample_description_index信息解码。通过这个box,可以构建出当前track的chunk结构,及其包含的sample。

Sample 是存储的最基本单元,mp4把Sample 存在chunk中。chunk的长度、chunk的大小、chunk中Sample的数量及大小都是不定的。通过解析这部分box来还原这个映射表。
(4) “stco”这个box记录了chunk对应的offset,只是包含字段一个是32为('stco'),一个是64位('co64')。
chunk offset box中记录都是相对文件的偏移量,可以直接通过这些信息读取。
三、小结
由于'mdat' box中的多媒体数据是没有结构的,只能参考moov的trak box解析。反过头来。我们看一下针对单个track中的media信息存储应该是下面的结构
|chunk #0| chunk#1| ... | chunk #n|
每个chunk的构成是下面的结构:
|sample #0|sample #1| ... | sample #n|
从trak box中的minf中可以看出,每个chunk的长度不定,其所包含的sample数目不同,每个sample的长度也不完全相同。
关于Sample的分析报告的更多相关文章
- Alpha阶段事后分析报告
每个团队编写一个事后分析报告,对于团队在Alpha阶段的工作做一个总结. 请在2016年11月24日上课之前根据下述博客中的模板总结前一阶段的工作,发表在团队博客上,并在课上的事后分析会上进行汇报,并 ...
- 《奥威Power-BI智能分析报告制作方法 》精彩回顾
上次课我们简单介绍了奥威Power-BI的智能分析报告,并展示了报告与图表相结合的应用场景.图文分析报表的意义不只在于美观,更重要的是固定框架下的灵活性和追根究底的动态分析,有着很强的实用性.上节课 ...
- 12月07日《奥威Power-BI智能分析报告制作方法 》腾讯课堂开课啦
前几天跟我一个做报表的哥们聊天,听着他一茬一茬地诉苦:“每天做报表做到想吐,老板看报表时还是不给一个好脸色.”我也只能搬出那一套“过程大于结果”的内心疗程赠与他,没想到他反而怒了:“做 ...
- M1事后分析报告(Postmortem Report)
M1事后分析报告(Postmortem Report) 设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们项目组所开发的软件为一个基于Andro ...
- websphere OSGi应用环境下服务调用saaj包加载问题分析报告
websphere OSGi应用环境下服务调用saaj包加载问题分析报告 作者:bingjava 版权声明:本文为博主原创文章,转载请说明出处:http://www.cnblogs.com/bingj ...
- Google发布SSLv3漏洞简要分析报告
今天上午,Google发布了一份关于SSLv3漏洞的简要分析报告.根据Google的说法,该漏洞贯穿于所有的SSLv3版本中,利用该漏洞,黑客可以通过中间人攻击等类似的方式(只要劫持到的数据加密两端均 ...
- 推荐一个利用 python 生成 pptx 分析报告的工具包:reportgen
reportgen v0.1.8 更新介绍 这段时间,我对 reportgen 进行了大工程量的修改和更新.将之前在各个文章中出现的函数进行了封装,同时也对现有工具包的一些逻辑进行了调整. 1.rep ...
- python 生成 pptx 分析报告的工具包:reportgen
python机器学习-sklearn挖掘乳腺癌细胞( 博主亲自录制) 网易云观看地址 https://study.163.com/course/introduction.htm?courseId=10 ...
- 使用AES加密的勒索类软件分析报告
报告名称: 某勒索类软件分析报告 作者: 李东 报告更新日期: 样本发现日期: 样本类型: 样本文件大小/被感染文件变化长度: 样本文件MD5 校验值: da4ab5e31793 ...
随机推荐
- tcp付金卡黛珊李方军拉萨
进口量点卷啊首付款拉德斯基疯狂拉萨的
- CVE-2017-8046(Spring Data Rest RCE)
环境搭建参考第一个链接,springboot启动文件如下,不同的启类,将Application.class修改一下就可以了,直接debug.注意:默认版本是2.0.3版本,修改成低版本,看一下mvn下 ...
- MetaMask/Website
https://github.com/MetaMask/Website 将这个包下载下来之后运行npm install出现下面的问题 gyp: No Xcode or CLT version dete ...
- vmware中装的ubuntu上不了网
背景 上周末重装了windows主机的系统,之后就重新安装了vmware软件,今天使用的时候就发现git pull代码仓库的时候,发现代码仓库无法获取,检查后发现是虚拟机上不了网了. 查看了一系列教程 ...
- nodejs 模板引擎ejs的使用
1.test.ejs文件 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
- 五,ESP8266 TCP服务器多连接(基于Lua脚本语言)
https://www.cnblogs.com/yangfengwu/p/7524326.html 一些时间去准备朋友的元器件了... 接着写,,争取今天写完所有的文章,,因为答应了朋友下周5之前要做 ...
- nrf52832 连接参数更新过程
ble 连接参数更新过程如下: 一般分三个过程 一 .主机发起连接(带有一个连接参数,一般都是 7.5ms) 二.主机更新连接参数 (举例:NRF CONNECT 安卓app软件 45ms). 三.从 ...
- dom阻止事件冒泡
通常有两种事件流模型,一种是冒泡,一种是捕获.顾名思义,冒泡就是从内往外传播,捕获就是从外往里传播. 对于dom事件,就是这样的.比如,有两个父子div. <div id="pdiv& ...
- odoo之ERP系统
odoo大纲 第一部分:数据库postgressql 大象 第二部分:ORM(API) 第三部分:客户端 用python软件写: .py文件 包含两部分:1.自定义部分,由自己写,定义类和功能. .继 ...
- 虚拟机和主机ping不通解决的方法
虚拟机和主机ping不通 一般有3种方式:NAT.bridged .host-Only. Bridged方式: 在图1中Network connection中选中第1项,即在vm ware虚拟机属性里 ...