一种服务多种不同终端的带宽自适应流媒体系统的制作方法
【专利说明】一种服务多种不同终端的带宽自适应流媒体系统
[0001]
技术领域
[0002]本发明涉及一种自适应流媒体系统,尤其涉及一种服务多种不同终端的带宽自适应流媒体系统。
【背景技术】
[0003]目前在消费电子市场上存在多种不同的流媒体播放终端,比如有在广电系统中普遍使用的基于RTSP协议的机顶盒,苹果公司生产的1S终端,基于Google的安卓操作系统的手机和机端盒等等。
[0004]这些不同的终端由于使用场景不同,所处的网络环境复杂,比如机顶盒通常使用固网宽带,手机和PAD在家的时候很可能是使用WiFi,外出旅行时则很可能是使用3G/4G网络,网络环境复杂意味着终端在流媒体播放过程中,带宽可能变化很大,尤其是3G/4G网络,由于地形和基站覆盖的因素,带宽会随着环境的变化呈现快速的波动,因此现有流媒体系统存在随网络环境的变化播放质量会随之有很大波动的缺陷。
[0005]不同终端由于面向的消费群体不一样,其解码和显示能力也有很大差别,高档手机如iPhone其解码能力和显示分辨率就很高,可以处理720P精度的H264视频,相比之下,一些低端安卓设备就可能解720P精度的H264视频就勉为其难.因此现有流媒体系统存在随终端能力变化播放质量会随之有很大波动的缺陷。
【发明内容】
[0006]本发明的目的在于克服上述现有技术之缺陷,而提出的一种能同时支持多种处于不同网络环境的和操作系统的终端并可利用现有的CDN设施的一种自适应流媒体系统。
[0007]为实现上述目的,本发明设计了这样一种自适应流媒体系统,该系统包括设置在分节点上的按需转封装引擎和分节点缓存引擎,及通过互联网服务于若干分节点的中心节点上设置的按需转码引擎和主节点缓存引擎;按需转码引擎把任意格式的输入视频按需转码成多码率视频播放文件并在分发的同时缓存于主节点缓存引擎,分节点缓存引擎提供多码率视频播放文件,按需转封装引擎根据检测到的播放终端带宽信息,从分节点缓存引擎中选取匹配码率的播放文件进行封装并传送给播放终端,使播放终端实现带宽自适应。
[0008]进一步的,所述按需转码引擎在接收到分节点的视频请求后,首先从主节点缓存引擎中搜索请求的视频,如未搜索到则从视频源获取,并对从视频源获取的视频按需转码成多码率的视频播放文件,并在分发的同时缓存于主节点缓存引擎,分发时从主节点缓存引擎获取再分发到发出视频请求的分节点;所述按需转封装引擎在接收到终端视频请求后,首先从分节点缓存引擎中获取,如未搜索到则从主节点缓存引擎中获取,从中心节点获取的多码率视频播放文件被缓存到分节点缓存引擎,该获取的视频播放文件被转封装引擎实时转换成以流媒体传输协议传输的流媒体给终端播放。所述流媒体传输协议包括R T SP协议、RTMP协议和M M S协议,但不限于上述所列协议。所述多码率视频播放文件包括多码率播放列表和视频片段。
[0009]本发明中的按需转码引擎为具有按需转码和分发功能的整体模块;或包括具有按需转码功能的转码模块和具有分发功能的分发模块,转码模块对获取的视频按需转码成多码率视频播放文件,并缓存到主节点缓存引擎,分发模块从主节点缓存引擎中获取所需的多码率视频播放文件分发到发出视频请求的分节点。
[0010]进一步的,按需转码引擎的输出是个虚链接,通过至少一个虚链接搜索到请求的视频,并一边从视频源实时下载该视频对应的数据,一边实时转码并封装。
[0011]对于本发明的按需转封装引擎而言,它是按需转码引擎中的一种,该按需转封装引擎只完成转协议或是转文件封装格式的轻量级的操作。
[0012]本发明通过在中心节点和分节点上分别设置按需转码引擎和按需转封装引擎及对应缓存引擎构成了一种全新的自适应流媒体系统,系统不但通过按需转码引擎和按需转封装引擎来实现流媒体带宽的自适应,而且通过按需转码引擎和按需转封装引擎分别与对应缓存引擎配合来最大程度地从缓存中服务用户,以减少对中心节点的转码请求,例如按需转码引擎将输入源转码内容缓存于中心节点缓存引擎,当被再次访问请求相同的视频时,不需要再向源端去请求视频并转码,而是直接从缓存引擎中找出内容分发出去,同时系统可将中心节点下载下来的内容缓存在分节点缓存引擎,视频请求可首先在本地缓存引擎中寻找,由此加快了服务速度,使得客户端播放的响应速度更快;此外本发明系统可很好地应用于CDN系统,这为CDN服务提供商和流媒体服务提供商进一步提供更高质量流媒体服务给出了重要的途径。
【附图说明】
[0013]图1是本发明自适应流媒体系统的构架示意图。
[0014]图2是本发明系统一个基于HT T P协议分发方式的系统构架示意图。
[0015]图3是本发明系统播放流程的示意图。
【具体实施方式】
[0016]如图1,本发明的自适应流媒体系统是在中心节点上设置按需转码引擎和主节点缓存引擎,同时在与该中心节点通过互联网服务的若干个分节点上分别设置按需转封装引擎和分节点缓存引擎。中心节点上的按需转码引擎把任意格式的输入视频按需转码成对应多码率的视频播放文件,并在分发的同时缓存于中心节点缓存引擎。例如把对应于一 FLV或MP4输入视频按需转码成对应的多种单码率的多码率列表,因此中心节点上的按需转码引擎和主节点缓存引擎是两个相互关联组合作用的模块。同样分节点上的按需转封装引擎和分节点缓存引擎也是这样的组合模块,分节点缓存引擎向按需转封装引擎提供多码率播放文件(例如苹果操作系统、安卓操作系统等播放终端设备的对应播放列表),按需转封装引擎在检测到终端实时带宽信息时,从分节点缓存引擎中选取匹配的码率版本,然后按需转封装成分发协议需求的封装格式,使终端实现带宽自适应。
[0017]上述按需转码引擎将从视频源获得的视频播放文件按需转码成对应多码率视频播放文件并缓存于中心节点缓存引擎,将来同样的视频被再次访问时,不需要再次向源端去请求和转码,而是直接从缓存引擎中找出内容分发出去,大大节约了转码的计算量并加快了服务速度。同样分节点在接收到终端用户的视频请求后,也首先在本地的缓存引擎搜索对应码率的视频播放文件,只有在分节点缓存引擎搜索未果的情况下,才会向中心节点请求,同时分节点缓存引擎中会增加新的码率版本,该码率版本是按需转封装引擎根据检测到的终端带宽信息所获取的与之匹配的但之前未有过的码率版本。
[0018]如图3,在上述本发明中系统中,分节点接收到终端视频请求,并检测分节点与接收终端之间的流媒体传输带宽,并根据这个带宽信息,首先从分节点缓存引擎中搜索和该带宽相匹配的视频播放文件,例如相匹码率的播放列表和视频片段,如搜索到,按需转封装引擎把以多码率列表形式存在的视频播放文件实时转换成以某种流媒体传输协议传输的流媒体后进行封装,供终端播放;如没有搜索到则向中心节点发出请求,中心节点则首先从中心节点缓存引擎中获取,如搜索到,从视频源获取,并将获取的视频播放文件分发到发出视频请求的分节点,如未搜索到则并将从视频源获取的视频按需转码成多码率的视频播放文件,并在分发给发出请求视频的分节点缓存引擎的同时缓存于主节点缓存引擎。
[0019]本发明中的缓存引擎可以使用任何商业的或是开源的缓存引擎,其功能是把缓存引擎的输入源缓存起来以备将来被再次访问时不需要再向源端去请求,而是直接从缓存引擎中找出对应文件分发出去,节约了源端的资源使用。本发明中心节点上设置缓存引擎就是为了节约按需转码引擎的转码计算量,一个典型的缓存引擎实现就是H T T P缓存引擎,如图2,主节点中的按需转码引擎进行转码操作,并把转码后所产生的多码率播放文件缓存于H TT P缓存引擎。按需转封装引擎从分节点缓存引擎找出对应的以多码率列表形式存在的视频播放文件,并把它实时转换成以H T T P流媒体传输协议传输的流媒体,供终端播放,分节点的缓存引擎的功能则是把从中心节点下载下来的内容缓存在本地,以此加快服务速度。