专利名称基于Http协议的直播流推流方法和系统的制作方法技术领域本发明涉及HTTP报文传输技术,尤其涉及流媒体直播中使用HTTP协议的媒体传输技术。背景技术在流媒体直播领域,直播流的推送目前主要使用RTMP协议(Real Time MessagingProtocol,实时消息传送协议)或者RTMP的加密版本RTMPE协议。这两个协议都归Adobe公司所有,其中RTMP协议只公开了一个初级版本,RTMPE协议未公开。使用RTMP协议进行直播流推送的原理如下:1.编码器首先与流媒体服务器进行RTMP握手。2.编码器与服务器通过Connect命令建立一个逻辑连接。3.编码器通过CreateStream命令创建一个流。4.编码器在创建的流发送Publish命令进行推流。5.编码器用RTMP的消息格式推送视频和音频数据,直到推流结束。使用该方法进行直播推流,有以下几个缺点:(I)使用RTMP协议本身具有版权问题。(2)RTMP协议实现复杂,如果不使用Adobe公司提供的开发工具,推流器开发难度很大。如果使用Adobe公司提供的开发工具,开发出的推流程序需要运行在Flash Player上,对运行环境有特殊要求,不支持Flash Player的设备便无法用Adobe提供的工具经行开发。(3)支持RTMP推流的流媒体服务器一般使用FMS (Flash Media Server)或者Wowza0大多是
商用的,使用费用昂贵,且定制功能的开发比较困难。自己开发服务器难度大,且涉及版权问题。(4) RTMP协议使用非通用端口,如1935.服务端前端的防火墙需要专门配置相关端口。发明内容本发明的目的在于解决上述问题,提供了一种基于HTTP协议的直播流推流方法和系统,不会有RTMP协议的版权限制,不受Flash Player这种虚拟机运行环境的限制,且开源服务器资源丰富,运营时不必再经行特殊端口的配置。本发明的技术方案为:本发明揭示了一种基于HTTP协议的直播流推流方法,包括推流器推送直播流的过程和流媒体服务器接收直播流的过程,其中:推流器推送直播流的过程如下:推流器连接流媒体服务器的推流端口 ;发送HTTP请求,其中HTTP请求中的URI为流名;读取封装成分段格式的直播流并将其设置在HTTP请求中发送;待HTTP请求发送完毕后,根据所使用的HTTP的类型进行处理;待直播流结束后停止推送;流媒体服务器接收直播流的过程如下:流媒体服务器监听服务端口 ;读取HTTP请求,从URI中解析出流名;从HTTP请求中读取分段格式的直播流;分析并处理直播流的每个分段,如果是非数据分段则直接处理,否则处理数据类型的分段,并将媒体数据加入到URI对应的直播流中;在当前HTTP请求发送完毕后根据HTTP的类型进行处理。根据本发明的基于HTTP协议的直播流推流方法的一实施例,在推流器推送直播流的过程中,根据所使用的
HTTP的类型进行处理包括:若HTTP的类型是1.0或者1.1且非保持连接的情况,则断开HTTP连接,从当前的分段开始重新执行推流器连接流媒体服务器的步骤;若HTTP的类型是1.1且保持连接的情况,则可以插入控制信息,然后从当前的分段开始重新发送HTTP请求。根据本发明的基于HTTP协议的直播流推流方法的一实施例,在流媒体服务器接收直播流的过程中,根据HTTP的类型进行处理包括:若HTTP的类型是1.0或者1.1且非保持连接的情况,则关闭HTTP的连接,等待重新推入;若HTTP的类型是1.1且保持连接的情况,则继续读取数据,返回HTTP推流请求的读取步骤。根据本发明的基于HTTP协议的直播流推流方法的一实施例,在发送HTTP请求的过程中根据需要在数据类型的分段格式的直播流中插入控制类型的分段,以控制是否需要断开当前的HTTP连接来重新推流。本发明还揭示了一种基于HTTP协议的直播流推流系统,包括推流器和流媒体服务器两个装置,其中:推流器包括:连接模块,推流器连接流媒体服务器的推流端口 ;请求发送模块,发送HTTP请求,其中HTTP请求中的URI为流名;直播流发送模块,读取封装成分段格式的直播流并将其设置在HTTP请求中发送;发送完成处理模块,待HTTP请求发送完毕后,根据所使用的HTTP的类型进行处理; 推送停止模块,待直播流结束后停止推送;流媒体服务器包括:监听模块,流媒体服务器监听服
务端口 ;解析模块,读取HTTP请求,从URI中解析出流名;直播流读取模块,从HTTP请求中读取分段格式的直播流;直播流处理模块,分析并处理直播流的每个分段,如果是非数据分段则直接处理,否则处理数据类型的分段,并将媒体数据加入到URI对应的直播流中;接收完成处理模块,在当前HTTP请求发送完毕后根据HTTP的类型进行处理。根据本发明的基于HTTP协议的直播流推流系统的一实施例,发送完成处理模块进一步包括:第一发送完成处理单元,若HTTP的类型是1.0或者1.1且非保持连接的情况,则断开HTTP连接,从当前的分段开始重新执行连接模块;第二发送完成处理单元,若HTTP的类型是1.1且保持连接的情况,则重新执行请求发送模块。根据本发明的基于HTTP协议的直播流推流系统的一实施例,接收完成处理模块进一步包括:第一接收完成处理单元,若HTTP的类型是1.0或者1.1且非保持连接的情况,则关闭HTTP的连接,等待重新推入;第二接收完成处理单元,若HTTP的类型是1.1且保持连接的情况,则继续接收数据,返回执行解析模块。根据本发明的基于HTTP协议的直播流推流系统的一实施例,请求发送模块还包括:控制单元,在发送HTTP请求的过程中根据需要在数据类型的分段格式的直播流中插入控制类型的分段,以控制是否需要断开当前的HTTP连接来重新推流。本发明对比现有技术有如下的有益效果:本发明的方案是使用HTTP
协议经行直播推流,这样不再会有RTMP协议的版权限制。由于HTTP协议简单,任何设备上都可以轻松实现,且开源的各种库也很多,因此推流器开发容易,且不受Flash Player这种虚拟机运行环境限制。HTTP协议的开源服务器资源丰富,不需要花昂贵的价钱使用FMS或者Wowza等支持RTMP协议的服务器,可控范围大,定制功能的开发非常容易。HTTP协议使用80端口。一般的防火墙该端口都是开放的,所以不必再经行特殊端口的配置,运营方便。附图说明图1示出了本发明的基于HTTP协议的直播流推流方法的较佳实施例中的推流器端的流程图。图2示出了本发明的基于HTTP协议的直播流推流方法的较佳实施例中的流媒体服务器的流程图。图3示出了本发明的基于HTTP协议的直播流推流系统的较佳实施例的原理图。具体实施例方式下面结合附图和实施例对本发明作进一步的描述。基于HTTP协议的肓播流推流方法的实施例本实施例的基于HTTP协议的直播流推流方法包括推流器推送直播流的过程和流媒体服务器接收直播流的过程。图1示出了推流器端的流程,图2示出了流媒体服务器的流程。推流器推送直播流的过程如下:步骤SlOO:推流器连接流媒体服务器的推流端口(端口 80),建立TCP连接。步骤SlOl:发送HTTP请求(HTTP Request Header)。其中HTTP请求的命令为POST, URI为流名,Content-Length设置为一个合理值。在一次HTTP POST过程中,当出现错
误或者需要新的HTTP请求继续推送时,重新建立新的TCP连接,发送POST Request来完成流的续接。步骤S102:读取编码器封装成的分段格式(Segment)的直播流。编码器编出的流媒体数据(音频和视频数据)按照时间戳封装成一系列的单元组,每个单元组包括自己的时间戳、数据长度和数据类型,这样的一个单元组也称为分段(Segment)。当分段中任何一个域的值超过最大值时,该域重置。每次建立新的连接进行推送时,分段的直播流的时间戳需要重置。步骤S103:判断是否使用了控制信息。若使用了控制信息则进入步骤S104,若未使用控制信息则进入步骤S106。在发送HTTP请求的过程中可以根据需要在数据类型的分段格式的媒体流中插入控制类型的分段,来进行续传或者其它用途。步骤S104:判断是否需要重新推流,若需要重新推流则进入步骤S105,若不需要重新推流则进入步骤S107。当一个分段的时间戳归零的时候,插入控制信息使得流可以续传,或者断开原来的HTTP POST Request的TCP连接,重新建立新的TCP连接发送POST Request来进行流的续传。步骤S105:断开连接从本分段开始重发,并返回步骤S100。步骤S106:插入控制信息。亦即,在数据类型的分段格式的直播流中插入控制类型的分段,以控制是否需要断开当前的HTTP连接来重新推流。步骤S107:通过HTTP请求发送分段格式(Segment)数据。亦即,将分段格式的直播流放在HTTP请求的本体(Body)中发送。
亦即,使用HTTP的POST方法将打包成分段格式的流媒体数据推送到流媒体服务器。步骤S108:判断HTTP请求是否发送完毕,若发送完毕则进入步骤S109,若未发送完毕则进入步骤SI 10。步骤S109:判断HTTP请求的类型是否为1.1且保持连接(Ke印-Alive),若是则在当前TCP连接继续推流,也即从当前分段开始重新执行步骤SlOl,否则(HTTP类型是1.0,或者类型是1.1且非保持连接)断开该HTTP连接并从当前分段开始重新执行步骤S105。步骤SllO:判断直播流是否结束,若结束则整个推流器推送直播流的过程结束,若未结束则返回步骤S102。流媒体服务器的过程如下。步骤S200:流媒体服务器监听服务端口,接收推流器的请求,并建立TCP连接。步骤S201:读取HTTP请求,从URI中解析出流名。步骤S202:判断连接是否断开,若断开则流程结束,若未断开则进入步骤S203。步骤S203:从HTTP请求的Body中读取分段格式的直播流,该直播流可能有媒体数据或者控制信息。在获取到分段格式的直播流后,需要处理每个分段的数据类型、时间戳等,完成流的延续性。步骤S204:判断读取到的直播流是否是数据格式的分段,若是则进入步骤S205,否则进入步骤S207。步骤S205:对于数据类型的分段,处理分段格式的数据使其可以无缝拼接。步骤S206:将本分段数据加入URI对应的直播流。步骤S207:直接处理该分段的信息。步骤S208:判断HTTP请求的本体(Body)是否读完,
若读完则进入步骤S210,否则进入步骤S209。步骤S209:继续读取HTTP请求的本体数据以获取下一个分段,然后进入步骤S204。步骤S210:判断HTTP请求的类型是否为1.1且保持连接(Ke印-Alive),若是则进入步骤S201,否则关闭HTTP连接等待重新推入,流程结束。基于HTTP协议的肓播流推流系统的实施例图3示出了本发明的基于HTTP协议的直播流推流系统的较佳实施例的原理。请参见图3,本实施例的直播流推流系统包括推流器I和流媒体服务器2两个装置。其中推流器I包括:连接模块10、请求发送模块11、直播流发送模块12、发送完成处理模块13、推送停止模块14。流媒体服务器2包括:监听模块20、解析模块21、直播流读取模块22、直播流处理模块23、接收完成处理模块24。在推流器I的处理过程中,连接模块10负责推流器连接流媒体服务器的推流端口。即,推流器连接流媒体服务器的推流端口(端口 80),建立TCP连接。请求发送模块11发送HTTP请求(HTTP Request Header),其中HTTP请求的命令为POST,URI为流名,Content-Length设置为一个合理值。在一次HTTP POST过程中,当出现错误或者需要新的HTTP请求继续推送时,重新建立新的TCP连接,发送POST Request来完成流的续接。请求发送模块11还包括控制单元110,在发送HTTP请求的过程中根据需要在数据类型的分段格式的媒体流中插入控制类型的分段,以控制是否需要断
开当前的HTTP连接来重新推流。当一个分段的时间戳归零的时候,插入控制信息使得流可以续传,或者断开原来的HTTP POST Request的TCP连接,重新建立新的TCP连接发送POST Request来进行流的续传。直播流发送模块12读取编码器封装成的分段格式的直播流并将其设置在HTTP请求中发送。编码器编出的流媒体数据(音频和视频数据)按照时间戳封装成一系列的单元组,每个单元组包括自己的时间戳、数据长度和数据类型,这样的一个单元组也称为分段(Segment)。当分段中任何一个域的值超过最大值时,该域重置。每次建立新的连接进行推送时,分段的直播流的时间戳需要重置。发送完成处理模块13待HTTP请求发送完毕后,根据所使用的HTTP的类型进行处理。推送停止模块14待直播流结束后停止推送。发送完成处理模块13进一步包括第一发送完成处理单元130和第二发送完成处理单元132。其中第一发送完成处理单元130完成的处理是:若HTTP的类型是1.0或者1.1且非保持连接的情况,则断开HTTP连接,从当前的分段开始重新执行连接模块。第二发送完成处理单元132完成的处理是:若HTTP的类型是1.1且保持连接的情况,则重新执行请求发送模块12。在流媒体服务器2的处理过程中,监听模块20负责流媒体服务器2监听服务端口。解析模块21读取HTTP请求,从URI中解析出流名。直播流读取模块22从HTTP请求中读取分段格式的直播流。在
获取到分段格式的直播流后,需要处理每个分段的数据类型、时间戳等,完成流的延续性。直播流处理模块23分析并处理直播流的每个分段,如果是非数据分段则直接处理,否则处理数据类型的分段,并将媒体数据加入到URI对应的直播流中。接收完成处理模块24在当前HTTP请求发送完毕后根据HTTP的类型进行处理。接收完成处理模块24进一步包括第一接收完成处理单元240和第二接收完成处理单元242。其中第一接收完成处理单元240完成的处理是:若HTTP的类型是1.0或者1.1且非保持连接的情况,则关闭HTTP的连接,等待重新推入。第二接收完成处理单元242完成的处理是:若HTTP的类型是1.1且保持连接的情况,则返回执行解析模块21。上述实施例是提供给本领域普通技术人员来实现和使用本发明的,本领域普通技术人员可在不脱离本发明的发明思想的情况下,对上述实施例做出种种修改或变化,因而本发明的保护范围并不被上述实施例所限,而应该是符合权利要求书所提到的创新性特征的最大范围。权利要求1.一种基于HTTP协议的直播流推流方法,包括推流器推送直播流的过程和流媒体服务器接收直播流的过程,其中: 推流器推送直播流的过程如下: 推流器连接流媒体服务器的推流端口 ; 发送HTTP请求,其中HTTP请求中的URI为流名; 读取封装好的分段格式的直播流并在HTTP请求中发送; 待HTTP请求发送完毕后,根据所使用的HTTP
的类型进行处理; 待直播流结束后停止推送; 流媒体服务器接收直播流的过程如下: 流媒体服务器监听服务端口; 读取HTTP请求,从URI中解析出流名; 从HTTP请求中读取分段 格式的直播流; 分析并处理直播流的每个分段,如果是非数据分段则直接处理,否则处理数据类型的分段,并将媒体数据加入到URI对应的直播流中; 在当前HTTP请求接收完毕后根据HTTP的类型进行处理。2.根据权利要求1所述的基于HTTP协议的直播流推流方法,其特征在于,在推流器推送直播流的过程中,根据所使用的HTTP的类型进行处理包括: 若HTTP的类型是1.0或者1.1且非保持连接的情况,则断开HTTP连接,从当前的分段开始重新执行推流器连接流媒体服务器的步骤; 若HTTP的类型是1.1且保持连接的情况,则从当前的分段开始重新发送HTTP请求。3.根据权利要求2所述的基于HTTP协议的直播流推流方法,其特征在于,在流媒体服务器接收直播流的过程中,根据HTTP的类型进行处理包括: 若HTTP的类型是1.0或者1.1且非保持连接的情况,则关闭HTTP的连接,等待重新推A ; 若HTTP的类型是1.1且保持连接的情况,则重新进入HTTP推流请求的读取步骤。4.根据权利要求3所述的基于HTTP协议的直播流推流方法,其特征在于,在发送HTTP请求的过程中根据需要在数据类型分段的直播流中插入控制类型的分段,以控制是否需要断开当前的HTTP连接来重新推流。
5.一种基于HTTP协议的直播流推流系统,包括推流器和流媒体服务器两个装置,其中: 推流器包括: 连接模块,推流器连接流媒体服务器的推流端口 ; 请求发送模块,发送HTTP请求,其中HTTP请求中的URI为流名; 直播流发送模块,读取封装好的分段格式的直播流并在HTTP请求中发送; 发送完成处理模块,待HTTP请求发送完毕后,根据所使用的HTTP的类型进行处理; 推送停止模块,待直播流结束后停止推送; 流媒体服务器包括: 监听模块,流媒体服务器监听服务端口 ; 解析模块,读取HTTP请求,从URI中解析出流名;直播流读取模块,从HTTP请求中读取分段格式的直播流; 直播流处理模块,分析并处理直播流的每个分段,如果是非数据分段则直接处理,否则处理数据类型的分段,并将媒体数据加入到URI对应的直播流中; 接收完成处理模块,在当前HTTP请求接收完毕后根据HTTP的类型进行处理。6.根据权利要求5所述的基于HTTP协议的直播流推流系统,其特征在于,发送完成处理模块进一步包括: 第一发送完成处理单元,若HTTP的类型是1.0或者1.1且非保持连接的情况,则断开HTTP连接,从当前的分段开始重新执行连接模块; 第二发送完成处理单元,若HTTP的类型是1.1且保持连接的情况,则重新执行请求发送模块。7.根据权利要求6所述的基于HTTP协议的直播流推流系统,其特征在于,接收完成处理模块进一步包括: 第
一接收完成处理单元,若HTTP的类型是1.0或者1.1且非保持连接的情况,则关闭HTTP的连接,等待重新推入; 第二接收完成处理单元,若HTTP的类型是1.1且保持连接的情况,则返回继续接收数据执行解析模块。8.根据权利要求7所述的基于HTTP协议的直播流推流系统,其特征在于,请求发送模块还包括: 控制单元,在发送HTTP请求的过程中根据需要在数据类型分段的直播流中插入控制类型的分段,以控制是否需要断开当前的HTTP连接来重新推流。全文摘要本发明公开了基于HTTP协议的直播流推流方法和系统,不受RTMP协议版权限制和Flash平台限制,开源服务器资源丰富。其技术方案为方法包括推流器推送直播流过程和流媒体服务器接收直播流过程,其中推流器的过程为推流器连接流媒体服务器的推流端口;发送HTTP请求;读取封装好的分段格式的直播流并在HTTP请求中发送;根据HTTP的类型进行处理;最后停止推送。流媒体服务器的过程为流媒体服务器监听服务端口;读取HTTP请求,解析流名;读取分段格式的直播流;分析处理每个分段,如果是非数据分段则直接处理,否则处理数据类型的分段,并将媒体数据加入到URI对应的直播流中;接收完毕后根据HTTP类型进行处理。文档编号H04L29/08GK103179214SQ201310123980公开日2013年6月26日 申请日期2013年4月10日 优先权日2013年4月10日发明者洪珂, 白永光, 郭斌 申请人:
网宿科技股份有限公司
因篇幅问题不能全部显示,请点此查看更多更全内容