多媒体服务器架构分析
最近在研究流媒体播放的服务器,发现现在的多媒体服务器软件好贵啊!
1. 系统框架
各个厂家的流媒体系统有其自己的特色,叫法也不尽相同,但主要都可以分成四部分:媒体编码器、媒体文件存储器、媒体服务器和媒体播放器,系统架构及各部分关系如图1所示:
图1 流媒体系统架构
媒体编码器:将原始的媒体文件或摄像头采集进来的实时媒体数据制作成适合网络传输的文件格式(流格式),然后将流文件存储在媒体文件存储器中,或直接送到流媒体服务器;
媒体文件存储器:存储流格式的媒体文件;
媒体服务器:响应调度服务器从WEB服务器转过来的用户请求,通过网络传输协议将流格式的文件传到用户桌面;
媒体播放器:接收网络媒体数据,并在本地播放。
2. 传输质量控制
为了支持尽可能多的并发用户数,同时避免大量的并发用户数带来的服务器负荷加大,QoS降低的情况,要求系统对网络流量和并发用户数进行管理和限定。与该问题相关的有三个技术指标,如下表所示:
指 标
|
说 明
|
最大并发流数
|
同时连接服务器的用户数;
|
单流最大速率
|
单个用户连接服务器允许的最大速率,单位kbps;
|
最大网络带宽
|
流媒体服务器能提供的最大速率,单位kbps,一般不超过网卡速率的85%;
|
表1 传输带宽指标
一般来说,上述三个指标值关系应满足:
(最大网络带宽)/(最大并发流数)<=(单流最大速率)
不同厂家的流媒体产品对上述指标的确定方法不同。有些直接在服务器端设定,如微软最新的Media Services V9中,可以限定上述三个指标的值,也可以不做限定,依机器性能越高则相应指标越高;有些通过许可证机制设定,如RealSystemNerworks,通过购买License确定上述指标值的上限,但实际数值仍与机器性能有关。
3. 播放器架构
流媒体在播放前并不下载整个文件,只将开始部分内容存入内存,流媒体的数据流随时传送随时播放,只是在开始时有一些延迟。流媒体实现的关键技术就是流式传输,分为两种方法:实时流式传输(Realtime streaming)和顺序流式传输(progressive streaming)。
1. 顺序流式传输
顺序流式传输是顺序下载,在下载文件的同时用户可观看在线媒体,在给定时刻,用户只能观看已下载的那部分,而不能跳到还未下载的前头部分,顺序流式传输不像实时流式传输在传输期间根据用户连接的速度做调整。由于标准的HTTP服务器可发送这种形式的文件,也不需要其他特殊协议,它经常被称作HTTP流式传输。顺序流式传输比较适合高质量的短片段,如片头、片尾和广告,由于该文件在播放前观看的部分是无损下载的,这种方法保证电影播放的最终质量。这意味着用户在观看前,必须经历延迟,对较慢的连接尤其如此。
顺序流式文件是放在标准HTTP 或 FTP服务器上,易于管理,基本上与防火墙无关。
2.实时流式传输
实时流式传输指保证媒体信号带宽与网络连接配匹,使媒体可被实时观看到。实时流与HTTP流式传输不同,他需要专用的流媒体服务器与传输协议。
实时流式传输总是实时传送,特别适合现场事件,也支持随机访问,用户可快进或后退以观看前面或后面的内容。理论上,实时流一经播放就可不停止,但实际上,可能发生周期暂停。
实时流式传输必须配匹连接带宽,这意味着在以调制解调器速度连接时图象质量较差。而且,由于出错丢失的信息被忽略掉,网络拥挤或出现问题时,视频质量很差。如欲保证视频质量,顺序流式传输也许更好。实时流式传输需要特定服务器,还需要特殊网络协议,在有防火墙时有时会出现问题,导致用户不能看到一些地点的实时内容。
以往的流媒体文件格式大多采用Real Networks公司的RealMedia;Apple公司的QuickTime和Microsoft公司的Windows Media。但这些流媒体格式在使用会直接暴露出媒体文件所在的URL,而且只能提供流媒体的播放功能,无法提供用户的交互功能。所以除了以上三种主要技术外,Adobe(Macromedia)公司的Shockwave Flash技术的应用也日益广泛。Flash不仅可以提供流媒体的一般播放功能,而且可以隐藏掉媒体文件的具体URL,更重要的是使用Flash可以方便地整合用户的交互功能,而不局限于机械地播放。
现在流行的视频直播网站(比如网络电视,网络电影)一般媒体文件较大,大多采用的是Windows Media或RealMedia技术,提供实时流式传输;播客网站(比如youtube, 土豆网)大多播放的是短片,更多的采用Flash技术,提供顺序流式传输。
本文主要以Flash技术为例。
3.1. 简单的播放架构
图2 播放器的简单架构
如果多媒体服务器只需实现最简单的播放功能,那么只需在后台建立一个web服务器用于解析并响应客户端URL请求。客户端Flash播放器采用顺序流式传输的技术播放服务器的多媒体文件。优点在于网络适应性好,只需http协议即可正常工作,而且由于媒体文件会全部缓存在客户端,无论第一遍播放时网速多慢,随后都能流畅地重放;缺点不适合大文件播放,并且缓存在客户端的媒体文件存在版权等问题。
3.2. 通用架构
图3 播放器的C/S架构
如果需要保证媒体文件不会完整缓存于客户端或需要客户端播放器能整合互动功能,则需要在播放器的客户端安装是Flash通信模块,并通过一定的数据交换协议与服务器端联系。播放器的服务器端通过一个解释器把客户端的请求转换成本地应用服务器支持的服务请求。
目前可行的Flash客户端于服务器端的C/S数据交换协议大概有四种:
1.Flash Remoting
2.LoadVars(XML)
3.Webservice
4.XMLSocket
这四种架构中最好的是Flash Remoting。播放器的服务器端通过Flash Remoting来解析播放器客户端的请求,Flash Remoting实现模块很多,Adobe提供的模块有j2ee和.net两个版本是要收费的,好在网上还有两个开源的Flash Remoting模块:OpenAMF,AMFPHP。
3.3. FMS
以上四种都是通用的Flash与后台的数据交换方法,而我们要做的是流媒体通信,因此需要更专业、更高效的协议和架构。Adobe公司的FlashCom(现在改名叫Flash Media Server,FMS,已发布2.0版本)是目前应用比较广泛的流媒体播放系统,主要用于与服务端进行流媒体通信,可以支持Flash流媒体播放,Flash在线直播,Flash视频音频聊天,Flash视频会议,Flash在线游戏等。
主要特点:
u 能够实现即时视频音频通信(当然它也支持文本通信的);
u 能够流媒体同步播放(也叫在线直播);
u 能够通过Flash Player(6.0以上版本)录制视频音频,无需其他客户端;
u 能够实现客户端实现之间的控制(如会议主持人权限)。
u 不在用户端缓存视频、音频数据
u 保密的通信协议(RTMP)
u 存取控制
u SSL 傳送
u 不透露URL和媒体档案位置
FMS 因为是商业软件,代码是保密的,甚至它的通信协议RTMP也是非公开的,而且价格高昂,目前的授权价格为:
u Developer Edition 10 Free
u Professional Edition 100 US $ 4,500
u Origin Edition 5000 US $ 45,000
u Edge Edition N/A US $ 15,000
图4 小规模FMS集群的部署情况
图5 大规模FMS集群的部署
一个规模较大的视频播放系统一般要部署成集群的形式。小规模的部署如图4,视频播放客户端连接到一个Master Server上,Master Server根据负载情况把客户端链接转到Child Server上。Child Server收到播放请求时,首先从Maser Server读取视频文件并缓存在本地,然后响应客户端的播放请求。Child Server端的文件会自动和Master Server端保持同步。如果客户端连接数过多,达到单个Master/Child集群的上限,那就需要部署多个Master/Child集群(如图5)。这里,在Master Server端购买的软件就是Origin Edition版本,在Child上部署的软件就是Edge Edition版本。
如果是需要并发支持1万人,那么购买FMS的花费是多少呢?
一般说来,每个Edge服务器的并发不超过600个。那10000个并发,那就至少需要2台Origin服务器,18个Edge服务器。一个Origin服务器需要$45,000,一个Edge服务器需要15,000美金,那么总价就是:2×45,000+15,000×18=90,000+270,000=$360,000。需要更大规模的部署费用另计。
3.4. Red5
FMS尽管性能不错,但是授权费用昂贵,且无法改动接口代码。目前可供选择的还有开源的Red5(已发布0.6rc版)。
Red5是一款基于java的开源的Flash流媒体Server软件,使用LGPL协议,可以作为取代Macromedia提供的商业版本FMS。Red5使用破解了的RTMP作为流媒体传输协议,基本可以实现FMS的大部分功能。
在使用Red5实现流媒体服务器时,可能我们有时候还需要用户上传自己拍摄的视频文件,这就需要第三方软件把视频文件转成Flash可播放的flv文件格式。这可以利用FFMpeg实现,似乎Google Video也是用的它的程序作为视频转换工具。
优点:
u 由于Red5本身是基于java的spring架构,并且是开源的,在碰到问题的时候比较容易解决,大不了直接改代码;
u LGPL协议的开源软件可以用作商业用途,在成本方面也可以省下一笔不小的开销,同时为未来的功能扩展也提供了充分的空间;
u 基于java的Red5可以方便的整合当前的DFS接口和DDB接口;
u 性能据说还不错。
缺点:
u Red5作为一个开源的软件,它的性能和可靠性仍然有待检验;
u LGPL协议没有完全开放代码的修改权限;
u Red5还不支持集群部署
u 其他待补充
分享到:
相关推荐
### Symbian OS多媒体架构分析:深度解析与实践 #### 引言 Symbian操作系统,作为曾经全球领先的智能手机平台,其多媒体功能的丰富性和灵活性备受开发者青睐。本文旨在深入剖析Symbian OS的多媒体架构,重点聚焦于...
流媒体服务器架构设计是指根据流媒体服务的需求,设计和实现流媒体服务器的架构。流媒体服务器架构设计的目的是为了提高流媒体服务的质量和可靠性,减少流媒体服务器的维护成本。流媒体服务器架构设计涉及到流媒体...
### 安卓系统架构分析 #### 一、概述 安卓(Android)系统是当前最流行的移动设备操作系统之一,其成功很大程度上归功于其强大的系统架构。安卓系统采用分层架构设计,每一层都有明确的功能定位,确保了系统的稳定性...
### Windriver针对Android多媒体架构分析 #### Android多媒体架构概述 Windriver在2009年第一次Android技术大会上针对Android系统的多媒体架构进行了深入的探讨与分析。Android作为一个开放且灵活的操作系统,其...
文档首先分析了MMORPG网游服务器设计的关键因素,并提出了一种服务器组架构方案。该方案详细描述了服务器组内各个功能服务器的具体作用,以及服务器组工作时的几个关键流程,例如玩家登录和游戏逻辑服务器间的高效...
【服务器的架构和组成】 服务器是网络环境中的关键设备,其主要任务是管理和控制网络资源,为网络上的其他计算机提供服务。从宏观角度看,服务器可以是任何能够提供服务的计算机系统,无论是提供FTP服务的PC还是高...
6. **多媒体框架**:操作系统中的多媒体框架是管理多媒体服务的核心,它提供接口供应用程序调用,如Android的Media Framework或iOS的AVFoundation,确保多媒体数据的流畅播放和控制。 7. **挑战与优化**:随着用户...
多媒体技术架构设计是多媒体领域中的一个重要研究方向,它主要涉及如何高效、合理地组织和设计多媒体数据的传输、处理、存储与展示的过程。TLC大会聚焦于终端多媒体技术,即针对终端设备,如智能手机、平板电脑、...
【Android 多媒体架构详解】 Android 的多媒体框架MediaFramework位于Libraries层级,这是一个核心的组件,主要由C/C++编写,以提高性能和效率。它通过Java的JNI(Java Native Interface)技术与Java层交互,使得Java...
通过本篇分析,读者将了解到Android多媒体架构的层次结构、各组件间的交互机制及其实现细节,这对于理解和优化Android平台上的多媒体应用具有重要的意义。 #### 二、引言 Android多媒体架构极为复杂,涵盖了音频、...
这些组件与Android的多媒体服务层(如MediaPlayer和MediaCodec服务)紧密集成,使得应用程序能够轻松地处理多媒体内容。 Android系统还采用了多种优化策略以提升性能。例如,资源文件在编译时进行优化,XML描述的UI...
IaaS提供虚拟化的计算资源,如服务器、存储、网络等基础设施服务;PaaS提供应用开发平台和环境,让开发者无需关注底层硬件和操作系统;SaaS则是直接提供应用程序作为服务,用户可直接通过网络使用。 搭建一个基于...
此外,随着云计算和边缘计算的发展,多媒体服务器系统也可以利用分布式架构,将计算和存储任务分布在网络的不同节点上,提高服务质量和响应速度。 “多媒体服务器系统及其服务方法”则涵盖了如何设计、构建和优化...
在架构层面,MediaRecorder遵循客户端-服务器模型,即C/S架构。客户端应用程序(如Camera应用)通过调用MediaRecorder的API来控制录制过程,这些API调用通过Binder机制转发到运行在系统服务中的MediaRecorder服务。...
描述“行业文档-设计装置-家用多媒体服务器”是对标题的简洁重申,强调了这是关于家用多媒体服务器的设计文档,可能涵盖了该领域的技术标准、设计理念、系统架构等方面的信息。 【标签解析】 由于标签为空,我们...
8. **系统架构设计**:多媒体服务器的硬件和软件架构,以及如何优化以应对动态网络条件。 综上所述,这个压缩包文件可能是一份深入的技术报告或学术论文,详细阐述了如何构建一个能够应对网络不稳定情况的自适应...
综上所述,"android多媒体框架分析"这篇博客应该会详细讲解Android多媒体框架的架构、核心组件、工作流程,以及如何通过源码分析和使用工具来优化多媒体应用的开发和性能。对于想要深入理解Android多媒体处理的...
### 百度产品架构分析:信息整合商的全方位布局 #### 核心定位:信息整合商 百度,作为中国互联网巨头之一,其核心业务聚焦于信息整合,这不仅仅是搜索引擎的简单定义,而是深入互联网的各个角落,从线上到线下,...
本分析报告将侧重于Ice-cream Sandwich(ICS)版本的媒体处理,这是一个重要的里程碑版本,因为它改善了系统架构和媒体应用的性能。 在Android系统中,多媒体框架主要通过一系列的组件和服务来实现,包括硬件抽象层...
多媒体服务器提供视频、音频等内容的流式传输服务。性能瓶颈主要在于: 1. **网络**:数据传输速率。 2. **内存**:缓存多媒体内容。 3. **磁盘 I/O**:存储多媒体文件。 此外,对于需要实时播放的视频流服务,还...