[MOV]MP4文件中如何寻找一个sample--MP4文件简单解析

MP4文件中如何寻找一个sample--MP4文件简单解析 晚上搜索MP4格式的文章。都是从上到下,从外到里,一层一层开拔各种的box,等到了真正感兴趣的boxer的时候,通常观看者已经累的老眼昏花,那么多的boxer。那么多的名字。怎么记得住呢? 我将从一个全新的角度来解析mp4文件,就是怎么定位一个sample ,MP4为啥要这么定位? 阅读详情
以下内容为转载,工程中下面只是其中一种Seek的方式:



是不是很头大?怎么会有这么多的boxer呢?

那么我其实只有解决一个问题

给定一个时间,找到对应的sample的位置。怎么搞?

1)通过stts,就是sample table boxer里的time to sample 列表,找到对应的sample的序列号,比如说是50。

2)通过stsc 即 sample table boxer里的sample to chunk 列表,定位到属于哪个chunk.

3)通过stco   即sample table boxer 里的chunk offset table 列表,找到这个chunk在整个文件中的偏移量。


到这里问题来了。一个chunk中,会包含有1-n个sample,怎么确定我们需要的sample在哪个位置呢?这里是最复杂最绕的。

4)通过stss,即sample table boxer里的sample size  列表, 顺序查找这个sample的大小,已经其前面的sample的大小,直到改chunk的第一个sample,然后累加偏移量,就可以得到该sample在这个文件中的偏移。


够绕的。这里面反应了mp4文件对于sample的组织。

1)每个sample的大小,都有列出。在stss boxer里

2)但是,每个sample的物理偏移,去没有直接列出来,而是通过chunk表组织。

就是因为多了这个chunk,造成mp4的seek极其的繁琐。


MP4文件Sample获取 音视频的每一帧在MP4文件中是以一个sample存在的。一个包含音视频的mp4文件包含一个音频track和一个视频track。每个track包含若干chunk、每个chunk包含若干sample。要播放mp4文件,需要按照时间先后顺序提取出sample的信息,如大小、文件中位置、时间、类型(音频、视频)、是否关键视频帧等。mp4文件的stbl内存放有这些信息。详细请参考video_file_format_spec_v10_1.pdf这个文件。这里贴一下解析一个track内所有sample代码,解析出来后,可 阅读详情

相关推荐

mp4文件格式解析

mp4或称,是一种多媒体容器格式,扩展名为.mp4。2001年,apple的QuickTime格式,.qt和.mov的后缀名。2001年,MPEG-4Part1,把基于QuickTime的box布局的容器格式添加到了MPEG-4标准。2004年,标准文档把编码和容器格式的说明分开。MPEG-4Part12,定义了容器格式通用的box结构,即ISO媒体文件格式(ISObasemediafileformat,ISOBMFF)。基于.mp4格式。20152018ftyp。...

yinshipin007的博客 4548

MP4文件sample读取流程

前面两篇博客描述了MP4文件的boxer组成结构,各个boxer的含义和包含的文件信息;另外也描述了stts, stco, stsz, stsc, ctts等boxer是如何建立一张张用于查找各个sample具体位置,sample大小,时间和sampleIndex的对应关系的表,通过这些表,我们将一个MP4文件的所有的sample有机的组成在了一起,可以任意读取文件按特定sample或者特定时刻的

创造晴天的博客 5974

MP4v2 sample

MP4v2 sample

MP4文件格式解析

知道如何读取一个mp4文件中的基本信息。从一个mp4文件中抽离对应的视频数据或者音频数据的基本原理。播放一个mp4时seek到指定时间,如何在mp4文件中查找到对应的媒体数据的基本过程mp4协议中一种类似于面向对象的抽象。类似于java语言中任何对象都源于Object类一样,在MP4协议描述都是一个box,不同的box都具有唯一的identifier标识和size。在某些文档中也有atom的叫法。MP4中最基本的单元就是BoxMP4文件是由一个一个独立的Box拼接而成的,例如文件最开始处ftyp。

析问(Sivin) 9672

C++新手也能搞定!Windows下Cesium-Native编译全流程(附依赖下载技巧)

本文为C++新手详细介绍了在Windows系统下编译Cesium-Native库的全流程。重点针对网络环境不佳的情况,提供了手动下载依赖库的实用技巧,并指导用户使用CMake配置、生成解决方案,最终完成编译与测试验证,帮助开发者成功构建这一处理3D地理空间数据的C++运行时库。

weixin_28839549的博客 381

基于Matlab与Bladed联合仿真的交互软件设计

基于Matlab与Bladed的交互软件设计

weixin_45014222的博客 816

MP4之sample信息

时间戳 sample的时间戳信息分散在moov/trak/mdia/minf/stbl/stts和moov/trak/mdia/minf/stbl/ctts中。 decode time(DT)可以通过stts计算得到,DT(n)=sample_delta(0)+sample_delta(1)+...+sample_delta(n-1) ctts中保存DT和CT(composition time)之...

weixin_33890499的博客 768

DeepSeek 框架和技术栈分析

DeepSeek 诞生于对更高效、更强大的深度学习计算和模型训练的追求。随着深度学习模型的规模不断增大,如大型语言模型(LLMs)和复杂的视觉模型,传统的框架在处理这些大规模模型时面临着性能瓶颈和资源利用效率低下的问题。DeepSeek 旨在解决这些问题,通过优化框架设计和采用先进的技术栈,实现更高效的模型训练和推理,同时降低计算成本。

yournameplease的专栏 1512

Mp4文件格式解析

1、简介 MP4(或称MPEG-4 Part 14)是一套用于音频、视频信息的压缩编码标准,由国际标准化组织(ISO)和国际电工委员会(IEC)下属的“动态图像专家组”(Moving Picture Experts Group,即MPEG)制定 MP4文件封装格式,对应的标准为ISO/IEC 14496-12,即信息技术 视听对象编码的第12部分:ISO 基本媒体文件格式(Information technology Coding of audio-visual object...

king_weng的博客 4519

Unity URP半透明物体渲染避坑指南:双面渲染与深度写入的实战技巧

本文深入探讨了Unity URP中半透明物体自交叠渲染问题的核心根源与解决方案。针对模型自身交叠导致的排序错误,文章提供了双面渲染与深度写入两种实战技巧,详细分析了其实现原理、性能开销及适用场景,帮助开发者根据项目需求选择最优方案,有效提升玻璃、水体等材质的视觉表现。

sunny的博客 545

40分钟快速入门Dart基础(上)

针对final 和const 理解的有点模糊的可以参考这篇文章: 可以参考这里Flutter 知识梳理(Dart)-Dart中static final const 区别看是不是超级好上手,好操作~其实Dart的整个学习起来还是蛮简单的,对于有基础的老司机更简单一些。分分钟敲起来~这篇文章就简单的介绍到这里如何短时间快速入门Dart,避免入坑。由于是想让大家快速入门Flutter,所以针对上面的这些章节我们讲解的只是一些在开发Flutter 过程中常用的一些方法和函数。

qq_7813180 4572

ffmpeg解封装mov/mp4格式解封装源码分析之mov_read_header(读取metadata)、mov_read_packet(读取sample数据)、mov_read_trak

最近在研究ffmpeg,发现网上关于ffmpeg解封装的源码分析不多而且不全,所以这里总结一下,我自己对ffmpeg解封装mov、mp4格式的源码分析主要就是关于mov.c的源码分析,让各位同学了解一下,mp4的流AVStream、AVPacket是如何赋值的,这两个结构体变量会是解码的输入数据,了解解封装过程,如pts、dts是如何得到的,有助于ffmpeg的二次开发。关于MP4协议,网上有详细的描述,我这里就不在写了,直接上干货,代码书注释。 重点小Tips: ffmpeg中很多结构体(AVStre

一个大龄程序员的博客 2772

学习STM32的流体水位传感器

引言: 流体水位传感器是一种常用于测量液体水位的设备,广泛应用于水位监测、液位控制和流量计量等领域。STM32是一款功能强大的单片机,具有丰富的外设和灵活的编程能力,非常适合用于流体水位传感器的开发。本文将介绍如何使用STM32开发板与流体水位传感器进行连接和通信,并通过编写代码实现水位的测量和显示。五、总结: 通过以上的代码示例,我们可以实现使用STM32开发板与流体水位传感器进行连接和通信的功能。三、编写代码: 以下是使用STM32CubeIDE编写的示例代码,实现了读取流体水位传感器的功能。

xiaoalla的博客 740

MOV及MP4文件格式中几个重要的Table

MP4,全称是MPEG4 Part 14,是一种使用MPEG-4的多媒体文件格式,扩展名为.mp4。 MOV,是QuickTime影片格式,它是Apple公司开发的一种音频、视频文件格式,用于存储常用数字媒体类型。其扩展名为.mov。 在MOV和MP4文件格式中包括几个重要的Table,对应的atoms分别为:stts、ctts、stss、stsc、stsz以及stco/co64。 1、Sa...

幽雨雨幽 969

【2026年阿里巴巴集团暑期实习- 4月25日-算法岗-第二题- 矩阵计数】(题目+思路+Java&C++&Python解析+在线测试)

摘要: 给定两个非负整数序列a和b,构造n×m矩阵C,其中C[i][j]=a[i]×b[j]。统计矩阵中元素≥k的数量。解法是先对数组b排序,然后对于每个a[i],若k=0则直接累加m;若a[i]=0且k>0则跳过;否则计算需要的最小b[j]值,在排序后的b中使用二分查找确定满足条件的元素数量。时间复杂度为O((n+m)log m),空间复杂度O(1)。代码实现了排序和二分查找的高效组合。

m0_73659489的博客 65

Vue - 简约大气 404 页面

效果图 实现代码 复制即可。 <template> <div> <div class="error"> <!-- 图片可保存到本地 --> <img src="https://img-blog.csdnimg.cn/20210715111039922.png"> <p>抱歉!你访问的页面不存在或已删除 :( </p> <span class="back" @click="go(

🏆 前端领域优质创作者 3371

一口气搞懂MP4文件格式

1个box由两部分组成:box header、box body。box header:box的元数据,比如box type、box size。box body:box的数据部分,实际存储的内容跟box类型有关,比如mdat中body部分存储的媒体数据。box header中,只有type、size是必选字段。当size==0时,存在largesize字段。在部分box中,还存在version、flags字段,这样的box叫做Full Box。

多媒体开发者 9846

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

mp4文件格式分析

mp4文件格式解析 MP4格式详解

WHEgqing的专栏 1061

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

MP4简介

声明: 在我的工作中需要查看一些关于MP4格式的问题,所以对MP4进行了简单的了解,这里对这部分知识做个简单的总结,但是文中主要是参考mp4文件格式解析,这里进行说明,同时我也使用了一些自己工作中的例子作讲解,希望可以对你有所帮助。 参考文章: FFmpeg中mp4的demuxer(mov.c)代码阅读 : https://www.jianshu.com/p/f78defe0e485 介绍MP4格式的文章: mp4文件格式解析 : https://www.jianshu.com/p/...

静祥阁 1279

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

MP4文件格式的相关内容

box FullBox有version和flags字段, “free”中的内容是无关紧要的,可以被忽略。该box被删除后,不会对播放产生任何影响。 对于只有I帧、P帧的视频来说,解码顺序、渲染顺序是一致的,此时,ctts没必要存在。 stss (Sync Sample Box) stss 里面存放了关键帧的序号(I帧),跳转时,需要从关键帧开始解码,否则会花屏。 哪些sample是关键帧 mp4文件中,关键帧所在的sample序号。如果没有stss的话,所有的samp

CHYabc123456hh的博客 5670

MP4 atom (1)

MOV及MP4文件格式中几个重要的Table 标签: MP4 / MOV / Table / 6981 编辑 删除 MP4,全称是MPEG4 Part 14,是一种使用MPEG-4的多媒体文件格式,扩展名为.mp4。 MOV,是QuickTime影片格式,它是Apple公司开发的一种音频、视频文件格式,用于存储常用数字媒体类型。其扩展名为.mov。 在MOV和MP4文件格式中包括几个重要...

230

封装格式 -- MP4

MP4前言发展历史MP4在线分析工具MPEG-4MP4解析重要概念BoxTrackSampleChunkBOX详解STBLStsd(sample description)Stts(Decompressing time to sample):Ctts(composition time to sample):Stss(sync sample):Stsz(sample size):Stsc(sample to chunk):Stco(chunk offset)关键参数的计算确定trak box类型计算片源播放时长

Ritchie_Lin的博客 1919
上一篇: [MOV] stbl box :stsc/stts
下一篇: 盛志凡:智能电视操作系统TVOS2.0-广电终端智能化的主引擎
datamining2005
博客等级 码龄20年 400粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值