一种流媒体数据分发方法和装置与流程

文档序号:23552304发布日期:2021-01-05 21:11阅读:121来源:国知局
一种流媒体数据分发方法和装置与流程

本申请涉及数据处理领域,具体涉及一种流媒体数据分发方法和装置。



背景技术:

在基于gb28181协议的上下级联平台中,当用户终端需要对前端摄像头进行实时的监控预览时,通过sdp(sessiondescriptionprotocol)协议来建立用户终端与前端摄像头之间的会话协商以及传送会话中的流媒体数据,然而由于前端摄像头的带宽很小,分发能力有限,通过sdp协议只能实现一路前端摄像头视频流的接入,如实现一个用户终端与一个前端摄像头之间的流媒体数据的传输。

然而现实中,往往需要在不同的终端场景下对多路前端摄像头进行实时监控预览,使用sdp协议满足不了当前需求,需要改进。



技术实现要素:

本申请实施例提供一种流媒体数据分发方法和装置,可实现多个用户终端对多路摄像头的数据进行实时预览。

本申请实施例提供了一种流媒体数据分发方法,应用于智慧交通系统中,所述智慧交通系统包括前端摄像头、信令服务器、媒体服务器、以及用户终端,前端摄像头基于国标协议与信令服务器通信,用户终端通过网络接入信令服务器,信令服务器连接媒体服务器,流媒体数据分发方法应用于媒体服务器,所述流媒体数据分发方法,包括:

接收信令服务器发送的流媒体数据接收信令,该流媒体接收信令携带待接收流媒体数据的前端摄像头的前端标识信息,该流媒体数据接收信令在信令服务器接收到用户终端发送的前端摄像头的流媒体数据获取请求之后生成;

根据前端标识信息创建与前端摄像头之间的目标会话控制对象;

为目标会话控制对象分配接收端口和分发端口;

向信令服务器发送接收端口、分发端口和本地通讯地址标识信息,以通过信令服务器将本地通讯地址标识信息和接收端口发送至前端摄像头,以使前端摄像头将流媒体数据发送至本地通讯地址标识信息所对应的本地媒体服务器的接收端口,并通过信令服务器将本地通讯地址标识信息和分发端口发送至用户终端,以使用户终端通过分发端口向本地通讯地址标识信息所对应的本地媒体服务器进行注册;

通过接收端口接收前端摄像头发送的流媒体数据;

获取存储有通过分发接口注册的用户终端的分发列表;

将所接收的流媒体数据通过分发端口分发至分发列表中的每个用户终端。

本申请实施例还提供了一种流媒体数据分发装置,应用于智慧交通系统中,该智慧交通系统包括前端摄像头、信令服务器、媒体服务器、以及用户终端,前端摄像头基于国标协议与信令服务器通信,用户终端通过网络接入信令服务器,信令服务器连接媒体服务器,流媒体数据分发方法应用于媒体服务器,所述流媒体数据分发装置包括:

信令接收单元,用于接收信令服务器发送的流媒体数据接收信令,该流媒体接收信令携带待接收流媒体数据的前端摄像头的前端标识信息,该流媒体数据接收信令在信令服务器接收到用户终端发送的前端摄像头的流媒体数据获取请求之后生成;

会话确定单元,用于根据前端标识信息创建与前端摄像头之间的目标会话控制对象;

分配单元,用于为目标会话控制对象分配接收端口和分发端口;

信令发送单元,用于向信令服务器发送接收端口、分发端口和本地通讯地址标识信息,以通过信令服务器将本地通讯地址标识信息和接收端口发送至前端摄像头,以使前端摄像头将流媒体数据发送至本地通讯地址标识信息所对应的本地媒体服务器的接收端口,并通过信令服务器将本地通讯地址标识信息和分发端口发送至用户终端,以使用户终端通过分发端口向本地通讯地址标识信息所对应的本地媒体服务器进行注册;

媒体接收单元,用于通过接收端口接收前端摄像头发送的流媒体数据;

列表获取单元,用于获取存储有通过分发接口注册的用户终端的分发列表;

分发单元,用于将所接收的流媒体数据通过分发端口分发至分发列表中的每个用户终端。

本申请实施例还提供了一种媒体服务器,所述媒体服务器包括:一个或多个处理器;存储器;以及一个或多个计算机程序,其中所述处理器和所述存储器相连接,所述一个或多个计算机程序被存储于所述存储器中,并配置为由所述处理器执行以实现上述任一项所述的流媒体数据分发方法。

本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现上述任一种流媒体数据分发方法。

本申请实施例通过在智慧交通系统中加入媒体服务器,当接收到信令服务器发送的流媒体数据接收信令之后,媒体服务器根据流媒体数据接收信令中的前端摄像头的前端标识信息创建媒体服务器和前端摄像头之间的目标会话控制对象,并为目标会话控制对象分配接收端口和分发端口,如此,媒体服务器根据流媒体数据接收信令中的不同前端标识信息,创建不同的目标会话控制对象,可利用媒体服务器为不同的目标会话控制对象分配不同的接收端口,以同时接收多个不同的前端摄像头通过对应的接收端口发送的流媒体数据;而且,媒体服务器为不同的目标会话控制对象分配不同的分发端口,将不同接收端口接收到的流媒体数据通过对应分发端口分发,可实现为不同用户终端分发不同前端摄像头的流媒体数据。此外,对于同一个目标会话控制对象,可获取存储有通过所述分发接口注册的用户终端的分发列表,如此,可实现将同一前端摄像头的流媒体数据分发至不同用户终端,通过上述方案可实现多个用户终端对多路摄像头的数据进行实时预览,解决了现有技术中的技术难题。

附图说明

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

图1是本申请实施例提供的智慧交通系统的场景示意图;

图2是本申请实施例提供的流媒体数据分发方法的流程示意图;

图3是本申请实施例提供的设备列表界面的示意图;

图4是本申请实施例提供的流媒体数据分发的示意图;

图5是本申请实施例提供的流媒体数据分发方法的另一流程示意图;

图6是本申请实施例提供的tcp流发送的示意图;

图7是本申请实施例提供的发送缓冲区的示意图;

图8是本申请实施例提供的流媒体数据分发方法的子流程示意图;

图9是本申请实施例提供的udp流发送的示意图;

图10是本申请实施例提供的udp流分发的示意图;

图11是本申请实施例提供的流媒体数据分发装置的结构示意图;

图12是本申请实施例提供的流媒体数据分发装置的另一结构示意图;

图13是本申请实施例提供的媒体服务器的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

在本申请实施例中,所述智慧交通系统,是指在交通领域,以维护国家安全和社会稳定、预防和打击违法犯罪活动为目的,综合应用视音频监控、通信、计算机网络、系统集成等技术,构建的具有信息采集、传输、交换、控制、显示、存储、处理等功能的能够实现不同设备及系统间互联、互通、互控的综合网络系统。智慧交通系统中包括前端摄像头、信令服务器、媒体服务器和用户终端。智慧交通系统中的前端摄像头通过国标协议与信令服务器通信,用户终端通过国标协议接入信令服务器。需要注意的是,媒体服务器是本申请实施例中的智慧交通系统中新加入的服务器。

在本申请实施例中,前端摄像头是指智慧交通系统中安装于监控现场的用于信息采集、编码、处理、存储、传输、安全控制的各类摄像头。用户终端包括经智慧交通系统注册并授权的、对系统内的数据和设备有操作需求的客户端以及平台终端,如客户端包括交警终端,平台终端包括智慧交通系统内其他平台内包括的终端,如转码平台的终端等。其中,终端包括但不限于智能手机、平板电脑、笔记本电脑、智能电视、智能机器人、个人计算机(pc,personalcomputer)、可穿戴设备、服务器计算机,等等。本申请实施例中的信令服务器、媒体服务器可以是单个服务器,也可以是服务器集群。

本申请实施例提供一种流媒体数据分发方法、装置、媒体服务器和计算机可读存储介质。本申请实施例提供的任一种流媒体数据分发装置,可以集成在媒体服务器中。

请参阅图1,图1是本申请实施例提供的智慧交通系统的场景示意图,该智慧交通系统包括至少一个前端摄像头11、信令服务器12、媒体服务器13和用户终端14。其中,前端摄像头11与服务器之间、各个服务器之间、用户终端14与服务器之间终端通过各种网关组成的互联网等相互连接,其中,可通过无线方式连接,也可通过有线方式连接。需要注意的是,媒体服务器13是新加入的服务器,以通过加入媒体服务器13解决本申请背景技术中提到的技术问题。

用户终端14通过sdp协议向信令服务器12发送某个前端摄像头11的流媒体数据的获取请求;信令服务器12接收到获取请求之后,检测所对应的前端摄像头11是否存在,以及是否可正常进行通信;若确定所对应的前端摄像头11存在且可正常进行通信,则生成流媒体数据接收信令,该流媒体数据接收信令中携带该前端摄像头11的前端标识信息,该前端标识信息可唯一的确定一个前端摄像头,该前端标识信息可以是前端摄像头所对应的id的码。信令服务器12将流媒体数据接收信令发送至媒体服务器13,媒体服务器13接收到媒体数据接收信令之后,根据媒体数据接收信令中携带的前端表示信息创建与该前端摄像头11之间的目标会话控制(session)对象,即目标session对象,并为目标session对象分为两个端口,接收端口和分发端口。媒体服务器13将分配的两个端口以及本地通信地址标识,如ip地址,发送至信令服务器12。信令服务器12,一方面将接收端口和ip地址发送至该前端摄像头11,如将接收端口和ip地址封装为符合sdp协议的信息,并发送至前端摄像头11,以告诉前端摄像头11可以将流媒体数据通过ip地址和接收端口发送至媒体服务器13,媒体服务器13接收该前端摄像头11发送的流媒体数据。另一方面,将分发端口和ip地址发送至用户终端14,以告诉用户终端14可以通过ip地址和分发端口向媒体服务器13注册,以接收从媒体服务器13发送的流媒体数据。

在一种情况下,如图1所示,在前端摄像头11和信令服务器12之间还包括有级联平台15,级联平台15与信令服务器12和前端摄像头11相互连接。如此,信令服务器12检测所对应的前端摄像头11是否存在,以及是否可正常进行通信时,信令服务器12向级联平台15发送检测信令,级联平台15向前端摄像头11转发该检测信令,前端摄像头11通过gb28281协议返回检测消息至级联平台15,级联平台15转发该检测消息至信令服务器12,若信令服务器12接收到返回的检测消息,则确定所对应的前端摄像头11存在且可正常进行通信。此外,信令服务器12将接收端口和ip地址发送至该前端摄像头11时,信令服务器12将接收端口和ip地址封装为符合sdp协议的信息,发送至级联平台15,级联平台15转发至前端摄像头11,以告诉前端摄像头11可以将流媒体数据通过ip地址和接收端口发送至媒体服务器13。

需要说明的是,图1所示的系统场景示意图仅仅是一个示例,本申请实施例描述的服务器以及场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着系统的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。

图2是本申请实施例提供的流媒体数据分发方法流程示意图,该方法应用于媒体服务器中,该流媒体数据分发方法的具体流程可以如下:

101,接收信令服务器发送的流媒体数据接收信令,该流媒体接收信令携带待接收流媒体数据的前端摄像头的前端标识信息,该流媒体数据接收信令在信令服务器接收到用户终端发送的前端摄像头的流媒体数据获取请求之后生成。

在一种场景下,如图3所示,在用户终端所在的设备列表界面上,有用户终端权限范围内可看到的设备列表,如可看到a区的设备列表下包括设备1、设备2、设备3、......等,其中,设备1、设备2、设备3分别对应3个不同的前端摄像头。当用户触发其中任意一个设备,如设备1,根据设备1所对应的前端摄像头的信息生成该前端摄像头的流媒体数据获取请求,将该获取请求发送至信令服务器,如将该获取请求封装为符合sdp协议的信息并发送至信令服务器。或者在其他场景下,可将前端摄像头的流媒体数据获取请求直接通过http的方式发送至信令服务器。

信令服务器中保存有媒体服务器和与信令服务器中连接着的所有前端摄像头的信息。当信令服务器接收到该获取请求后,根据获取请求中的前端摄像头的信息,检测所对应的前端摄像头是否可正常进行通信,以防止该前端摄像头损坏等情况。其中,信令服务器检测该前端摄像头是否可正常进行通信,可通过多种方式来实现。

例如,信令服务器定期向所有前端摄像头发送检测信令,若接收到前端摄像头返回的检测消息,则确定前端摄像头可正常进行通信,若未接收到前端摄像头返回的检测消息,则确定前端摄像头不可正常进行通信,并在信令服务器中标识前端摄像头的状态为可通信或不可通信。在该种情况下,信令服务器接收到获取请求后,根据获取请求中的前端摄像头的信息,检测该前端摄像头的状态,若该前端摄像头的状态为不可通信的状态,则确定该前端摄像头不可进行通信,若该前端摄像头的状态为可通信的状态,则确定该前端摄像头可正常进行通信。

或者,例如,信令服务器不再定期向所有前端摄像头发送检测信令,在该种情况下,信令服务器接收到获取请求后,根据获取请求中的前端摄像头的信息,向该前端摄像头发送检测信令,若接收到该前端摄像头返回的检测信息,则确定该前端摄像头可正常进行通信,若未接收到该前端摄像头返回的检测信息,则确定该前端摄像头不可进行通信。

或者,将以上方式进行结合,或者也可以采用其他的方式来确定。

若信令服务器确定该前端摄像头不可进行通信,向用户终端返回相应的提示信息,提示信息如暂时连接不上该前端摄像头。若信令服务器确定该前端摄像头可正常进行通信,根据该前端摄像头的信息,如前端摄像头的前端标识信息,生成流媒体数据接收信令,并向媒体服务器发送该流媒体数据接收信令。

媒体服务器接收信令服务器发送的该流媒体数据接收信令,并获取该流媒体数据接收信令中携带的前端摄像头的信息,如获取流媒体接收信令携带的待接收流媒体数据的前端摄像头的前端标识信息。

102,根据前端标识信息创建与前端摄像头之间的目标会话控制对象。

媒体服务器根据前端标识信息创建与前端摄像头之间的session对象。可以理解地,一个前端摄像头对应一个session对象;若存在多个不同用户终端访问多个不同的前端摄像头,则多个不同的前端摄像头对应多个session对象。本申请实施例中通过创建session对象的方式来将不同前端摄像头流媒体数据的访问独立开来。将所创建的与前端摄像头之间的session对象作为目标session对象。

103,为目标会话控制对象分配接收端口和分发端口。

为所创建的session对象,即目标session对象分配两个端口,具体地,从媒体服务器的空闲端口中选择两个端口,将该两个端口分配给所创建的session对象。现有终端和服务器中,一般有65536个端口,这其中的一些端口已经被使用,如浏览器使用80端口进行访问,还有很多空闲端口并没有被使用,这些空闲端口可以分配给很多个session对象。其中,为所创建的session对象分配的两个端口分别为接收端口和分发端口。其中,接收端口用来接收前端摄像头发送的流媒体数据,分发端口用来将前端摄像头接收的流媒体数据分发给用户终端。如此,一个session对象分别使用两个端口,一方面来接收流媒体数据,另一方面用来将接收的流媒体数据分发给用户终端。

104,向信令服务器发送接收端口、分发端口和本地通讯地址标识信息,以通过信令服务器将本地通讯地址标识信息和接收端口发送至前端摄像头,以使前端摄像头将流媒体数据发送至本地通讯地址标识信息所对应的本地媒体服务器的接收端口,并通过信令服务器将本地通讯地址标识信息和分发端口发送至用户终端,以使用户终端通过分发端口向本地通讯地址标识信息所对应的本地媒体服务器进行注册。

媒体服务器创建session对象,并为session对象分配接收端口和分发端口后,将所分配的接收端口、分发端口和本地通信地址标识信息发送至信令服务器。其中,本地通信地址标识信息可以是本地媒体服务器的ip地址,也可以是本地媒体服务器其他的可用于通信的标识信息。

信令服务器接收到媒体服务器发送的接收端口、分发端口和本地通信地址标识信息之后,一方面,将接收端口、本地通信地址标识信息发送至前端摄像头,如将接收端口、本地通信地址标识信息封装为符合sdp协议的消息,并发送至前端摄像头,以使前端摄像头将流媒体数据发送至本地通讯地址标识信息所对应的本地媒体服务器的接收端口。另一方面,信令服务器将分发端口和本地通信地址标识信息发送至用户终端,如将接收端口、本地通信地址标识信息封装为符合sdp协议的消息,并发送至用户终端,以使用户终端通过分发端口向本地通讯地址标识信息所对应的本地媒体服务器进行注册。

105,通过接收端口接收前端摄像头发送的流媒体数据。

前端摄像头接收到接收端口和地通信地址标识信息后,就将流媒体数据通过本地通讯地址标识信息所对应的本地媒体服务器的接收端口发送至本地媒体服务器,本地媒体服务器接收前端摄像头通过接收端口发送的流媒体数据。

其中,流媒体数据所对应的可以是tcp流,也可以是udp流。如此,流媒体数据所对应的数据包的类型为tcp数据包或者是udp数据包。

106,获取存储有通过分发接口注册的用户终端的分发列表。

用户终端接收到分发端口和地通信地址标识信息后,就通过本地通讯地址标识信息所对应的本地媒体服务器的分发端口向本地媒体服务器注册,本地媒体服务器保存有一个分发列表,若本地媒体服务器检测到用户终端通过分发接口注册,即本地媒体服务器接收到用户终端通过分发接口发送的注册包,则将用户终端添加至分发列表,并获取存储有已注册的用户终端的分发列表。其中,分发列表中的用户终端可以有一个,也可以有多个。若分发列表中的用户终端有多个,意味着多个用户终端请求同一个前端摄像头的流媒体数据。如此,实现同一个前端摄像头与多个用户终端之间的流媒体数据的传输。

107,将所接收的流媒体数据通过分发端口分发至分发列表中的每个用户终端。

若分发列表中的用户终端只有一个,则将所接收的流媒体数据通过分发端口分发至该用户终端;若分发列表中的用户终端有多个,则将所接收的流媒体数据通过分发端口分发至多个用户终端。因为流媒体数据所对应的媒体流可以是tcp流,也可以是udp流。若是tcp流,则将tcp流分发至分发列表中的每个用户终端;若是udp流,则将udp流分发至分发列表中的每个用户终端。

由于session对象可以有多个,每个session对象对应一个前端摄像头,每个session对象的分发端口可以注册一个或者多个用户终端,如此,可实现多个摄像头与多个不同用户终端之间的流媒体数据的传输,即实现多个用户终端对多路摄像头的流媒体数据的实时预览。

如图4所示,用户终端a和用户终端b想查看前端摄像头a所对应的流媒体数据,则媒体服务器创建与前端摄像头a之间的session对象1,并为session对象1分配接收端口1和分发端口1,以通过接收端口1接收前端摄像头a发送的流媒体数据,以接收通过分发端口1注册的用户终端a和用户终端b,并将所接收到的流媒体数据分发至用户终端a和用户终端b。同理,用户终端c想查看前端摄像头b所对应的流媒体数据,则媒体服务器创建与前端摄像头b之间的session对象2,并为session对象2分配接收端口2和分发端口2,以通过接收端口2接收前端摄像头b发送的流媒体数据,以接收通过分发端口2注册的用户终端c,并将所接收到的流媒体数据分发至用户终端c。以此类推。

可以理解地,同一时刻,在媒体服务器中创建多个session对象,如session对象1、session对象2、......、session对象n、......,即可同时接收多个不同前端摄像头发送的流媒体数据。对于同一个session对象,根据分发列表中的用户终端的数量,既可以将接收到的流媒体数据分发至一个用户终端,也可以分发至多个用户终端。

如此,通过在智慧交通系统中加入媒体服务器,当接收到信令服务器发送的流媒体数据接收信令之后,媒体服务器根据流媒体数据接收信令中的前端摄像头的前端标识信息创建媒体服务器和前端摄像头之间的目标会话控制对象,并为目标会话控制对象分配接收端口和分发端口,如此,媒体服务器根据流媒体数据接收信令中的不同前端标识信息,创建不同的目标会话控制对象,可利用媒体服务器为不同的目标会话控制对象分配不同的接收端口,以同时接收多个不同的前端摄像头通过对应的接收端口发送的流媒体数据;而且,媒体服务器为不同的目标会话控制对象分配不同的分发端口,将不同接收端口接收到的流媒体数据通过对应分发端口分发,可实现为不同用户终端分发不同前端摄像头的流媒体数据。此外,对于同一个目标会话控制对象,可获取存储有通过所述分发接口注册的用户终端的分发列表,如此可实现将同一前端摄像头的流媒体数据分发至不同用户终端;通过上述方案可实现多个用户终端对多路摄像头的数据进行实时预览,解决了现有技术中的技术难题。

图5是本申请实施例提供的流媒体数据分发方法的另一流程示意图,应用于媒体服务器端,该流媒体数据分发方法的具体流程包括:

201,接收信令服务器发送的流媒体数据接收信令,该流媒体接收信令携带待接收流媒体数据的前端摄像头的前端标识信息,该流媒体数据接收信令在信令服务器接收到用户终端发送的前端摄像头的流媒体数据获取请求之后生成。

202,检测会话控制对象列表中是否存在包括前端标识信息的会话控制对象。

在媒体服务器中,当用户请求不同的前端摄像头时,会为每个不同的前端摄像头创建一个session对象。需要注意的是,每个session对象都存在生命周期,如当检测到当前已没有用户终端请求该前端摄像头所对应的流媒体数据时,则将该前端摄像头所对应的session对象删除。当下一次检测到有用户终端请求该前端摄像头所对应的流媒体数据时,又为该前端摄像头创建一个session对象。或者也可以按照其他方式来设置每个session对象的生成周期。如此,在媒体服务器中,每一时刻会保存当前存在的session对象列表。

当媒体服务器接收到信令服务器发送的流媒体数据接收信令后,根据流媒体数据接收信令中的前端标识信息,检测session对象列表中是否存在包括该前端标识信息的session对象。

若session对象列表中包括该前端标识信息所对应的session对象,则执行步骤203,若session对象列表中不包括该前端标识信息所对应的session对象,则执行步骤205。

203,将所存在的会话控制对象确定为目标会话控制对象。

媒体服务器会为每个不同的前端摄像头创建一个session对象,以接收每个不同前端摄像头的流媒体数据。在一些情况下,当某个用户终端发送请求某个前端摄像头的流媒体数据的获取请求之后,紧接着又有另一用户终端向信令服务器发送该前端摄像头的流媒体数据的获取请求,如此无需再创建该前端摄像头的另一session对象,直接使用当前已存在的session对象即可。既实现了多个用户终端实时获取该前端摄像头的流媒体数据,又不会浪费媒体服务器的资源。

204,向信令服务器发送目标会话控制对象的分发接口和本地通讯地址标识信息,以通过信令服务器将本地通讯地址标识信息和分发端口发送至用户终端,以使用户终端通过分发端口向本地通讯地址标识信息所对应的媒体服务器进行注册。

可以理解地,若session对象列表中存在前端标识信息所对应的session对象,则表明当前该前端摄像头正在向媒体服务器传输流媒体数据,则无需向该前端摄像头发送接收端口和本地通讯地址标识信息了。只需将session对象的分发接口和本地通讯地址标识信息发送给对应的用户终端,以使用户终端通过分发端口向本地通讯地址标识信息所对应的媒体服务器进行注册,以便媒体服务器通过已注册的用户终端的分发列表向该用户终端分发所接收的流媒体数据。

205,根据前端标识信息创建与前端摄像头之间的目标会话控制对象。

即若session对象列表中不包括该前端标识信息所对应的session对象,则根据前端标识信息创建与前端摄像头之间的session对象,将所创建的session对象作为目标session对象。

206,为目标会话控制对象分配接收端口和分发端口。

207,向信令服务器发送接收端口、分发端口和本地通讯地址标识信息,以通过信令服务器将本地通讯地址标识信息和接收端口发送至前端摄像头,以使前端摄像头将流媒体数据发送至本地通讯地址标识信息所对应的本地媒体服务器的接收端口,并通过信令服务器将本地通讯地址标识信息和分发端口发送至用户终端,以使用户终端通过分发端口向本地通讯地址标识信息所对应的本地媒体服务器进行注册。

208,通过接收端口接收前端摄像头发送的流媒体数据。

209,确定所接收的流媒体数据所对应的数据包的类型。

流媒体数据所对应的媒体流可以是tcp流,也可以是udp流。即所对应的数据包的类型包括tcp数据包和udp数据包。

210,获取存储有通过分发接口注册的用户终端的分发列表。

211,检测分发列表是否为空。

分发列表中存储有通过分发接口注册的所有用户终端。检测分发列表是否为空。可以理解地,若媒体服务器检测到用户终端断开连接,则将分发列表中该用户终端的信息移除,如此,若检测到分发列表中所有用户终端都断开连接,则分发列表为空;若还存在用户终端未断开连接,则分发列表不为空。

若分发列表为空,则执行步骤212;若分发列表不为空,则执行步骤214。

212,检测接收端口是否还存在数据传输。

可以理解地,若分发列表为空,但接收端口还存在数据传输,则意味着前端摄像头还在向媒体服务器发送流媒体数据,但已经没有用户终端需要改流媒体数据了,即若分发列表为空,接收端口还存在数据传输,则执行步骤213;否则,若分发列表为空,接收端口同时不存在数据传输,则结束。

213,向信令服务器发送流媒体数据停止请求,以通过信令服务器将流媒体数据停止请求发送至前端摄像头,以使前端摄像头停止向媒体服务器发送流媒体数据。

向信令服务器发送流媒体数据停止请求,以使前端摄像头停止向媒体服务器发送流媒体数据,避免了将流媒体数据再发送至媒体服务器,避免了占用媒体服务器资源,如存储资源等。

214,根据数据包的类型将所接收的流媒体数据通过分发端口分发至分发列表中的每个用户终端。

根据数据包的类型不同,将所接收的流媒体数据通过分发端口分发至用户终端的步骤也存在不同。

图6是本申请实施例提供的tcp流发送的示意图。媒体服务器接收到流媒体数据后,将所接收的流媒体数据发送至发送缓冲区,再从发送缓冲区发送至网卡(硬件),媒体服务器的网卡将对应的流媒体数据通过网络发送至用户终端所对应的网卡(硬件),用户终端的网卡将流媒体数据接收至接收缓冲区,并由用户终端业务逻辑来处理所接收的流媒体数据。

对应地,步骤214,包括:根据分发列表中的用户终端的数量建立对应数量的发送缓冲区;将所接收的流媒体数据复制对应数量的份数,并分别发送至所创建的发送缓冲区;将发送缓冲区的流媒体数据通过分发端口分发至对应用户终端。

其中,建立发送缓冲区可理解为在媒体服务器中开辟对应的内存,来存储所接收的流媒体数据。根据分发列表中的用户终端的数量建立对应数量的发送缓冲区,如用户终端的数量为1个,则建立一个发送缓冲区;若用户终端的数量为n个,则建立n个发送缓冲区。将所接收的流媒体数据复制对应数量的份数,以使每个发送缓冲区中都会有对应的流媒体数据,并将发送缓冲区的流媒体数据通过分发端口发送至对应的用户终端。

如图7所示,为本申请实施例提供的发送缓冲区的示意图。媒体服务器通过session对象k的接收端口k接收前端摄像头k发送的流媒体数据。当前通过与接收端口k对应的分发端口k注册的用户终端包括用户终端m1、用户终端m2和用户终端m3。如此,用户终端的数量为3个,媒体服务器对应建立3个发送缓冲区:发送缓冲区1、发送缓冲区2、发送缓冲区3。并将所接收的流媒体数据复制,以得到3份流媒体数据:流媒体数据1、流媒体数据2、流媒体数据3。将3份流媒体数据分别发送至3个发送缓冲区,以通过分发接口将3个发送缓冲区中的流媒体数据分发至用户终端m1、用户终端m2和用户终端m3。

需要注意的是,tcp流的发送不确定,可理解为tcp的数据包的大小不确定。如发送缓冲区1第一次发送x1字节数的流媒体数据,第二次发送x2字节数的流媒体数据等;发送缓冲区2第一发送y1字节数的流媒体数据,第二次发送y2字节数的流媒体数据等。如此,必定是有多少个用户终端,就建立多少个发送缓冲区,以分别进行发送。

具体地如图8所示,将发送缓冲区的流媒体数据通过分发端口分发至对应用户终端的步骤,包括如下步骤:

301,获取接收的流媒体数据所对应的接收字节数,和每个发送缓冲区所发送的流媒体数据所对应的发送字节数。

302,检测发送字节数是否小于接收字节数。

需要注意的是,每个发送缓冲区所对应的发送字节数可能不一致。

303,在发送字节数小于接收字节数时,向媒体服务器的内核发送可写通知,以在对应发送缓冲区可写时继续将所接收的流媒体数据发送至对应发送缓冲区。

其中,若某个发送缓冲区的发送字节数小于接收字节数,则意味着该发送缓冲区已满,此时需要向媒体服务器的内核发送可写通知,该可写通知表示该发送缓冲区什么时候有空余空间,再进行通知,以便可以接着向该发送缓冲区发送所接收的流媒体数据,具体地,从上次发送的位置处接着开始发送数据。其中,可通过epoll通知机制的可写事件来实现发送可写通知。当发送缓冲区有空余空间时,取消可写通知。

需要注意的是,本申请实施例中,当发送缓冲区已满时,向媒体服务器的内核发送可写通知,只需要在发送缓冲已满时发送可写通知。相对于现有技术中的,只要检测到发送缓冲区有空余空间,就向媒体服务器的内核发送通知的方式来说,大大减少了向媒体服务器内核发送通知的次数,提高了媒体服务器的性能。

304,在发送字节数等于接收字节数时,回收对应发送缓冲区的内存资源。

当发送字节数等于接收字节数时,意味着所接收的流媒体数据全部发送完毕,如果流媒体数据全部发送完毕,则无需再进行发送,回收对应发送缓冲区的内存资源,以循环利用。

以上介绍的是tcp流通过分发端口分发至分发列表中每个用户终端的流程。下面将介绍udp流通过分发端口分发的流程。

udp和tcp发送流媒体数据的一个区别在于,udp没有发送缓冲区。

请参阅图9,图9是本申请实施例提供的udp流发送的示意图。媒体服务器接收到流媒体数据后,将所接收的流媒体数据直接发送至网卡(硬件),媒体服务器的网卡将对应的流媒体数据通过网络发送至用户终端所对应的网卡(硬件),用户终端的网卡将流媒体数据接收至接收缓冲区,并由用户终端业务逻辑来处理所接收的流媒体数据。即udp直接将所接收的流媒体数据所对应的数据包直接通过网卡转发。

对应地,步骤214,包括:遍历分发列表中的用户终端;将所接收的流媒体数据通过分发端口分发至所遍历的每个用户终端。

具体地,将所接收的流媒体数据通过分发端口分发至所遍历的每个用户终端的过程中,还包括:检测是否在预设时间间隔内接收到对应用户终端通过分发端口发送的心跳包;若否,则将对应用户终端从分发列表中移除;若是,则记录收到对应用户终端发送的心跳包的时间。

其中,udp是不可靠的网络传输协议,除了要实现向用户终端分发流媒体数据之外,还需要提供保活的支持,以确定当前用户终端是否还在接收流媒体数据,是否退出。因此,媒体服务器每隔预设时间间隔检测是否接收到对应用户终端发送的心跳包,若在预设时间间隔内未接收到用户终端通过分发端口发送的心跳包,则意味着该用户终端已经退出,不再需要接收流媒体数据了,将对应用户终端从分发列表中移除,若在预设时间间隔内接收到对应用户终端通过分发端口发送的心跳包,则意味着用户终端还在接收流媒体数据,则记录收到对应用户终端发送的心跳包的时间,以在达到预设时间间隔时,继续检测是否接收到对应用户终端发送的心跳包。需要注意是,tcp是可靠的网络传输协议,通过上层协议就可知用户终端是否退出。

其中,udp流对应的保活的支持还可通过定时器的方式来实现。例如,媒体服务器若接收到用户终端通过分发端口发送的注册包时,启动对应的定时器;若在定时器到达时,未接收到对应用户终端通过分发端口发送的心跳包,则将对应用户终端从分发列表中移除;若在定时器到达之前,接收到对应用户终端通过分发端口发送的心跳包,则重置定时器。

请参阅图10,图10是本申请实施例提供的udp流分发的示意图。媒体服务器的接收端口接收到流媒体数据后就将所接收的流媒体数据分发至分发列表中的用户终端,如用户终端a、用户终端b、用户终端c、用户终端d等。媒体服务器的分发端口会接收到用户终端发送的注册包,以及心跳包。若接收到注册包,则将该用户终端加入至分发列表,以将接收到的流媒体数据分发至该用户终端。若是心跳包,则通过上述所述的逻辑进行处理。可以理解地,tcp流分发时也会接收到通过对应分发端口发送的用户终端的注册包,将接收到注册包之后,将该用户终端加入至分发列表,以按照tcp流的处理逻辑进行后续处理。

根据上述实施例所描述的方法,本实施例将从流媒体数据分发装置的角度进一步进行描述,该流媒体数据分发装置具体可以作为独立的实体来实现,也可以集成在媒体服务器中来实现。该流媒体数据分发装置应用于智慧交通系统中,该智慧交通系统包括前端摄像头、信令服务器、媒体服务器、以及用户终端,前端摄像头基于国标协议与信令服务器通信,用户终端通过网络接入信令服务器,信令服务器连接媒体服务器。

如图11所示,该流媒体数据分发装置包括信令接收单元401、会话确定单元402、分配单元403、信令发送单元404、媒体接收单元405、列表获取单元406以及分发单元407。

信令接收单元401,用于接收信令服务器发送的流媒体数据接收信令,流媒体接收信令携带待接收流媒体数据的前端摄像头的前端标识信息,流媒体数据接收信令在信令服务器接收到用户终端发送的前端摄像头的流媒体数据获取请求之后生成。

会话确定单元402,用于根据前端标识信息创建与前端摄像头之间的目标会话控制对象。

分配单元403,用于为目标会话控制对象分配接收端口和分发端口。

信令发送单元404,用于向信令服务器发送接收端口、分发端口和本地通讯地址标识信息,以通过信令服务器将本地通讯地址标识信息和接收端口发送至前端摄像头,以使前端摄像头将流媒体数据发送至本地通讯地址标识信息所对应的本地媒体服务器的接收端口,并通过信令服务器将本地通讯地址标识信息和分发端口发送至用户终端,以使用户终端通过分发端口向本地通讯地址标识信息所对应的本地媒体服务器进行注册。

媒体接收单元405,用于通过接收端口接收前端摄像头发送的流媒体数据。

列表获取单元406,用于获取存储有通过分发接口注册的用户终端的分发列表。

分发单元407,用于将所接收的流媒体数据通过分发端口分发至分发列表中的每个用户终端。

本申请的实施例中也提供了另一流媒体数据分发装置,如图12所示。该流媒体数据分发装置包括信令接收单元401、会话确定单元402、分配单元403、信令发送单元404、媒体接收单元405、列表获取单元406、分发单元407、类型确定单元408、检测单元409以及停止单元410。其中,与图11所示的实施例的区别在于:增加了类型确定单元408、检测单元409以及停止单元410。其他对应的单元请参看上文中的描述。

检测单元409,用于在接收信令服务器发送的流媒体数据接收信令之后,检测会话控制对象列表中是否存在包括前端标识信息的会话控制对象。

会话确定单元402,用于若在会话控制对象列表中存在包括前端标识信息的会话控制对象,将所存在的前端标识信息的会话控制对象确定为目标会话控制对象。

信令发送单元404,用于在将所存在的前端标识信息的会话控制对象确定为目标会话控制对象之后,向信令服务器发送目标会话控制对象的分发接口和本地通讯地址标识信息,以通过信令服务器将本地通讯地址标识信息和分发端口发送至用户终端,以使用户终端通过分发端口向本地通讯地址标识信息所对应的媒体服务器进行注册。

会话确定单元402,还用于若在会话控制对象列表中不存在包括前端标识信息的会话控制对象,根据前端标识信息创建与前端摄像头之间的目标会话控制对象。

类型确定单元408,用于在接收端口接收前端摄像头发送的流媒体数据之后,确定所接收的流媒体数据所对应的数据包的类型。

检测单元409,还用于在获取存储有通过分发接口注册的用户终端的分发列表之后,检测分发列表是否为空,若分发列表为空,则检测接收端口是否还存在数据传输。

停止单元410,用于若分发列表为空且接收端口还存在数据传输,则向信令服务器发送流媒体数据停止请求,以通过信令服务器将流媒体数据停止请求发送至前端摄像头,以使前端摄像头停止向媒体服务器发送流媒体数据。

分发单元407,用于若分发列表不为空,则根据数据包的类型将所接收的所述流媒体数据通过分发端口分发至分发列表中的每个用户终端。

具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现。以上装置和各单元的具体实现过程,以及所达到的有益效果,可以参考前述应用于区块链的节点中的方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。

本申请实施例还提供一种媒体服务器,如图13所示,其示出了本申请实施例所涉及的媒体服务器的结构示意图,具体来讲:

该媒体服务器可以包括一个或者一个以上处理核心的处理器501、一个或一个以上计算机可读存储介质的存储器502、射频(radiofrequency,rf)电路503、电源504、输入单元505、以及显示单元506等部件。本领域技术人员可以理解,图中示出的媒体服务器结构并不构成对媒体服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:

处理器501是该媒体服务器的控制中心,利用各种接口和线路连接整个媒体服务器的各个部分,通过运行或执行存储在存储器502内的软件程序和/或模块,以及调用存储在存储器502内的数据,执行媒体服务器的各种功能和处理数据,从而对媒体服务器进行整体监控。可选的,处理器501可包括一个或多个处理核心;优选的,处理器501可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器501中。

存储器502可用于存储软件程序(计算机程序)以及模块,处理器501通过运行存储在存储器502的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器502可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据媒体服务器的使用所创建的数据等。此外,存储器502可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器502还可以包括存储器控制器,以提供处理器501对存储器502的访问。

rf电路503可用于收发信息过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器501处理;另外,将涉及上行的数据发送给基站。通常,rf电路503包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(sim)卡、收发信机、耦合器、低噪声放大器(lna,lownoiseamplifier)、双工器等。此外,rf电路503还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(gsm,globalsystemofmobilecommunication)、通用分组无线服务(gprs,generalpacketradioservice)、码分多址(cdma,codedivisionmultipleaccess)、宽带码分多址(wcdma,widebandcodedivisionmultipleaccess)、长期演进(lte,longtermevolution)、电子邮件、短消息服务(sms,shortmessagingservice)等。

媒体服务器还包括给各个部件供电的电源504(比如电池),优选的,电源504可以通过电源管理系统与处理器501逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源504还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。

该媒体服务器还可包括输入单元505,该输入单元505可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体的实施例中,输入单元505可包括触敏表面以及其他输入设备。触敏表面,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面上或在触敏表面附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器501,并能接收处理器501发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面。除了触敏表面,输入单元505还可以包括其他输入设备。具体地,其他输入设备可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。

该媒体服务器还可包括显示单元506,该显示单元506可用于显示由用户输入的信息或提供给用户的信息以及媒体服务器的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元506可包括显示面板,可选的,可以采用液晶显示器(lcd,liquidcrystaldisplay)、有机发光二极管(oled,organiclight-emittingdiode)等形式来配置显示面板。进一步的,触敏表面可覆盖显示面板,当触敏表面检测到在其上或附近的触摸操作后,传送给处理器501以确定触摸事件的类型,随后处理器501根据触摸事件的类型在显示面板上提供相应的视觉输出。虽然在图中,触敏表面与显示面板是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面与显示面板集成而实现输入和输出功能。

尽管未示出,媒体服务器还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,媒体服务器中的处理器501会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器502中,并由处理器501来运行存储在存储器502中的应用程序,从而实现各种功能,如下:

接收信令服务器发送的流媒体数据接收信令,流媒体接收信令携带待接收流媒体数据的前端摄像头的前端标识信息,流媒体数据接收信令在信令服务器接收到用户终端发送的前端摄像头的流媒体数据获取请求之后生成;根据前端标识信息创建与前端摄像头之间的目标会话控制对象;为目标会话控制对象分配接收端口和分发端口;向信令服务器发送接收端口、分发端口和本地通讯地址标识信息,以通过信令服务器将本地通讯地址标识信息和接收端口发送至前端摄像头,以使前端摄像头将流媒体数据发送至本地通讯地址标识信息所对应的本地媒体服务器的接收端口,并通过信令服务器将本地通讯地址标识信息和分发端口发送至用户终端,以使用户终端通过分发端口向本地通讯地址标识信息所对应的本地媒体服务器进行注册;通过接收端口接收前端摄像头发送的流媒体数据;获取存储有通过分发接口注册的用户终端的分发列表;将所接收的流媒体数据通过分发端口分发至分发列表中的每个用户终端。

该媒体服务器可以实现本申请实施例所提供的流媒体数据分发方法任一实施例中的步骤,因此,可以实现本申请实施例所提供的任一流媒体数据分发方法所能实现的有益效果,详见前面的实施例,在此不再赘述。

本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令(计算机程序)来完成,或通过指令(计算机程序)控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。为此,本发明实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本发明实施例所提供的应用于媒体服务器端的流媒体数据分发方法中任一实施例的步骤。

其中,该存储介质可以包括:只读存储器(rom,readonlymemory)、随机存取记忆体(ram,randomaccessmemory)、磁盘或光盘等。

由于该存储介质中所存储的指令,可以执行本发明实施例所提供的任一流媒体数据分发方法实施例中的步骤,因此,可以实现本发明实施例所提供的任一流媒体数据分发方法所能实现的有益效果,详见前面的实施例,在此不再赘述。

以上对本申请实施例所提供的一种流媒体数据分发方法、装置、媒体服务器以及存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

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