流媒体知识整理

Apr 23, 2019


视频格式

一个完整的视频文件,包含音频,视频和基础元信息,常见的视频文件如mp4movflv实际是一个容器封装,里面包含了音视频等信息。

比如将一个Xvid视频编码的文件和一个MP3音频编码文件按照AVI封装标准封装后,就得到一个AVI后缀的视频文件,因此视频的本质是:

  1. 设置需要的视频编码
  2. 设置需要的音频编码
  3. 选择需要的容器封装

一个完整的视频至少包括了上面的三个步骤

常见的视频封装模式如图:

vcontainer

视频流

  1. 编码格式:h263H264H265Xvid(MPEG4)RM(RMVB),编码标准有两大系统 MPEGITU-T,它们实际是两个组织制定的标准,国际电联(ITU-T)制定的标准有H.261H.263H.263+H.264等,而国际标准化组织(ISO)制定的标准有MPEG-1MPEG-2MPGE-4
  2. 帧率:帧率也被称为FPS(Frames per second),是指每秒刷新的图片的帧数,越高的帧率可以得到更流畅逼真的画面,帧率越高对资源的消耗也就越高。
  3. 码率: 是指视频文件在单位时间使用的数据量,通俗的说法就是取样率,是视频编码中画面质量控制中最重要的部分,一般用的单位是kb/s或者Mb/s。通常来说同样分辨率下,视频文件的码率越大,压缩比就越小,画面质量就越好。通常说的码率,是指的视频文件中音频和视频码率的总和。
  4. 分辨率: 视频分辨率是指视频成像产品所成图像的大小或尺寸,常见分辨率有:1024*7681920*1080等,前者为图像的长度,后者为图像的宽度,单位是像素点

音频流

  1. 编码格式:有MP3AACDTSACE(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

参考文章

音视频&流媒体


上一篇博客:Go语言笔记