mp4文件格式之fragment mp4

目前网络上对mp4文件格式的总结已经相当多了,我就不在这里抄别人总结的东西了,想入门的话百度一下会有许多这方面的文章。这里介绍一下其他文章中很少涉及的一种mp4文件结构,即fragment mp4,也有称之为ismv文件的。

想真正了解mp4文件格式的话,有一个开源工具项目可以学习:mp4 explorer。一方面,这个工具可以按MPEG-4标准去解析mp4文件,直观上帮助大家去看mp4文件的格式。另一方面,认真学习其代码,就可以了解mp4文件是如何被存取和访问的,对致力于底层研究的同学是个福音。其官网:http://mp4explorer.codeplex.com/

本文介绍的一种mp4文件格式称之谓fragmented mp4,有简称为FMP4。其文件格式与通常大家见到的mp4文件不同。下面通过两张图片来对比一下。

图1  普通MP4文件物理结构

图2  fragmented mp4文件结构

下面分析一下两种格式的优缺点。

对于第一种格式,整个mp4文件的的meta数据都在文件头,所有媒体数据为整体一块。当文件比较大的时候,meta数据就比较大。这样对mp4文件的本地播放是没有问题。但对于一些视频播放网站而言,用户的播放器必须下载全meta数据才能开始播放,这就意味着用户的缓冲时间将因为mp4文件的存储结构而延长。目前一种解决方法是将大的mp4文件切成物理分离的多段,使得每段的meta都比较小,从而在一定程度上减少缓冲时间。

对于第二种格式,mp4文件被分成多个frag分片,而原来的meta数据大大变小,且没个frag都可以单独索引、传输和播放,这样就可以解决mp4不能流式传输播放的问题。对用户体验比较好。然而目前这种格式并不被多数解码器完整支持,部分播放器加载文件时间过长,而且浏览器内嵌播放器也可能不支持播放。

微软在08奥运会之前推出了此项解决方案,并应用于NBC视频直播,具体技术可以参考下面的链接:http://alexzambelli.com/blog/2009/02/10/smooth-streaming-architecture/.在其中也可以找到对mp4文件中每个box 的一些介绍。

时间: 2024-10-29 02:01:19

mp4文件格式之fragment mp4的相关文章

MP4文件格式

MP4文件格式详解(ISO-14496-12/14) Author:Pirate Leo Email:[email protected] 一.基本概念 1. 文件,由许多Box和FullBox组成. 2. Box,每个Box由Header和Data组成. 3. FullBox,是Box的扩展,Box结构的基础上在Header中增加8bits version和24bits flags. 4. Header,包含了整个Box的长度size和类型type.当size==0时,代表这是文件中最后一个Bo

MP4文件格式具体解释——结构概述

MP4文件格式具体解释(ISO-14496-12/14) Author:Pirate Leo Email:[email protected] 一.基本概念 1. 文件,由很多Box和FullBox组成. 2. Box,每一个Box由Header和Data组成. 3. FullBox,是Box的扩展,Box结构的基础上在Header中添加8bits version和24bits flags. 4. Header,包括了整个Box的长度size和类型type.当size==0时,代表这是文件里最后一

mp4文件格式解析

目前MP4的概念被炒得很火,也很乱.最开始MP4指的是音频(MP3的升级版),即MPEG-2 AAC标准.随后MP4概念被转移到视频上,对应的是MPEG-4标准.而现在我们流行的叫法,多半是指能播放MPEG-4标准编码格式视频的播放器.但是这篇文章介绍的内容跟上面这些都无关,我们要讨论的是MP4文件封装格式,对应的标准为ISO/IEC 14496-12,即信息技术 视听对象编码的第12部分:ISO 基本媒体文件格式(Information technology Coding of audio-v

MP4文件格式的解析

MP4文件格式的解析,以及MP4文件的分割算法 mp4应该算是一种比较复杂的媒体格式了,起源于QuickTime.以前研究的时候就花了一番的功夫,尤其是如何把它完美的融入到视频点播应用中,更是费尽了心思,主要问题是处理mp4文件庞大的"媒体头".当然,流媒体点播也可以采用flv格式来做,flv也可以封装H.264视频数据的,不过Adobe却不推荐这么做,人家说毕竟mp4才是H.264最佳的存储格式嘛. 这几天整理并重构了一下mp4文件的解析程序,融合了分解与合并的程序,以前是c语言写的

mp4文件格式解析二

目前MP4的概念被炒得很火,也很乱.最开始MP4指的是音频(MP3的升级版),即MPEG-2 AAC标准.随后MP4概念被转移到视频上,对应的是MPEG-4标准.而现在我们流行的叫法,多半是指能播放MPEG-4标准编码格式视频的播放器.但是这篇文章介绍的内容跟上面这些都无关,我们要讨论的是MP4文件封装格式,对应的标准为ISO/IEC 14496-12,即信息技术 视听对象编码的第12部分:ISO 基本媒体文件格式(Information technology Coding of audio-v

[转]【流媒體】H264—MP4格式及在MP4文件中提取H264的SPS、PPS及码流

[流媒體]H264—MP4格式及在MP4文件中提取H264的SPS.PPS及码流 SkySeraph Apr 1st 2012  Email:[email protected].com 一.MP4格式基本概念 MP4格式对应标准MPEG-4标准(ISO/IEC14496) 二.MP4封装格式核心概念 1  MP4封装格式对应标准为 ISO/IEC 14496-12(信息技术 视听对象编码的第12部分: ISO 基本媒体文件格式/Information technology Coding of a

MP4文件格式的解析,以及MP4文件的分割算法

mp4应该算是一种比较复杂的媒体格式了,起源于QuickTime.以前研究的时候就花了一番的功夫,尤其是如何把它完美的融入到视频点播应用中,更是费尽了心思,主要问题是处理mp4文件庞大的"媒体头".当然,流媒体点播也可以采用flv格式来做,flv也可以封装H.264视频数据的,不过Adobe却不推荐这么做,人家说毕竟mp4才是H.264最佳的存储格式嘛. 这几天整理并重构了一下mp4文件的解析程序,融合了分解与合并的程序,以前是c语言写的,应用在linux上运行的服务器程序上,现在改成

MP4文件格式分析(附源码)

MP4格式分析                   MP4(MPEG-4 Part 14)是一种常见的多媒体容器格式,它是在"ISO/IEC 14496-14"标准文件中定义的,属于MPEG-4的一部分,是"ISO/IEC 14496-12(MPEG-4 Part 12 ISO base media file format)"标准中所定义的媒体格式的一种实现,后者定义了一种通用的媒体文件结构标准.MP4是一种描述较为全面的容器格式,被认为可以在其中嵌入任何形式的数据

FFMPEG+SDL2.0流媒体开发3---简易MP4视频播放器,提取MP4的H264视频序列解码并且显示

简介 之前写了一遍提取MP4中的音视频并且解码,这一篇引入SDL2.0来显示解码后的视频序列 实现一个简易的 视频播放器. 我这里用的FFMPEG和SDL2.0都是最新版的 可能网上的资料不是很多,API接口也变了很多,不过大体的思路还是一样的. 分析几个FFMPEG函数 在这之前我们分析几个代码中可能引起疑问的FFMPEG几个函数的源代码,我已经尽我的能力添加了注释,因为实在没有文档可能有的地方也不是很详尽  不过大体还是能看懂的 av_image_alloc (分配图片缓冲区) 我们在FFM