发明内容
本申请提供了一种基于网关的流媒体拉流方法及装置,用于解决现有技术对客户端和流媒体服务器而言都缺乏安全把控,且客户端访问存在一定限制的技术问题。
有鉴于此,本申请第一方面提供了一种基于网关的流媒体拉流方法,包括:
接收到客户端的直播地址请求信息后,通过预置信令服务器为设备端分配流媒体服务器,并向所述客户端返回HLS直播地址,所述HLS直播地址包括初始流媒体动态口令和流媒体网关地址;
在所述客户端向所述流媒体网关发起视频流m3u8文件请求时,依据所述流媒体网关地址触发流媒体网关根据所述初始流媒体动态口令进行第一动态口令校验和流媒体服务IP地址第一解析操作;
在校验通过的情况下,通过所述流媒体网关基于所述流媒体服务IP地址从所述流媒体服务器获取转码m3u8文件,并将更新流媒体动态口令和所述转码m3u8文件转换为响应报文后发送给所述客户端;
接收到所述客户端的ts文件请求信息后,依据所述流媒体网关地址触发所述流媒体网关根据所述更新流媒体动态口令进行第二动态口令校验和流媒体服务IP地址第二解析操作,所述ts文件请求信息基于所述响应报文生成;
在校验通过的情况下,通过所述流媒体网关基于所述流媒体服务IP地址从所述流媒体服务器获取目标ts文件,并发送至所述客户端。
优选地,所述接收到客户端的直播地址请求信息后,通过预置信令服务器为设备端分配流媒体服务器,并向所述客户端返回HLS直播地址,包括:
接收到客户端的直播地址请求信息后,通过预置信令服务器以下发直播信令的方式为设备端分配流媒体服务器,促使所述设备端根据所述直播信令中的流媒体服务地址信息向所述流媒体服务器进行视频推流操作;
通过预置信令服务器采用预置密钥对所述设备端对应的流媒体服务器的流媒体服务IP地址进行加密操作,得到初始流媒体动态口令;
通过预置信令服务器将所述初始流媒体动态口令和流媒体网关地址形成HLS直播地址发送至所述客户端。
优选地,所述在所述客户端向所述流媒体网关发起视频流m3u8文件请求时,依据所述流媒体网关地址触发流媒体网关根据所述初始流媒体动态口令进行第一动态口令校验和流媒体服务IP地址第一解析操作,包括:
所述客户端基于所述流媒体网关地址向所述流媒体网关发送视频流m3u8文件请求,促使所述流媒体网关根据所述初始流媒体动态口令进行第一动态口令校验,所述视频流m3u8文件请求包括所述初始流媒体动态口令;
若所述第一动态口令校验通过,则根据所述初始流媒体动态口令进行流媒体服务IP地址第一解析操作,得到流媒体服务IP地址。
优选地,所述在校验通过的情况下,通过所述流媒体网关基于所述流媒体服务IP地址从所述流媒体服务器获取转码m3u8文件,并将更新流媒体动态口令和所述转码m3u8文件转换为响应报文后发送给所述客户端,包括:
在校验通过的情况下,通过所述流媒体网关基于所述流媒体服务IP地址将所述视频流m3u8文件请求转发至对应的所述流媒体服务器,促使所述流媒体服务器进行视频转码操作,得到转码m3u8文件,并发送给所述流媒体网关;
通过所述流媒体网关对所述初始流媒体动态口令中的时间戳进行修改,得到更新流媒体动态口令,并将所述更新流媒体动态口令和所述转码m3u8文件转换为响应报文后发送给所述客户端。
优选地,所述接收到所述客户端的ts文件请求信息后,依据所述流媒体网关地址触发所述流媒体网关根据所述更新流媒体动态口令进行第二动态口令校验和流媒体服务IP地址第二解析操作,所述ts文件请求信息基于所述响应报文生成,包括:
所述客户端基于所述响应报文生成ts文件后,依据所述流媒体网关地址向所述流媒体网关发送ts文件请求信息,促使所述流媒体网关根据所述更新流媒体动态口令进行第二动态口令校验;
所述所述第二动态口令校验通过,则根据所述更新流媒体动态口令进行流媒体服务IP地址第二解析操作,得到流媒体服务IP地址。
本申请第二方面提供了一种基于网关的流媒体拉流装置,包括:
交互准备模块,用于接收到客户端的直播地址请求信息后,通过预置信令服务器为设备端分配流媒体服务器,并向所述客户端返回HLS直播地址,所述HLS直播地址包括初始流媒体动态口令和流媒体网关地址;
地址请求模块,用于在所述客户端向所述流媒体网关发起视频流m3u8文件请求时,依据所述流媒体网关地址触发流媒体网关根据所述初始流媒体动态口令进行第一动态口令校验和流媒体服务IP地址第一解析操作;
地址获取模块,用于在校验通过的情况下,通过所述流媒体网关基于所述流媒体服务IP地址从所述流媒体服务器获取转码m3u8文件,并将更新流媒体动态口令和所述转码m3u8文件转换为响应报文后发送给所述客户端;
拉流请求模块,用于接收到所述客户端的ts文件请求信息后,依据所述流媒体网关地址触发所述流媒体网关根据所述更新流媒体动态口令进行第二动态口令校验和流媒体服务IP地址第二解析操作,所述ts文件请求信息基于所述响应报文生成;
视频获取模块,用于在校验通过的情况下,通过所述流媒体网关基于所述流媒体服务IP地址从所述流媒体服务器获取目标ts文件,并发送至所述客户端。
优选地,所述交互准备模块,具体用于:
接收到客户端的直播地址请求信息后,通过预置信令服务器以下发直播信令的方式为设备端分配流媒体服务器,促使所述设备端根据所述直播信令中的流媒体服务地址信息向所述流媒体服务器进行视频推流操作;
通过预置信令服务器采用预置密钥对所述设备端对应的流媒体服务器的流媒体服务IP地址进行加密操作,得到初始流媒体动态口令;
通过预置信令服务器将所述初始流媒体动态口令和流媒体网关地址形成HLS直播地址发送至所述客户端。
优选地,所述地址请求模块,具体用于:
所述客户端基于所述流媒体网关地址向所述流媒体网关发送视频流m3u8文件请求,促使所述流媒体网关根据所述初始流媒体动态口令进行第一动态口令校验,所述视频流m3u8文件请求包括所述初始流媒体动态口令;
若所述第一动态口令校验通过,则根据所述初始流媒体动态口令进行流媒体服务IP地址第一解析操作,得到流媒体服务IP地址。
优选地,所述地址获取模块,具体用于:
在校验通过的情况下,通过所述流媒体网关基于所述流媒体服务IP地址将所述视频流m3u8文件请求转发至对应的所述流媒体服务器,促使所述流媒体服务器进行视频转码操作,得到转码m3u8文件,并发送给所述流媒体网关;
通过所述流媒体网关对所述初始流媒体动态口令中的时间戳进行修改,得到更新流媒体动态口令,并将所述更新流媒体动态口令和所述转码m3u8文件转换为响应报文后发送给所述客户端。
优选地,所述拉流请求模块,具体用于:
所述客户端基于所述响应报文生成ts文件后,依据所述流媒体网关地址向所述流媒体网关发送ts文件请求信息,促使所述流媒体网关根据所述更新流媒体动态口令进行第二动态口令校验;
所述所述第二动态口令校验通过,则根据所述更新流媒体动态口令进行流媒体服务IP地址第二解析操作,得到流媒体服务IP地址。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请中,提供了一种基于网关的流媒体拉流方法,包括:接收到客户端的直播地址请求信息后,通过预置信令服务器为设备端分配流媒体服务器,并向客户端返回HLS直播地址,HLS直播地址包括初始流媒体动态口令和流媒体网关地址;在客户端向流媒体网关发起视频流m3u8文件请求时,依据流媒体网关地址触发流媒体网关根据初始流媒体动态口令进行第一动态口令校验和流媒体服务IP地址第一解析操作;在校验通过的情况下,通过流媒体网关基于流媒体服务IP地址从流媒体服务器获取转码m3u8文件,并将更新流媒体动态口令和转码m3u8文件转换为响应报文后发送给客户端;接收到客户端的ts文件请求信息后,依据流媒体网关地址触发流媒体网关根据更新流媒体动态口令进行第二动态口令校验和流媒体服务IP地址第二解析操作,ts文件请求信息基于响应报文生成;在校验通过的情况下,通过流媒体网关基于流媒体服务IP地址从流媒体服务器获取目标ts文件,并发送至客户端。
本申请提供的基于网关的流媒体拉流方法,通过预置信令服务器为设备端分配特定流媒体服务器,并将相应的HLS直播地址返回给客户端;既避免了公开公网IP带来的风险,又能满足客户端的域名访问要求;此外,在客户端每次的视频流信息访问中增加流媒体网关进行动态口令校验和地址解析操作;既能够为客户端访问提供鉴权,还能通过明确的解析地址简化访问过程,提升客户端拉流效率。因此,本申请能够解决现有技术对客户端和流媒体服务器而言都缺乏安全把控,且客户端访问存在一定限制的技术问题。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了便于理解,请参阅图1,本申请提供的一种基于网关的流媒体拉流方法的实施例,包括:
步骤101、接收到客户端的直播地址请求信息后,通过预置信令服务器为设备端分配流媒体服务器,并向客户端返回HLS直播地址,HLS直播地址包括初始流媒体动态口令和流媒体网关地址。
进一步地,步骤101,包括:
接收到客户端的直播地址请求信息后,通过预置信令服务器以下发直播信令的方式为设备端分配流媒体服务器,促使设备端根据直播信令中的流媒体服务地址信息向流媒体服务器进行视频推流操作;
通过预置信令服务器采用预置密钥对设备端对应的流媒体服务器的流媒体服务IP地址进行加密操作,得到初始流媒体动态口令;
通过预置信令服务器将初始流媒体动态口令和流媒体网关地址形成HLS直播地址发送至客户端。
本实施例在客户端与流媒体服务器之间增设了预置信令服务器和流媒体网关,用以调整客户端在流媒体服务器上拉流的交互流程。其中预置信令服务器主要是给视频流获取设备分配特定的流媒体服务器,是客户端面向的是单一流媒体服务器,而不是整个流媒体服务集群;另外就是给客户端发送HLS直播地址,HLS直播地址中包括初始流媒体动态口令和流媒体网关地址。
可以发现,预置信令服务器可以访问设备、流媒体服务器和流媒体网关,即可以给这些操作端发送指令信息,或者获取某些信息;例如给设备端下发直播信令,其中包括流媒体服务器的地址信息;设备端根据预置信令服务器给的地址信息就可以访问特定流媒体服务器,并进行视频推流操作。流媒体动态口令中加密了流媒体服务器端口、流媒体服务IP地址和时间戳。流媒体动态口令虽然会与流媒体网关地址一起发送给客户端,但是客户端真正操作或者用到的只有流媒体网关地址,即基于该地址访问流媒体网关并请求视频流信息。
可以理解的是,初始流媒体动态口令最终在流媒体网关校验,所以流媒体网关需要从预置信令服务器查询获取预置密钥,须知预置密钥对每个客户端唯一。
步骤102、在客户端向流媒体网关发起视频流m3u8文件请求时,依据流媒体网关地址触发流媒体网关根据初始流媒体动态口令进行第一动态口令校验和流媒体服务IP地址第一解析操作。
进一步地,步骤102,包括:
客户端基于流媒体网关地址向流媒体网关发送视频流m3u8文件请求,促使流媒体网关根据初始流媒体动态口令进行第一动态口令校验,视频流m3u8文件请求包括初始流媒体动态口令;
若第一动态口令校验通过,则根据初始流媒体动态口令进行流媒体服务IP地址第一解析操作,得到流媒体服务IP地址。
视频流m3u8文件请求是客户端根据流媒体网关地址进行明确的流媒体网关访问发送的信息,其中包括接收到的初始流媒体动态口令,所以流媒体网关接收到视频流m3u8文件请求后首先会进行动态口令校验,即验证初始流媒体动态口令中的时间戳是否在预置时间范围内,若是则校验通过。初始流媒体动态口令中还包括流媒体服务IP地址,对其进行地址解析后可以得到流媒体服务IP地址。
步骤103、在校验通过的情况下,通过流媒体网关基于流媒体服务IP地址从流媒体服务器获取转码m3u8文件,并将更新流媒体动态口令和转码m3u8文件转换为响应报文后发送给客户端。
进一步地,步骤103,包括:
在校验通过的情况下,通过流媒体网关基于流媒体服务IP地址将视频流m3u8文件请求转发至对应的流媒体服务器,促使流媒体服务器进行视频转码操作,得到转码m3u8文件,并发送给流媒体网关;
通过流媒体网关对初始流媒体动态口令中的时间戳进行修改,得到更新流媒体动态口令,并将更新流媒体动态口令和转码m3u8文件转换为响应报文后发送给客户端。
流媒体网关根据解析出来的流媒体服务IP地址可以将视频流m3u8文件请求的信息转发至特定的流媒体服务器,流媒体服务器就会将设备端推流的视频进行转码操作,得到转码m3u8文件,返回给流媒体网关。流媒体动态口令中除了包括端口和IP,还包括时间戳,此处更新的就是时间戳,得到的更新流媒体动态口令;流媒体网关需要将更新流媒体动态口令和转码m3u8文件一并转换为响应报文再发送给客户端,而不是直接发送,因为响应报文中还附带有其他必要的访问或者获取数据的参数,在此不作赘述。
步骤104、接收到客户端的ts文件请求信息后,依据流媒体网关地址触发流媒体网关根据更新流媒体动态口令进行第二动态口令校验和流媒体服务IP地址第二解析操作,ts文件请求信息基于响应报文生成。
进一步地,步骤104,包括:
客户端基于响应报文生成ts文件后,依据流媒体网关地址向流媒体网关发送ts文件请求信息,促使流媒体网关根据更新流媒体动态口令进行第二动态口令校验;
第二动态口令校验通过,则根据更新流媒体动态口令进行流媒体服务IP地址第二解析操作,得到流媒体服务IP地址。
客户端从响应报文中可以获取到所需的m3u8文件,而m3u8文件是记录视频流的多个地址构成的地址列表,基于这些地址就可以生成单个的ts文件,客户端根据流媒体网关地址可以发起ts文件请求信息;而流媒体网关则还是需要先对客户端进行鉴权,即进行动态口令校验,但是校验过程是基于更新流媒体动态口令,即修改过时间戳的流媒体动态口令。校验通过则可以解析出更新流媒体动态口令中的流媒体服务IP地址,进而执行请求信息的转发操作。可以理解的是,每执行一次m3u8文件的请求,可以执行多次ts文件的请求,具体的次数取决于m3u8文件中包含多少视频流地址;但是每次请求都需要进行流媒体动态口令校验,即时间戳校验,以及地址解析操作;后续的ts文件请求的动态口令校验不需要再变更时间戳,直接校验即可。
步骤105、在校验通过的情况下,通过流媒体网关基于流媒体服务IP地址从流媒体服务器获取目标ts文件,并发送至客户端。
流媒体网关获取到目标ts文件后直接发送给客户端,不需要作其他转换或者处理,流媒体服务器也是直接传递ts文件,不作其他处理。
为了便于理解,本申请提供了基于网关的流媒体拉流的应用***,请参阅图3,***基于OpenResty构建实现,具体包括客户端/小程序、设备、流媒体网关和流媒体服务;信令服务用于提供指令信息,并未体现其中,具体的单元结构关系请参阅图4,各个单元之间的交互流程可以采用图5的方式实现,客户端获取到ts视频流文件,从而进行直播。
此外,本***若是应用在明厨亮灶等产品领域,其中明厨亮灶的微信小程序可以作为客户端,流媒体服务使用部署于各地的服务集群,由信令服务统一管理;设备端采用接入天翼看家SDK模块的摄像设备。如小程序端申请访问设备在线视频流时,通过信令服务申请视频流推流,信令服务连接设备并下发推流指令,设备确认推流指令及推流服务器后开始推流,信令服务根据流媒体信息组合小程序端视频流封装地址并返回。设备通过访问视频流播报封装地址,网关服务验证封装地址参数,转发至流媒体服务,获取视频流地址数据并修改数据包返回小程序端。小程序端获取视频流文件地址,访问网关服务并转发至对应流媒体服务,返回视频流数据,此时小程序端正常播报视频流。
本申请实施例提供的基于网关的流媒体拉流方法,通过预置信令服务器为设备端分配特定流媒体服务器,并将相应的HLS直播地址返回给客户端;既避免了公开公网IP带来的风险,又能满足客户端的域名访问要求;此外,在客户端每次的视频流信息访问中增加流媒体网关进行动态口令校验和地址解析操作;既能够为客户端访问提供鉴权,还能通过明确的解析地址简化访问过程,提升客户端拉流效率。因此,本申请实施例能够解决现有技术对客户端和流媒体服务器而言都缺乏安全把控,且客户端访问存在一定限制的技术问题。
为了便于理解,请参阅图2,本申请提供了一种基于网关的流媒体拉流装置的实施例,包括:
交互准备模块201,用于接收到客户端的直播地址请求信息后,通过预置信令服务器为设备端分配流媒体服务器,并向客户端返回HLS直播地址,HLS直播地址包括初始流媒体动态口令和流媒体网关地址;
地址请求模块202,用于在客户端向流媒体网关发起视频流m3u8文件请求时,依据流媒体网关地址触发流媒体网关根据初始流媒体动态口令进行第一动态口令校验和流媒体服务IP地址第一解析操作;
地址获取模块203,用于在校验通过的情况下,通过流媒体网关基于流媒体服务IP地址从流媒体服务器获取转码m3u8文件,并将更新流媒体动态口令和转码m3u8文件转换为响应报文后发送给客户端;
拉流请求模块204,用于接收到客户端的ts文件请求信息后,依据流媒体网关地址触发流媒体网关根据更新流媒体动态口令进行第二动态口令校验和流媒体服务IP地址第二解析操作,ts文件请求信息基于响应报文生成;
视频获取模块205,用于在校验通过的情况下,通过流媒体网关基于流媒体服务IP地址从流媒体服务器获取目标ts文件,并发送至客户端。
进一步地,交互准备模块201,具体用于:
接收到客户端的直播地址请求信息后,通过预置信令服务器以下发直播信令的方式为设备端分配流媒体服务器,促使设备端根据直播信令中的流媒体服务地址信息向流媒体服务器进行视频推流操作;
通过预置信令服务器采用预置密钥对设备端对应的流媒体服务器的流媒体服务IP地址进行加密操作,得到初始流媒体动态口令;
通过预置信令服务器将初始流媒体动态口令和流媒体网关地址形成HLS直播地址发送至客户端。
进一步地,地址请求模块202,具体用于:
客户端基于流媒体网关地址向流媒体网关发送视频流m3u8文件请求,促使流媒体网关根据初始流媒体动态口令进行第一动态口令校验,视频流m3u8文件请求包括初始流媒体动态口令;
若第一动态口令校验通过,则根据初始流媒体动态口令进行流媒体服务IP地址第一解析操作,得到流媒体服务IP地址。
进一步地,地址获取模块203,具体用于:
在校验通过的情况下,通过流媒体网关基于流媒体服务IP地址将视频流m3u8文件请求转发至对应的流媒体服务器,促使流媒体服务器进行视频转码操作,得到转码m3u8文件,并发送给流媒体网关;
通过流媒体网关对初始流媒体动态口令中的时间戳进行修改,得到更新流媒体动态口令,并将更新流媒体动态口令和转码m3u8文件转换为响应报文后发送给客户端。
进一步地,拉流请求模块204,具体用于:
客户端基于响应报文生成ts文件后,依据流媒体网关地址向流媒体网关发送ts文件请求信息,促使流媒体网关根据更新流媒体动态口令进行第二动态口令校验;
第二动态口令校验通过,则根据更新流媒体动态口令进行流媒体服务IP地址第二解析操作,得到流媒体服务IP地址。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以通过一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文全称:Read-OnlyMemory,英文缩写:ROM)、随机存取存储器(英文全称:Random Access Memory,英文缩写:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。