视频文件格式解析之 3GP/MP4

Augmented Reality Law, Privacy, and Ethics Augmented Reality Law, Privacy, and Ethics Law, Society, and Emerging AR Technologies Brian D. Wassom Allison Bishop, Technical Editor AMSTERDAM • BOSTON • HEIDELBERG LONDON • NEW YORK • OXFORD PARIS • SAN DIEGO • SAN FRANCISCO SINGAPORE • SYDNEY.. 阅读详情

1. 概述

  流行的文件格式背后都有大公司的支持。FLV得益于ADOBE公司推动的网络视频分享风潮,而AVI则是MICROSOFT首创的RIFF即视频和音频交 织在一起同步播放。 3GP/MP4是APPLE提出并得到ISO标准支持作为NOKIA等手机的默认视频格式。3GP是MP4格式在手机上的简化版。MP4的codec组合 一般是mpeg4 + AAC, 3GP则按版本演进分为3gpp r5(h.263/mpeg4 + AMR-NB/AMR WB), 3gpp r6(增加h.264视频和aacPlus音频支持)。

  有人会把MP4和MPEG4搞混, 前者是文件容器(container),后者是视频编码格式, 容器的作用是把压缩编码

后的视频和音频数据尽可能紧凑的排布,就好像阿甘的巧克力盒子,你并不知道盒子里有什么, 但你可以按照

既定的线索解开文件,取出你需要的数据。

文件格式一般包括以下三要素:

 header: 标记文件类型,音视频码流的基本属性信息
index:    索引表,每个frame有对应的offset,size,timestamp.
stream: 真正的音视频流数据。
任何文件格式都应该有以上3要素。 当然AVI视频没有索引也能播放,但不能拖放seek,需要自己重建索引。解

析器(demuxer)根据frame_id找到其在文件中的offset和size,然后读取出来解码并播放。

2. 文件格式分析

 下面来分析一下3GP/MP4文件格式。APPLE的格式有2个特点,1. 排布紧凑几乎没有冗余数据(AVI则有很多junk

数据),2.音视频码流数据可随意存放而不需按时间顺序排布。

  3gp文件由一系列的box(atom)组成。每个box的结构都是4字节的size,4字节的type, 还有一些data数据。用

mp4info查看3gp文件的数据排布如下图:

 

  如上图, ftyp是表示文件的版本信息, mdat存放文字,音视频等数据。你可能要问,这些音视频数据怎么找

到呢? 是通过moov box里的子box trak,里面存放着音视频的属性描述以及每个sample的索引。

3. 关于sample atoms

   video和audio的码流属性(如视频width/height,codec id, 音频采样率声道数等)存放在stsd box里; 下面

着重介绍MP4高效压缩的精华:stts,stss,stsc,stsz,stco五个box。对比AVI的索引表是每个sample都有对应的

id,flag,offset,size,3GP的高效索引方式可以把AVI转码成同码率的MP4后,文件size减小成原来的20-30%!

1. stts atom(time to sample atoms,见quicktime format 文档图2-28  标准文档点击下载): 存储了sample

的时间信息。stts能让很方便的根据timestamp找到对应的sample,或者获取某个sample对应的timestamp. stts

 table记录着有相同duration的sample的数量count和时长dutation。

2. stss atom(sync sample atom,见文档图2-31): 存储了每个关键帧的sample id。 stss能让你很方便的找到

当前帧最近的关键帧。

3. stsc atom(sample to chunk atom): sample存放在chunk里为了允许优化的数据读取。比如音频sample size

都很小(amr-nb sample size为32字节), 每次读取一个sample开销太大, 可一次性读所在chunk里一堆

sample。

4. stsz atom(sample size atom): stsz可以描述每个sample的size.

5. stco atom(chunk offset atoms): stco描述了每个chunk在文件中的绝对偏移位置。该offset可以是32位的

也可以是64位的,后者用来支持处理超大文件。

4 .使用sample atoms来处理播放流程

  • 查找sample        

1.确定时间,相对于媒体时间坐标系统

2.检查time-to-sample atom来确定给定时间的sample序号。

3.检查sample-to-chunk atom来发现对应该sample的chunk。

4.从chunk offset atom中提取该trunk的偏移量。

5.利用sample size atom找到sample在trunk内的偏移量和sample的大小。

例如,如果要找第1秒的视频数据,过程如下:

1.  第1秒的视频数据相对于此电影的时间为600

2.  检查time-to-sample atom,得出每个sample的duration是40,从而得出需要寻找第600/40 = 15 + 1 = 16个sample

3.  检查sample-to-chunk atom,得到该sample属于第5个chunk的第一个sample,该chunk共有4个sample

4.  检查chunk offset atom找到第5个trunk的偏移量是20472

5.  由于第16个sample是第5个trunk的第一个sample,所以不用检查sample size atom,trunk的偏移量即是该sample的偏移量20472。如果是这个trunk的第二个sample,则从sample size atom中找到该trunk的前一个sample的大小,然后加上偏移量即可得到实际位置。

6.  得到位置后,即可取出相应数据进行解码,播放

  •       查找关键帧     

查找过程与查找sample的过程非常类似,只是需要利用sync sample atom来确定key frame的sample序号

确定给定时间的sample序号 
检查sync sample atom来发现这个sample序号之后的key frame 
检查sample-to-chunk atom来发现对应该sample的chunk 
从chunk offset atom中提取该trunk的偏移量 
利用sample size atom找到sample在trunk内的偏移量和sample的大小


5 .3GP/MP4相关资源

quicktime file format specification: 最权威的格式文档  点击下载
开源的3GP/MP4解析器: ffmpeg, GPAC, helix, google opencore等
朴素贝叶斯色情类网站内容识别     随着网络/信息安全攻防的不断升级,传统的安全检测方法已经不能够满足新的安全威胁,大数据以及机器学习的方法越来越多的被应用到安全领域,本文研究了一种将贝叶斯算法应用到恶意内容识别的方法,不属于新方法,仅做实践验证.    首先确定识别的恶意内容为-色情类,方法最终可推广到博彩类,钓鱼网站类等等.为了提取色情类网站内容通用关键词,需要编写网站爬虫工具,爬取敏感关键字.为了对付动态网页内容以及j... 阅读详情

相关推荐

PyTorch模型生产部署:ONNX/Triton导出与高可用架构实战

机器学习模型部署本质是训练环境与生产环境之间的运行时契约建立过程,涉及序列化协议、推理引擎兼容性、动态批处理及资源隔离等核心问题。ONNX凭借标准化算子集和跨框架支持,成为平衡兼容性、性能与可维护性的首选导出格式;Triton Inference Server则通过原生多框架支持、动态batching和热加载能力,显著提升GPU利用率与服务SLA保障水平。在金融风控、电商推荐等高要求场景中,基于ONNX+Triton+K8s的分层架构可稳定支撑千级QPS与毫秒级P95延迟,同时满足模型热更新、可观测性与版本

weixin_33857679的博客 448

nice video by securitytube.net

1.Client Side Database Protocol Attackhttp://www.securitytube.net/Client-Side-Database-Protocol-Attack-video.aspx?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+SecurityTube+%28SecurityT

cnbird's blog 14万+

本地AI语音生成与配音工作台Pandrator:从TTS到RVC的完整实践指南

语音合成(TTS)技术通过深度学习模型将文本转换为自然语音,其核心原理涉及声学建模与波形生成。这项技术不仅提升了人机交互体验,更在内容创作领域展现出巨大价值,广泛应用于有声书制作、视频配音、虚拟助手等场景。本文聚焦于一个集成了XTTS-v2、RVC等先进模型的本地化AI语音工作台——Pandrator,它通过模块化架构将语音合成、声音克隆、音频转录与翻译等流程无缝整合,为用户提供了一个图形化、可定制的完整解决方案。文章深入解析了其基于TTS与RVC(Retrieval-based Voice Convers

weixin_42676876的博客 339

Tenth season third episode,Ross is going to be so tan(black)??????

[Joey and Rachel's apartment] Chandler: So, you and Rachel tonight, huh? Joey: Yeah. It's actually our first official date Chandler: Wow! So tonight may be the night! You're nervous? Joey: Naa, no. This is the part I'm actually good at. Chandler: What must

xiyangxia666hui的博客 1705

薛定谔虚拟筛选实战:如何用PDB文件快速构建受体格点(避坑指南)

本文提供了薛定谔虚拟筛选实战指南,聚焦于如何从PDB文件快速、精准地构建受体格点。文章详细解析了可变残基的理性处理策略、基于配体尺寸的盒子量化设置方法,并分享了高级约束与排除体积的实战技巧,旨在帮助用户避开常见陷阱,提升虚拟筛选的成功率与效率。

weixin_28419039的博客 252

保姆级教程:IAR for STM8 3.11版本安装与破解全流程(附资源包)

本文提供IAR for STM8 3.11版本的详细安装与破解教程,涵盖环境准备、主程序安装、许可配置及实战验证全流程。针对新手常见问题,如许可证报错、驱动安装失败等,给出了具体解决方案,帮助开发者快速搭建稳定的STM8开发环境。

study的专栏 951

Porn star goes Down Under

JENNA Jameson, dubbed the Queen of Porn, is planning a visit to Australia after falling for the romantic and flowing couture of Perth designer Aurelio Costarella.Better known as Ray, the designer co

news 3万+

Cocos Creator实战:5步搞定棋牌游戏大厅场景开发(附完整代码)

本文详细介绍了使用Cocos Creator 3.8开发棋牌游戏大厅的5个关键步骤,包括工程配置、动态UI系统实现、核心交互功能开发、性能优化及调试发布技巧。通过模块化代码和实战案例,帮助开发者快速构建高交互性的棋牌游戏大厅,提升用户留存率。

weixin_29002209的博客 353

手机视频文件格式解析之 3GP/MP4

1. 概述  流行的文件格式背后都有大公司的支持。FLV得益于ADOBE公司推动的网络视频分享风潮,而AVI则是MICROSOFT首创的RIFF即视频和音频交织在一起同步播放。 3GP/MP4是APPLE提出并得到ISO标准支持作为NOKIA等手机的默认视频格式。3GP是MP4格式在手机上的简化版。MP4的codec组合一般是mpeg4 + AAC, 3GP则按版本演进分为3gpp r5(h.263/mpeg4 + AMR-NB/AMR WB), 3gpp r6(增加h.264视频和aacPlus音频支持)

naonaodog的专栏 1296

广义标签多伯努利滤波器(GLMB):多目标跟踪中的动态身份维护理论与算法解析

目标集表示Xx1l1x2l2xNlNX{(x1​l1​x2​l2​xN​lN​)}xi∈Rdxi​∈Rd为目标状态(如位置、速度),li∈Lli​∈L为唯一标签(可数无限集,如自然数序列),N 为目标数(允许N0N=0N0,即空集)。GLMB 通过广义化标签多伯努利分布,将多目标跟踪从 “状态估计” 提升至 “动态身份 - 状态联合建模”,成为复杂场景下精准跟踪的核心技术。

qq_44965657的博客 1597

代码实现 —— 基于 STM32 的可见光通信系统课程设计

基于STM32F103ZET6,源码如需移植,需要修改定时器捕获通道引脚,及定时器,如果你也有这个课设任务,希望对你有所帮助。

不善挽留 1万+

阿甘的巧克力盒子: 手机视频文件格式解析之 3GP/MP4

作者: k歌之王     2009-08-23   前言:做完了手机全能播放器的项目, 又要告别几个月来并肩作战,即将去北京发展的Manager zhu。准备把做过的3GP/FLV/AVI格式整理一遍, 算是对几个月辛苦成果的总结, 也为后来者提供一些参考。 1. 概述  流行的文件格式背后都有大公司的支持。FLV得益于ADOBE公司推动的网络视频分享风潮,而AVI则是MI

移动视频探索者 5666

SAP ATP可用性检查简介

系统中建立此单时,SAP就会做一个所谓的检查,检查一下我们预先设定的考虑因素,能否满足客户的要求,什么时候可以满足,这就是可用性检查的功能。2、同样的在创建生产订单的时候也有ATP的检查,生产订单是100PC,要求2024-07-01生产完成,系统就会根据配置进行物料的可用性的检查,看物料是否能够满足生产同时能够满足交期。14: 表示相关预留的选项,与10的区别在于,10是一般是表示我们用MB21建立的,而14是表示由于相关预留,即此预留是来自于其他物料,如生产订单所产生的预留。

我小时候很黑的博客 3375

视频文件格式解析之 3GP/MP4 .

1. 概述 流行的文件格式背后都有大公司的支持。FLV得益于ADOBE公司推动的网络视频分享风潮,而AVI则是MICROSOFT首创的RIFF即视频和音频交 织在一起同步播放。 3GP/MP4是APPLE提出并得到ISO标准支持作为NOKIA等手机的默认视频格式。3GP是MP4格式在手机上的简化版。MP4的codec组合 一般是mpeg4 + AAC, 3GP则按版本演进分为3gpp r5(h.

康林工作室 4936

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

3GP/MP4 视频文件格式解析及其播放原理(转)

视频文件格式解析之 3GP/MP4 1. 概述 流行的文件格式背后都有大公司的支持。FLV得益于ADOBE公司推动的网络视频分享风潮,而AVI则是MICROSOFT首创的RIFF即视频和音频交 织在一起同步播放。 3GP/MP4是APPLE提出并得到ISO标准支持作为NOKIA等手机的默认视频格式。3GP是MP4格式在手机上的简化版。MP4的codec组合 一般是mpeg4 + AAC

6861

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

解决方案:Untrunc视频修复工具 - 快速修复损坏MP4/MOV文件的实战指南

视频文件意外损坏或截断是许多用户经常遇到的痛点,珍贵的回忆可能因设备故障、传输中断或存储错误而无法播放。Untrunc正是解决这类问题的专业视频修复工具,能够智能修复损坏的MP4、MOV、3GP等视频格式,通过分析完整参考视频重建损坏文件的元数据和帧结构。 ## 问题场景:视频损坏的常见情况 你是否遇到过以下情况?使用手机或相机拍摄的视频突然无法播放,显示"文件损坏"或"格式不支持";从网络下

gitblog_00397的博客 419

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

终极视频修复指南:如何用Untrunc免费恢复损坏的MP4/MOV文件

你是否曾经遇到过珍贵的家庭视频突然无法播放?或是重要的会议录像意外中断?**视频文件损坏**是每个数码用户都可能面临的噩梦,但好消息是,现在有一个强大的开源解决方案——Untrunc。这款专注于**视频恢复**的工具能够智能分析视频结构,从损坏的MP4、MOV、3GP文件中抢救出宝贵内容。无论你是普通用户抢救家庭回忆,还是专业人士处理工作素材,这款**免费视频修复工具**都能提供可靠解决方案。

gitblog_00513的博客 171

如何用Untrunc高效修复损坏的MP4/MOV视频文件:免费开源解决方案

当珍贵的婚礼录像、重要的会议记录或孩子的成长视频突然无法播放时,那种无助感令人焦虑。Untrunc作为一款开源免费的**视频修复工具**,专门解决MP4、MOV、3GP等格式的视频文件损坏问题,通过智能算法分析正常视频的结构信息,重建损坏视频的索引系统,让原本无法播放的视频重获新生。 ## 🎯 视频损坏的三大常见场景 ### 意外断电导致拍摄中断 想象一下:你在录制孩子的毕业典礼,手机突然没

gitblog_00233的博客 656
上一篇: MPEG2 PTS如何转为DirectShow的Reference Time
下一篇: cookie, sessionStorage and localStorage 之间的区别 与定义; 应用;
bamboolsu
博客等级 码龄22年 200粉丝 394原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值