视频格式
一个完整的视频文件,包含音频,视频和基础元信息,常见的视频文件如
mp4,mov,flv实际是一个容器封装,里面包含了音视频等信息。
比如将一个
Xvid视频编码的文件和一个MP3音频编码文件按照AVI封装标准封装后,就得到一个AVI后缀的视频文件,因此视频的本质是:
- 设置需要的视频编码
- 设置需要的音频编码
- 选择需要的容器封装
一个完整的视频至少包括了上面的三个步骤
常见的视频封装模式如图:

视频流
- 编码格式: 有
h263,H264,H265,Xvid(MPEG4),RM(RMVB),编码标准有两大系统 MPEG 和 ITU-T,它们实际是两个组织制定的标准,国际电联(ITU-T)制定的标准有H.261,H.263,H.263+,H.264等,而国际标准化组织(ISO)制定的标准有MPEG-1,MPEG-2,MPGE-4等 - 帧率:帧率也被称为
FPS(Frames per second),是指每秒刷新的图片的帧数,越高的帧率可以得到更流畅逼真的画面,帧率越高对资源的消耗也就越高。 - 码率: 是指视频文件在单位时间使用的数据量,通俗的说法就是取样率,是视频编码中画面质量控制中最重要的部分,一般用的单位是
kb/s或者Mb/s。通常来说同样分辨率下,视频文件的码率越大,压缩比就越小,画面质量就越好。通常说的码率,是指的视频文件中音频和视频码率的总和。 - 分辨率: 视频分辨率是指视频成像产品所成图像的大小或尺寸,常见分辨率有:
1024*768,1920*1080等,前者为图像的长度,后者为图像的宽度,单位是像素点
音频流
- 编码格式:有
MP3,AAC,DTS,ACE(DVD专用音频编码)等,音质的比较:ACC+>MP3PRO>ACC>RealAudio>WMA>MP3
传输协议
RTMP
Real Time Messaging Protocol实时消息传送协议基于TCP来实现,每个时刻的数据收到后立即转发,一般延迟在1-3s左右,由Adobe公司研发
HLS
HTTP Live Streaming由苹果研发的基于Http的流媒体传输协议,可以实现流媒体的直播和点播。HLS的点播,基本上就是常见的分段HTTP点播,不同之处在于其分段非常小,基本原理就是将视频切成小的分片(TS),并建立索引(m3u8)。相比于其它的传输协议,HLS最大的不同是用点播的方式实现了直播,HLS协议在服务端将直播数据流储存为连续的很短时常的媒体文件,而客户端则不断下载并播放这些小文件,这样来实现直播。由于数据通过HTTP传输,所以完全不用考虑防火墙和代理的问题,而且分段文件的时常很短,可以很快的选择和切换码率,以适应不同条件下的播放。不过这样也导致HLS的延迟会比其它协议高一些,一般在10s以上。
FLV
基于HTTP长链接,同RTMP一样,每个时刻的数据收到后立刻转发,只不过使用的是HTTP协议,一般延迟在1-3s