多媒体视频文件组合方式

多媒体视频文件组合方式

一、视频的封装:

音视频文件 = (音频流+视频流)*同步信息;

封装格式:文件扩展名----.mp4/.avi/.flv/.mkv等;

实现方式:音频信号和视频信号通过某种标准格式进行服用,生成封装格式;

二、视频文件常见封装格式及对应的音视频流格式:

一个完整的多媒体文件是由音频和视频两部分组成的,H264Xvid等就是视频编码格式,MP3AAC等就是音频编码格式,字幕文件只是附加文件。

要将视频编码和音频编码打包成一个完整的多媒体文件,可以有不同的方式,这种方式便是所谓的封装方式,不同的封装方式有不同的后缀。由于有些封装方式具有很强的灵活性,它可以把各种不同的音视频文件打包成一个文件,因此会出现这么一种情况,虽然文件后缀是相同的,但有些文件可以正常播放而有些却不能播放,毕竟任何一种播放软件都不是万能的。部分先进的封装方式还可以同时封装多个音频编码文件,甚至同时封装进字幕文件,如MKV MKV文件可以做到一个文件包括多种语种发音,多语字幕以适合不同的人观看)封装方式。

封装格式

视频流编码格式

音频流编码格式

AVI

Xvid

MP3

AVI

Divx

MP3

Matroska(后缀就是MKV

Xvid

MP3

Matroska(后缀就是MKV

Xvid

AAC

Matroska(后缀就是MKV

H264

AAC

MP4

Xvid

MP3

MP4

H264

AAC

3GP

H.263

AAC

flv

H.263

AAC

f4v

H.264

AAC

1:多媒体视频文件组合方式

封装格式(也叫容器):所谓封装格式就是将已经编码压缩好的视频轨和音频轨按照一定的格式放到一个文件中,就是说仅仅是一个外壳,或者把它当成一个放视频轨和音频轨的文件夹也可以。说通俗点,视频流媒体相当于饭,而音频流媒体相当于菜,封装格式是选择什么样的容器(碗或锅),用来盛放某种视频流和音频流的组合。

封装容器

视频流编码格式

音频流编码格式

Flash Player

HTML5video控件

PCplayer

手机端player

ios player

AVI

Xvid

MP3

不支持

不支持

支持

不支持

不支持

AVI

Divx

MP3

不支持

不支持

支持

不支持

不支持

MKV

Xvid

MP3

不支持

不支持

支持

不支持

不支持

MKV

Xvid

AAC

不支持

不支持

支持

不支持

不支持

MKV

H.264

AAC

不支持

不支持

支持

不支持

不支持

MP4

H.264

AAC

支持

支持

支持

支持

不支持

3GP

H.263

AAC

不支持

不支持

支持

不支持

不支持

3GP

H.264

AAC

支持

不支持

支持

不支持

不支持

FLV

Sorenson Spark

MP3

支持

不支持

支持

不支持

不支持

FLV

On2 VP6

MP3

支持

不支持

支持

不支持

不支持

FLV

H.264

AAC

支持

不支持

支持

不支持

不支持

TS

H.264

AAC

不支持

支持

支持

不支持

支持

2 不同封装格式的视频播放参照表

从上表的分析结果能够看到,大部分的播放器产品对于H.264+AAC的MP4编码格式支持最好,但是MP4也有很多的缺点,比如视频header很大,影响在线视频网站的初次加载时间,为了降低头部体积,需要进行视频本身的物理分段等等,所以很多在线视频网站在带宽耗费的压力下,主要选择的是adobe公司提供的FLV或F4V, FLV是流媒体封装格式,可将其数据看为二进制字节流,其字节编码格式为BigEndianUnicode。总体上看,FLV包括文件头(File Header)和文件体(File Body)两部分,其中文件体由一系列的Tag及Tag Size对组成。

 

所以,为了能够提供各类设备的在线视频播放需求,对于在线视频流媒体服务,提出了很多需求,对于早期建立的视频网站(土豆,优酷,ku6等)都只提供一种视频流媒体格式(FLV)的支持,我们称之为单一的流媒体服务架构,

 

 

1、码流总体结构:

h264的功能分为两层,视频编码层(VCL)和网络提取层(NAL)。H.264 的编码视频序列包括一系列的NAL 单元,每个NAL 单元包含一个RBSP。一个原始的H.264 NALU 单元常由 [StartCode] [NALU Header] [NALU Payload] 三部分组成,其中 Start Code 用于标示这是一个NALU 单元的开始,必须是"00 00 00 01" 或"00 00 01"。

 https://img-blog.youkuaiyun.com/20140720115321312?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hlbmNob25nXzIxOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

其中RBPS有分为几种类型:

https://img-blog.youkuaiyun.com/20140720115332294?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hlbmNob25nXzIxOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

 

NAL的解码单元的流程如下:

https://img-blog.youkuaiyun.com/20140720115357036?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hlbmNob25nXzIxOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

 

2、 NAL Header

占一个字节,由三部分组成forbidden_bit(1bit),nal_reference_bit(2bits)(优先级),nal_unit_type(5bits)(类型)。

forbidden_bit:禁止位。

nal_reference_bit当前NAL的优先级,值越大,该NAL越重要。

nal_unit_type :NAL类型。参见下表

https://img-blog.youkuaiyun.com/20140720115422511?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hlbmNob25nXzIxOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

 

几个例子:

https://img-blog.youkuaiyun.com/20140720115202062?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hlbmNob25nXzIxOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

 

 

封装格式的主要作用是把视频码流和音频码流按照一定的格式存储在一个文件中。现如今流行的封装格式如下表所示:

主要封装格式一览

名称

推出机构

流媒体

支持的视频编码

支持的音频编码

目前使用领域

AVI

Microsoft Inc.

不支持

几乎所有格式

几乎所有格式

BT下载影视

MP4

MPEG

支持

MPEG-2, MPEG-4, H.264, H.263等

AAC, MPEG-1 Layers I, II, III, AC-3等

互联网视频网站

TS

MPEG

支持

MPEG-1, MPEG-2, MPEG-4, H.264

MPEG-1 Layers I, II, III, AAC,

IPTV,数字电视

FLV

Adobe Inc.

支持

Sorenson, VP6, H.264

MP3, ADPCM, Linear PCM, AAC等

互联网视频网站

MKV

CoreCodec Inc.

支持

几乎所有格式

几乎所有格式

互联网视频网站

RMVB

Real Networks Inc.

支持

RealVideo 8, 9, 10

AAC, Cook Codec, RealAudio Lossless

BT下载影视

由表可见,除了AVI之外,其他封装格式都支持流媒体,即可以“边下边播”。有些格式更“万能”一些,支持的视音频编码标准多一些,比如MKV。而有些格式则支持的相对比较少,比如说RMVB。

 

见格式

编辑

AVI:微软在90年代初创立的封装标准,是当时为对抗quicktime格式(mov)而推出的,只能支持固定CBR恒定比特率编码的声音文件。

FLV:针对于h.263家族的格式。

MKV:万能封装器,有良好的兼容和跨平台性、纠错性,可带 外挂字幕

MOVMOVQuicktime封装。

MP4:主要应用于mpeg4的封装

RM/RMVBReal Video,由RealNetworks开发的应用于rmvbrm

TS/PSPS封装只能在HDDVD原版。

WMV:微软推出的,作为市场竞争。

封装格式与编码方式的对应

编辑

AVI:可用MPEG-2, DIVX, XVID, WMV3, WMV4, WMV9, H.264

WMV:可用WMV3, WMV4, WMV9

RM/RMVB:可用RV40, RV50, RV60, RM8, RM9, RM10

MOV:可用MPEG-2, MPEG4-ASP(XVID), H.264

MKV:可用所有视频编码方案

 

1RTMP协议

1)是流媒体协议。

2RTMP协议是 Adobe 的私有协议,未完全公开。

3RTMP协议一般传输的是 flvf4v 格式流。

4RTMP一般在 TCP 1个通道上传输命令和数据。

 

2RTSP协议

1)是流媒体协议。

2RTSP协议是共有协议,并有专门机构做维护。.

3RTSP协议一般传输的是 tsmp4 格式的流。

4RTSP传输一般需要 2-3 个通道,命令和数据通道分离。

 

3HTTP协议

1)不是是流媒体协议。

2HTTP协议是共有协议,并有专门机构做维护。 

3HTTP协议没有特定的传输流。 

4HTTP传输一般需要 2-3 个通道,命令和数据通道分离。

转码缺点:

由于音视频转换格式过程复杂、耗时较多,而且还会引起音视频质量下降,所以对不同的音视频文件格式选择不同的流媒体传输协议比较好。

 

一、视频的解码过程:

视频文件是将已经编码压缩好的视频流和音频流按照一定的格式放到一个文件进行封装的,(比如.avi,.flv,.mkv,.mp4就是视频文件的封装格式)。要想播放这些视频,就要将音视频压缩码流从这些封装格式文件中获取出来,然后再进行解压、解码成另外一种格式的文件(比如:最原始的音频pcm编码格式的语音采样数据;原始的YUV/RGB编码格式的视频像素数据),再通过变换还原成为声音信号或视频,通过音响或显示器播放。

以下为.FLV格式的视频文件解码流程图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值