FFmpeg的视频封装格式
FFmpeg支持很多封装格式,包括MP4、FLV、MKV、TS 等视频封装格式、MP3、AAC等音频封装格式以及RTMP、RTSP、HLS等网络协议封装格式。以下我们简单介绍两种比较流行的使用.
1. MP4的相关学习
1.1 封装格式
MP4 封装格式基本上可以认为是日常生活和工作中最常见的视频文件格式,主要是由于其广泛的适用性,不仅在PC端(windows、mac、linux)支持的非常好,而且在移动端(Android、i0S)也能流畅播放。
1.2 格式标准
MP4 格式标准为ISO-14496 Part 12和ISO-14496 Part 14,具体特征如下:
- MP4 文件由许多Box和FullBox。
- FullBox是 Box 的扩展,在Header中增加了8位version信息和24位的flags信息。
- 每个Box由Header和 Data 两部分组成。
- Header中包含了整个Box的长度大小(size)和类型(type).
- Data中包含了实际的数据,可以是纯数据,也可以是子Box。当Box中的 Data是一系列子Box时,这个Box又被称为Container(容器)。
1.3 关键BOX的介绍
1.3.1 MP4 ftyp Box
ftyp Box,一般位于文件开始位置,其中包含了MP4视频文件的类型、版本、兼容协议等信息。
1.3.2 MP4 mdat Box
mdat Box,用来存放媒体文件的实际数据内容。
2. FLV的相关学习
2.1 FLV的定义
FLV 是FLASH VIDEO的简称,FLV流媒体格式是随着Flash MX的推出发展而来的视频格式。由于它形成的文件极小、加载速度极快,使得网络观看视频文件成为可能,它的出现有效地解决了视频文件导入Flash后,使导出的SWF文件体积庞大,不能在网络上很好的使用等问题。
2.2 FLV的使用优势
FLV作为一种新兴的网络视频格式,能得到众多的网站支持并非偶然。除了FLV视频格式本身占有率低、视频质量良好、体积小等特点适合网络发展外,丰富、多样的资源也是FLV视频格式统一在线播放视频格式的一个重要因素。从最新的变形金刚到越狱再到各项体育节目,甚至于网友制作的自拍视频等都可以在网络中轻而易举的找到。
在互联网上提供FLV视频的有两类网站,一种是专门的视频分享网站如美国的YouTube网站、国内的六间房、土豆网等。另一种是门户网站提供了视频播客的板块,提供了自己的视频频道,如新浪视频播客等,也是使用FLV格式的视频。
2.3 FLV不同的使用方式
2.3.1 本地方式
作为一个独立的FLV文件。虽然Flash视频文件通常是交付使用的Flash Player的控制, FLV文件本身是全功能对自己的和可以发挥的或转换为其他格式,由本地存储如硬盘或CD上.
2.3.2 嵌入式swf
逐步通过HTTP下载(支持在Flash Player 7和更高版本)。此方法使用的ActionScript ,包括一外部托管的Flash视频文件的客户端播放。渐进式下载有几个优势,包括缓冲,使用通用的HTTP服务器,并有能力再用一个单一的SWF Player的多重FLASH视频源。Flash Player 8中包括支持随机存取内部的视频文件使用部分下载功能的HTTP ,有时这是被称为流。不过,不同的流使用rtmp ,HTTP的“分流” ,不支持实时广播。流通过HTTP需要自订播放器和注射液的具体Flash视频中继载有确切的出发位置在字节和时间码的每一个关键帧。使用此特定的信息,自定义的Flash视频播放器,可要求任何部分的Flash视频文件,开始在指定的关键帧。
2.3.2 rtmp方式
流通过rtmp到Flash Player的使用Flash媒体服务器(以前称为闪光通信服务器),风险投资, electroserver , wowza Pro或开放原始码red5服务器。