流媒体反向代理服务实现一个端口承载多个流协议的方法与流程

文档序号:17926276发布日期:2019-06-15 00:26阅读:450来源:国知局
流媒体反向代理服务实现一个端口承载多个流协议的方法与流程

本发明涉及流媒体技术领域,具体涉及一种流媒体反向代理服务,用一个网络端口承载多个流协议的方法。



背景技术:

作为新一代互联网应用的标志,流媒体技术在近几年得到了飞速的发展。而流媒体服务器又是流媒体应用的核心系统,是运营商向用户提供视频服务的关键平台。其主要功能是对媒体内容进行采集、缓存、调度和传输播放,流媒体应用系统的主要性能体现都取决于媒体服务器的性能和服务质量。因此,流媒体服务器是流媒体应用系统的基础,也是最主要的组成部分。流媒体服务器的主要功能是以流式协议(rtp/rtsp、mms、rtmp等)将视频文件传输到客户端,供用户在线观看;也可从视频采集、压缩软件接收实时视频流,再以流式协议直播给客户端。

目前,已知的常见流媒体服务,rtsp服务默认554端口,rtmp服务默认1935端口,hls服务默认80端口,mepg-dash默认80端口,流服务依靠端口判断流协议。而为了适配多种流媒体播放终端,在部署流媒体服务时,要对一种视频信号提供多种流协议,也就需要开放多个网络端口,这给运维的服务安全和服务治理带来复杂性。



技术实现要素:

本发明的目的是提供一种流媒体反向代理服务实现一个端口承载多个流协议的方法,通过部署一种流媒体反向代理服务实现使用一个网络端口承载多种流媒体协议,来解决为了适配多种流媒体播放终端,在部署流媒体服务时,要对一种视频信号提供多种流协议,也就需要开放多个网络端口的问题。

为了解决背景技术所存在的问题,本发明是采用以下技术方案:一种流媒体反向代理服务实现一个端口承载多个流协议的方法,在流媒体终端和流媒体服务之间插入一个流媒体反向代理服务,所述的流媒体反向代理服务包含依次连接的网络监听模块、协议鉴别模块和反向代理模块,网络监听模块连接到原始网络,流媒体反向代理服务通过输入流媒体终端的原始网络连接,输出反向代理的网络连接到正确的流媒体服务。

作为本发明的进一步改进;所述网络监听模块开放一个网络端口,进行tcp监听,投递到协议鉴别模块。

作为本发明的进一步改进;所述协议鉴别模块的工作流程为:事件监听;新网络连接事件;鉴别rtmp协议事件;鉴别rtsp/http协议事件;鉴别hls/dash协议事件;无效流协议事件:断开网络连接;有效流协议事件:根据事件包内容,生成协议鉴别结果包,投递给反向代理模块。

作为本发明的进一步改进;所述反向代理模块监听协议鉴定结果,建立反向代理。

作为本发明的进一步改进;所述协议鉴别模块的流协议鉴别方法包含如下步骤:

(a)鉴别rtmp协议:进行rtmp协议鉴别,根据rtmp是二进制协议,其它流协议是文本协议进行区分。读取网络连接的请求第1个字节,如果值是3就是rtmp协议;如果值是字符(65-90或者97-122),转入鉴别rtsp/http协议;如果都不是,就是无效协议;

(b)鉴别rtsp/http协议:获取第一行内容(通过换行符判断是否是一行),通过第一行的末尾区判断具体协议类型。如果是rtsp就是rtsp协议;如果是http就是http协议,转入鉴别hls/dash协议;如果都不是,就是无效协议;

(c)鉴别hls/dash协议:已经确定是http协议,再根据已读数据(第一行内容)的中间区得到请求url,再根据url得到请求资源类型,.m3u8是hls协议;.mpd是dash协议;如果都不是,就是无效协议。

作为本发明的进一步改进;所述反向代理模块的反向代理连接构建方法为:根据协议类型,确定流服务地址,建立新网络连接到流服务,把已读数据,写入新网络连接,再分别建立二个协程,读协程(从新网络连接读数据,写到原始网络连接),写协程(从原始网络连接读数据,写到新网络连接),就完成。

采用上述技术方案后,本发明具有以下有益效果:

为了能够在一个网络端口承载多个流协议,通过使用反向代理服务技术,构建网络监听模块,协议鉴别模块,反向代理模块,实现一个网络端口承载多种流协议功能。同时由于使用反向代理服务技术,不需要改造原有的流媒体服务,只要在原来的流媒体终端和流媒体服务之间插入流媒体反向代理服务,部署简单,不修改原来代码,修改成本低。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为改造前的流媒体服务结构图;

图2为本发明所提供的实施例中改造后的流媒体服务结构图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施方式,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅用以解释本发明,并不用于限定本发明。

请参阅图2,本具体实施方式采用以下技术方案:一种流媒体反向代理服务实现一个端口承载多个流协议的方法,它包含如下步骤:

1在流媒体终端和流媒体服务之间插入一个流媒体反向代理服务,所述的流媒体反向代理服务包含依次连接的网络监听模块、协议鉴别模块和反向代理模块;

2流媒体反向代理服务通过输入流媒体终端的原始网络连接,输出反向代理的网络连接到正确的流媒体服务,实现一个端口承载多种流协议,完成三个功能:

1)网络监听:

(1)监听tcp网络:开放一个网络端口,进行tcp监听;

(2)投递到协议鉴别模块:每接收到一个新的网络连接,投递事件包(新网络连接事件、空协议类型、网络连接和已读数据)到协议鉴别模块。

2)协议鉴别:

(1)事件监听:先注册所有事件处理函数,再监听所有事件。接收事件包,根据事件包的事件类型,调度相应处理功能;

(2)新网络连接事件:处理网络监听模块发送的事件包,投递事件包(鉴别rtmp协议事件、空协议类型、网络连接和已读数据)到本模块的事件监听;

(3)鉴别rtmp协议事件:进行rtmp协议鉴别,根据rtmp是二进制协议,其它流协议是文本协议进行区分。读取网络连接的请求第1个字节,如果值是3就是rtmp协议,投递事件包(有效流协议事件、rtmp协议类型、网络连接和已读数据)到本模块的事件监听;如果值是字符(65-90或者97-122),投递事件包(鉴别rtsp协议事件、空协议类型、网络连接和已读数据)到本模块的事件监听;如果都不是,就投递事件包(无效流媒体事件、协议类型、网络连接和已读数据)到本模块的事件监听;

(4)鉴别rtsp/http协议事件:获取第一行内容(通过换行符判断是否是一行),通过第一行的末尾区判断具体协议类型。如果是rtsp就是rtsp协议,投递事件包(有效流协议事件、rtsp协议类型、网络连接和已读数据)到本模块的事件监听;如果是http就是http协议,投递事件包(鉴别hls/dash协议事件、http协议类型、网络连接和已读数据)到本模块的事件监听;如果都不是,就投递事件包(无效流媒体事件、空协议类型、网络连接和已读数据)到本模块的事件监听;

(5)鉴别hls/dash协议事件:根据已读数据(第一行内容)的中间区得到请求url,再根据url得到请求资源类型,.m3u8是hls协议,投递事件包(有效流协议事件、hls协议类型、网络连接和已读数据)到本模块的事件监听;.mpd是dash协议,投递事件包(有效流协议事件、dash协议类型、网络连接和已读数据)到本模块的事件监听;如果都不是,就投递事件包(无效流媒体事件、空协议类型、网络连接和已读数据)到本模块的事件监听;

(6)无效流协议事件:断开网络连接;

(7)有效流协议事件:根据事件包内容,生成协议鉴别结果包(协议类型、网络连接和已读数据),投递给反向代理模块。

3)反向代理:

(1)监听协议鉴定结果:建立监听,接收协议鉴别结果包;

(2)建立反向代理:根据协议类型,确定流服务地址,建立新网络连接到流服务,把已读数据,写入新网络连接,再分别建立二个协程,读协程(从新网络连接读数据,写到原始网络连接),写协程(从原始网络连接读数据,写到新网络连接),就完成。

本发明通过添加一个反向代理服务,部署简单,不修改原来代码,修改成本低。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。

此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1