美文网首页
2.多媒体封装格式(容器)介绍

2.多媒体封装格式(容器)介绍

作者: 繁天涯 | 来源:发表于2017-12-14 16:22 被阅读0次

封装格式:在观看已经下载好的视频的时候,经常会看到一些视频文件后缀,如.mp4,.flv,.avi,.mkv等等,这些扩展名就可以简单理解为视频的封装格式或者视频的容器格式。

封装:所谓视频的封装,就是将已经编码好的音频,视频,还可能有字幕,脚本之类的文件按照一定的规范放到一起,形成一个封装格式的文件(封装和编码是两个不同的概念,封装是在“视频流水线”上,编码以后的一个过程,一个容器可以封装多种编码格式的文件,但是只支持特定的编码格式)。封装格式有很多,比如flv,mp4,ts,avi ,mkv等等。

几种常见的封装格式:

1.TS封装格式

        TS流最早应用于数字电视领域,视频格式主要是mpeg2。后来,苹果公司发明HLS协议也是基于TS文件的。hls流媒体视频编码的主要格式为h264/mpeg4,音频为aac/mp3。

        TS文件分为三层:ts层(如下图)pes(Packet Elemental Stream)层,es层(Elementary Stream)。

       es层就是音视频数据,pes层是在音视频数据上加了时间戳等对数据帧的说明信息,ts层是在pes层上加入了数据流识别和传输的必要信息。

ts流结构

由上图可以看出,ts流是由一个个固定大小的包组成的,每个packet大小固定188个字节。

在这里说一下TS流的生产,就不再画深一层的结构图了,深一层结构图自行脑补:

TS流的形成过程:

    1、 将原始音视频数据压缩之后,压缩结果组成一个基本码流(ES)。

    2、 对ES(基本码流)进行打包形成PES。

    3、 在PES包中加入时间戳信息(PTS/DTS)。

    4、 将PES包内容分配到一系列固定长度的传输包(TS Packet)中。

    5、 在传输包中加入定时信息(PCR)。

    6、 在传输包中加入节目专用信息(PSI) 。

    7、 连续输出传输包形成具有恒定比特率的MPEG-TS流。

2.MP4封装格式

     MP4,全称MPEG-4 Part 14,是一种使用MPEG-4的多媒体电脑档案格式,其基本存储结构是box,box可以理解为数据对象块,所有数据都必须保存在box中,而且必须包含一个File Type box(ftpy),作为MP4格式的标志并包含关于文件的一些信息。以下是MP4文件的结构树:

MP4文件结构树

ftpy:通常放在文件的开始,作为MP4格式的标志包含关于文件的一些信息

moov:它是一种container box,子box包含了媒体的metadata信息

mdat:包含MP4文件的媒体数据

free:“free”中的内容是无关紧要的,可以被忽略。该box被删除后,不会对播放产生任何影响,只能是size+type,这样组成8个字节的头数据

mvhd:一般作为“moov”的第一个子box出现,相当于整个moov box的“header”

概念:

track表示一些sample的集合,对于媒体数据来说,track表示一个视频或音频序列。

hint track这个特殊的track并不包含媒体数据,而是包含了一些将其他数据track打包成流媒体的指示信息

sample对于非hint track来说,video sample即为一帧视频,或一组连续视频帧,audio sample即为一段连续的压缩音频,它们统称sample。对于hint track,sample定义一个或多个流媒体包的格式。

sample table指明sampe时序和物理布局的表。

chunk一个track的几个sample组成的单元。

MP4文件结构:

1、 文件,由很多Box和FullBox组成。

2、 Box,每一个Box由Header和Data组成。

3、 FullBox,是Box的扩展,Box结构的基础上在Header中添加8bits version和24bits flags。

4、 Header,包括了整个Box的长度size和类型type。当size==0时,代表这是文件里最后一个Box;当size==1时,意味着Box长度须要很多其它bits来描写叙述,在后面会定义一个64bits的largesize描写叙述Box的长度;当type是uuid时,代表Box中的数据是用户自己定义扩展类型。

5、 Data,是Box的实际数据,可以是纯数据也可以是很多其它的子Boxes。

6、 当一个Box的Data中是一系列子Box时,这个Box又可成为Container Box。

相关文章

  • 2.多媒体封装格式(容器)介绍

    封装格式:在观看已经下载好的视频的时候,经常会看到一些视频文件后缀,如.mp4,.flv,.avi,.mkv等等,...

  • 2018-07-27 FFmpeg基本组成

    FFmpeg的基本组成 libavformat:包含多种多媒体容器格式的封装、解封装工具 libavcodec:用...

  • FFmpeg小白学习记录(六)视频格式转换流程

    视频格式转换流程 视频格式转换主要分为两种类型:转封装和转码 转封装:多媒体文件是一个容器,转封装相当于容器内的物...

  • Matroska封装格式

    一:介绍 Matroska是一种新的多媒体封装格式,它可将多种不同编码的视频及16条以上不同格式的音频和不同语言的...

  • FFmpeg音视频解封装格式

    一、什么是封装格式 封装格式也称为容器,用于打包音频、视频以及字幕等等,比如常见的容器有 MP4、MOV、WMV、...

  • 28_FFmpeg音视频解封装格式

    一、什么是封装格式 封装格式也称为容器,用于打包音频、视频以及字幕等等,比如常见的容器有MP4、MOV、WMV、F...

  • 90-64RMVB

    RealMedia可变比特率(RMVB)是RealNetworks公司开发的RealMedia多媒体数字容器格式的...

  • FFmpeg视频解码播放

    一、FFmpeg 相关库简介 库介绍avcodec音视频编解码核心库avformat音视频容器格式的封装和解析av...

  • 10 JAVE 所支持的容器格式

    JAVE内置的ffmpeg可执行文件支持以下多媒体容器格式: 解码 描述格式4xm4X Technologies格...

  • 视频基础一

    视频容器 视频容器(又称视频文件格式)就是用来装载多媒体数据流(包含:视频流、音频流和字幕流)的文件格式,一般包含...

网友评论

      本文标题:2.多媒体封装格式(容器)介绍

      本文链接:https://www.haomeiwen.com/subject/axpkwxtx.html