视频格式
一个完整的视频文件,包含音频,视频和基础元信息,常见的视频文件如
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