网易视频云:流媒体服务器原理和架构解析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

网易视频云:流媒体服务器原理和架构解析

一个完整的多媒体文件是由音频和视频两部分组成的,H264、Xvid等就是视频编码格式,MP3、AAC等就是音频编码格式,字幕文件只是附加文件。目前大部分的播放器产品对于H.264 + AAC的MP4编码格式支持最好,但是MP4也有很多的缺点,比如视频header很大,影响在线视频网站的初次加载时间。

为了降低头部体积,需要进行视频本身的物理分段等等。对MPEG2-TS格式视频文件进行物理切片,分成一小段,这种方式被Apple公司的HTTP Live Streaming (HLS)技术采用。另外一种是使用Fragmented MP4文件格式,这是一种文件内部的逻辑分割方式,而视频文件还是完整的,这种技术被Microsoft Smooth Streaming和Adobe HTTP Dynamic Streaming采用。很多在线视频网站在带宽耗费的压力下,主要选择的是adobe公司提供的FLV或F4V,FLV是流媒体封装格式,可将其数据看为二进制字节流。总体上看,FLV包括文件头(File Header)和文件体(File Body)两部分,其中文件体由一系列的Tag及Tag Size对组成。流媒体传输类型

流媒体在播放前不是完全下载整个文件,而是把开始部分内容存入内存,数据流是随时传送随时播放。

流媒体服务器提供的流式传输方式有两种:顺序流式传输和实时流式传输两种方式。

顺序流式传输是顺序下载,在下载文件的同时用户可观看在线媒体。如果使用普通的HTTP服务器,将音视频数据以从头至尾方式发送,则为顺序流媒体传输。实时流式传输总是实时传送,特别适合现场事件。一般来说,如果视频为现场直播,或使用专用的流媒体服务器,或应用如RTSP等专用实时协议,即为实时流媒体传输。实时流式传输必须匹配连接带宽,这意味着图像质量会因网络速度降低而变差。

在流式传输时,流媒体数据具有实时性,等时性等基本特点,流服务期和客户终

端要保证各种媒体间的同步关系,因此,流媒体传输对“最大延时”,“延时抖动”等QoS参数都有严格要求。

实时流传输既可传输实况直播,也可传输完整的音视频文件(专用协议流式)。

顺序流媒体不可用于实况直播,仅能传输完整的音视频文件(HTTP 渐进式)。

主流的流媒体协议

主流的流媒体协议主要有:RTMP,HLS,RTSP等。

流媒体协议原理

(一) HTTP渐进式下载原理(仅支持文件播放)

HTTP边下载边播放,严格意义上讲,不是直播协议。他的原理是先下载文件的

基本信息,音频视频的时间戳,再下载音视频数据,以播放mp4为例,先下载文件头,根据文件头指引下载文件尾,然后再下载文件的音视频数据。

播放方式:浏览器调用系统播放器播放;

使HTML5的Video标签,浏览器支持直接播放。(二) 苹果支持的HLS原理(实况直播、文件点播)

服务器端有三个组件:

其一:编码器(media encoder), 用于将设备输出的格式转为H264和AAC,并封装为MPEG-2传输流;

其二:流分段器(stream segmenter), 用于实况直播,将MPEG-2流分割为多个小片段后输出;

其三:文件分段器(file segmenter), 用于文件点播,将文件分隔为多个小片段后输出;

分发原理

数据经以上三部分处理后为.ts文件(媒体数据)及.m3u8文件(媒体数据索引)存在于服务器之上。客户端访问.m3u8后按索引下载.ts文件进行播放。

下面为某m3u8文件内容:

#EXTM3U

#EXT-X-TARGETDURATION:30

#EXTINF:30,

http://192.169.1.176/sample_100k-1.ts

#EXTINF:30,

http://192.169.1.176/sample_100k-2.ts

#EXTINF:30,

http://192.169.1.176/sample_100k-3.ts

#EXT-X-ENDLIST

根据这个文件,播放器会依次下载sample_100k-1.ts,sample_100k-2.ts,sample_100k-3.ts

HLS的文件点播

1. 使用苹果开发工具“文件分段器”将基于H264和AAC或MP3的MPEG4分段,

生成.ts和.m3u8文件,存储于普通服务器上。

2. 苹果应用程序或苹果浏览器可以通过访问.m3u8文件获取到索引,并下载所需要的数据片段来播放。

HLS的实况直播

1. 使用苹果开发工具“流分段器”将基于H264、AAC、MP3的MPEG2传输流分段,

可使用其它工具将MPEG4音视频文件加载到MPEG2传输流当中。

生成.ts和.m3u8文件,存储于普通服务器上。

2. 苹果应用程序或苹果浏览器可以通过访问.m3u8文件获取到索引,并下载所需要的数据片段来播放。

(三) Adobe Flash 支持的RTMP协议(支持文件播放和实况直播)

RTMP(Real Time Messaging Protocol)

是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的开放协议。

它有四种变种:

1) 工作在TCP之上的明文协议,使用端口1935;

2) RTMPS通过TLS/SSL连接;

3) RTMPT封装在HTTP请求之中,可穿越防火墙;

4) RTMPS类似RTMPT,但使用的是HTTPS连接;

RTMP协议(Real Time Messaging Protocol)是被Flash用于对象,视频,音频的传输。这个协议建立在TCP协议或者轮询HTTP协议之上。RTMP协议就像一个用来装数据包的容器,这些数据既可以是AMF格式的数据,也可以是FLV中的视/音频数据。一个单一的连接可以通过不同的通道传输多路网络流,这些通道中的包都是按照固定大小的包传输的。

必须采用Flash服务器FMS(Flash Media Server) 或RED5.

FMS的文件点播

1. 服务器将F4v 或Flv文件转化为RTMP流或HTTP流

相关文档
最新文档