Processing

Please wait...

Settings

Settings

Goto Application

1. WO2020140625 - STREAMING MEDIA TRANSMISSION CONTROL METHOD AND APPARATUS, STORAGE MEDIUM, AND COMPUTER DEVICE

Document

说明书

发明名称 0001   0002   0003   0004   0005   0006   0007   0008   0009   0010   0011   0012   0013   0014   0015   0016   0017   0018   0019   0020   0021   0022   0023   0024   0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036   0037   0038   0039   0040   0041   0042   0043   0044   0045   0046   0047   0048   0049   0050   0051   0052   0053   0054   0055   0056   0057   0058   0059   0060   0061   0062   0063   0064   0065   0066   0067  

权利要求书

1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   19   20  

附图

1   2   3   4  

说明书

发明名称 : 流媒体传输控制方法、装置及存储介质、计算机设备

[0001]
本申请要求于2019年1月4日提交中国专利局、申请号为201910008767.1,发明名称为“流媒体传输控制方法、装置及存储介质、计算机设备”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。

技术领域

[0002]
本申请涉及流媒体传输技术领域,具体而言,本申请涉及一种流媒体传输控制方法、装置及存储介质、计算机设备。

背景技术

[0003]
随着互联网的普及,利用网络传输音频流和视频流等流媒体越来越广泛。例如,广播电视媒体,采用互联网实现流媒体的传输,大大提高了音频和视频流的传输速度。流媒体技术的出现,实现了实时音频和视频流的快速传输。
[0004]
流媒体,又叫流式媒体,属于多媒体的其中一种。具体指的是,用户一边传,另一用户一边播的媒体。用户一边不断地接收并观看或收听被传输的媒体。传统地,使用live555作为流媒体传输方案时,任务的调度是使用查询机制,发明人意识到,该方案CPU使用率低,在调度任务密集,传输实时性要求比较高的情况下,视频传输领域明显处于劣势,并且严重地限制了摄像头接入服务器的路数。
[0005]
发明内容
[0006]
本申请提出一种流媒体传输控制方法、装置及存储介质、计算机设备,以提高流媒体传输的处理器的利用效率且提高并发量较大传输领域的性能。
[0007]
本申请提供以下方案:
[0008]
一种流媒体传输控制方法,包括:创建多个监听端口,所述监听端口用于监听客户端发送的流媒体传输请求;创建主任务线程和多个子任务线程;所述主任务线程用于控制系统流媒体传输,所述子任务线程用于控制每个客户端的流媒体传输;当所述主任务线程通过所述监听端口监听到客户端发送的流媒体传输请求时,所述主任务线程移除线程中的所述监听端口,控制所述子任务线程接管所述监听端口对应的流媒体传输。
[0009]
一种流媒体传输控制装置,包括:第一创建模块,用于创建多个监听端口,所述监听端口用于监听客户端发送的流媒体传输请求;第二创建模块,用于创建主任务线程和多个子任务线程;所述主任务线程用于控制系统流媒体传输,所述子任务线程用于控制每个客户端的流媒体传输;处理模块,用于当所述主任务线程通过所述监听端口监听到客户端发送的流媒体传输请求时,所述主任务线程移除线程中的所述监听端口,控制所述子任务线程接管所述监听端口对应的流媒体传输。
[0010]
一种存储介质,其上存储有计算机程序;所述计算机程序适于由处理器加载并执行一种流媒体传输控制方法的下述步骤:创建多个监听端口,所述监听端口用于监听客户端发送的流媒体传输请求;创建主任务线程和多个子任务线程;所述主任务线程用于控制系统流媒体传输,所述子任务线程用于控制每个客户端的流媒体传输;当所述主任务线程通过所述监听端口监听到客户端发送的流媒体传输请求时,所述主任务线程移除线程中的所述监听端口,控制所述子任务线程接管所述监听端口对应的流媒体传输。
[0011]
一种计算机设备,其包括:一个或多个处理器;存储器;一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个应用程序配置用于执行一种流媒体传输控制方法的下述步骤:创建多个监听端口,所述监听端口用于监听客户端发送的流媒体传输请求;创建主任务线程和多个子任务线程;所述主任务线程用于控制系统流媒体传输,所述子任务线程用于控制每个客户端的流媒体传输;当所述主任务线程通过所述监听端口监听到客 户端发送的流媒体传输请求时,所述主任务线程移除线程中的所述监听端口,控制所述子任务线程接管所述监听端口对应的流媒体传输。
[0012]
上述实施例提供的流媒体传输控制方法,创建多个子任务线程用于单独处理每个客户端与流媒体服务器之间关于流媒体传输的数据交互。在主任务线程监听到客户端发起的流媒体传输的请求时,主任务线程调度对应子任务线程处理该请求对应的流媒体传输任务,解决了现有技术中采用单线程处理流媒体传输造成的CPU(处理器)使用率低,调度任务密集,不利于传输实时性要求比较高的传输领域,并且严重的限制了客户端接入服务器的数量等问题。因此,可大大提高流媒体传输的CPU的利用效率,同时也提高了并发量较大传输领域的性能。
[0013]
本申请附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本申请的实践了解到。

附图说明

[0014]
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
[0015]
图1为本申请提供的一种流媒体传输控制方法的一实施例中的方法流程图;
[0016]
图2为本申请提供的步骤S300的一实施例的方法流程图;
[0017]
图3为本申请提供的一种流媒体传输控制装置的一实施例中的结构框图;
[0018]
图4为本申请提供的一种计算机设备的一实施例中的结构示意图。

具体实施方式

[0019]
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
[0020]
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式 “一”、“一个”、“所述”和“该”也可包括复数形式,这里使用的“第一”、“第二”仅用于区别同一技术特征,并不对该技术特征的顺序和数量等加以限定。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
[0021]
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
[0022]
本申请提供一种流媒体传输控制方法。在一实施例中,如图1所示,该流媒体传输控制方法包括如下步骤:
[0023]
S100,创建多个监听端口,所述监听端口用于监听客户端发送的流媒体传输请求。
[0024]
在本实施例中,系统在建立流媒体服务器时,创建多个监听端口。该监听端口用于监听系统是否接收到客户端发送的流媒体传输请求。当客户端向系统的流媒体服务器发送流媒体传输请求时,如上传流媒体数据请求或下载流媒体数据请求,系统通过监听端口即可监听到客户端发送的请求。在一具体实施方式中,在流媒体服务器的基类GenericMediaServer初始化时,创建多个socket监听端口。
[0025]
在一实施例中,步骤S100包括:获取历史数据中同一时间段内,接收到所述流媒体传输请求的数量,根据该数量设置预设数量的所述监听端口。
[0026]
在该实施例中,所述监听端口为套接字socket监听端口。系统在创建监听端口时,可直接由系统预设监听端口的数量。也可以是,获取历史数据中同一时间段,如一天时间内,接收到客户端发送的请求流媒体传输的数量,获取所述同一时间段内所述数量的最大值,将该最大值作为所述设置的预设数量。系统创建所述预设数量的监听端口,以监听客户端向流媒体服务器发送的请求。
[0027]
在一实施方式中,监听端口的数量通过以下方式确定:系统获取历史数据中同一时间段内接收到流媒体传输请求的数量,根据该数量确定监听端口的数量。其中,不同的时间段内系统接收到流媒体传输请求的数量有可能不同。如早上时间段、中午时间段以及晚上时间段,用户在不同时间段向系统请求流媒体传输的数量不同。系统获取历史数据中,当前时间段内接收到流媒体传输请求的数量,根据此数量确定创建的监听端口的数量。一般地,监听端口的数量大于或者等于接收到的流媒体传输请求的数量,以保证系统能够快速确定每个所述请求,并对请求进行处理。
[0028]
S200,创建主任务线程和多个子任务线程;所述主任务线程用于控制系统流媒体传输,所述子任务线程用于控制每个客户端的流媒体传输。
[0029]
在本实施例中,系统创建多个任务线程。其中,包括主任务线程和多个子任务线程。主任务线程用于执行整个流媒体服务器对于流媒体传输的控制。例如,当监听到客户端发送的下载流媒体数据的请求时,将对应客户端上传的经过流式传输处理的流媒体数据下发给对应的客户端。或者,通过使用查询机制对任务进行调度等。子任务线程用于单独处理监听端口对应的客户端与流媒体服务器之间的流媒体传输。在该实施例中,每个子任务线程对应独立处理一个客户端和服务器之间的数据交互。子任务线程接收主任务线程的调控信息,并执行调控信息对应的任务。
[0030]
S300,当所述主任务线程通过所述监听端口监听到客户端发送的流媒体传输请求时,所述主任务线程移除线程中的所述监听端口,控制所述子任务线程接管所述监听端口对应的流媒体传输。
[0031]
在本实施例中,当主任务线程通过监听端口监听到客户端发送的流媒体传输请求时,控制子任务线程处理该监听端口对应的流媒体传输。例如,主任务线程监听到客户端向流媒体服务器发送的下载流媒体数据时,主任务线程调度其中一个子任务线程,执行该客户端与流媒体服务器的关于下载流媒体数据的完整的流程。
[0032]
上述流媒体传输控制方法,创建多个子任务线程用于单独处理每个客户端与流媒体服务器之间关于流媒体传输的数据交互,在主任务线程监听到客户端发起的流媒体传输的请求时,主任务线程调度对应子任务线程处 理该请求对应的流媒体传输任务,解决了现有技术中采用单线程处理流媒体传输造成的CPU(处理器)使用率低,调度任务密集,不利于传输实时性要求比较高的传输领域,并且严重的限制了客户端接入服务器的数量等问题。因此,可大大提高流媒体传输的CPU的利用效率,在也提高了并发量较大传输领域的性能。
[0033]
在一实施例中,步骤S200包括:在live555的流媒体服务器基类GenericMediaServer初始化时,根据多个所述子任务线程的调度情况实例化live555的BasicUsageEnvironment和BasicTaskScheduler,以由所述主任务线程对多个所述子任务线程进行任务调度。此时,步骤S300包括:当所述主任务线程通过任一监听端口监听到客户端发送的实时流协议RTSP的相关请求时,所述主任务线程移除线程中的所述任一监听端口,控制所述子任务线程接管所述任一监听端口的操作。
[0034]
在该实施例中,采用live555开源项目对流媒体传输进行控制。在其对应的流媒体服务器的基类GenericMediaServer初始化时,对BasicUsageEnvironment和BasicTaskScheduler进行实例化,如下所示:
[0035]
threadTask[temp].SubScheduler=BasicTaskScheduler::createNew();
[0036]
threadTask[temp].SubEnv=BasicUsageEnvironment::createNew(*thread Task[temp].SubScheduler,temp+1);
[0037]
UsageEvironment类和TaskSheduler类以及他们的子类实例化后,系统构建了一个基本的应用框架。主任务线程可以对多个子任务线程进行相应的任务调度。其中,任务调度为对流媒体传输的任务调度。
[0038]
具体地,在基类GenericMediaServer初始化的时候,系统创建多个socket监听端口,并且创建任务线程数以及主任务线程和子任务线程。在每一个子任务线程中独立处理每个客户端和流媒体服务器之间的数据交互,如RTSP握手协议,RTP或者PS流的数据处理。因此,系统增加了单独处理客户端和流媒体服务器之间数据交互的甬道的数量,对每个甬道进行独立的任务调度,也即是BasicUsageEnvironment和BasicTaskScheduler实例化。
[0039]
在该实施例的一个实施方式中,如图2所示,步骤S300,包括:
[0040]
S310,当所述主任务线程通过所述监听端口监听到客户端发送的流媒体传输请求时,判断多个所述子任务线程中是否存在空闲任务线程。
[0041]
S320,若有,从所述空闲任务线程中随机获取任一任务线程,控制该任务线程处理该监听端口对应的流媒体传输。
[0042]
S330,若无,则将该客户端发送的流媒体传输请求设置为等待处理状态。
[0043]
在该实施例中,主任务线程监听到端口接收到相关数据,即接收到客户端发送的流媒体数据请求数据时,查询空闲的子任务线程,将客户端关联到空闲的子任务线程,然后在主任务进程中移除监听端口,并由子任务线程接管该监听端口相关的操作。
[0044]
在一具体实施例中,客户端的DESCRIBE请求进到流媒体服务器后,服务器会调用函数handleCmd_DESCRIBE,在此函数中主要是在RTSPServer中查找对应的ServerMediaSession,然后调用函数lookupServerMediaSession;
[0045]
ServerMediaSession*session=fOurServer.lookupServerMediaSession(
[0046]
PaEnv,this,urlTotalSuffix);
[0047]
此处的PaEnv是在初始化上述GenericMediaServer类时传进来;lookupServerMediaSession函数的主要任务是判断是否存在空闲的子任务线程,如果不存在则返上一级,从map表fClientConnections查询,如果没有则返回失败。如果有,则建立获取客户端数据流的通道,回应客户端,返回200ok;后续在这个函数中完成整个rtsp协议的交互。
[0048]
在该实施例的一个实施方式中,步骤S310中,所述判断多个所述子任务线程中是否存在空闲任务线程之前,还包括:对所述子任务线程中的空闲任务线程设置标识信息。所述判断多个所述子任务线程中是否存在空闲任务线程,包括:通过识别所述标识信息判断多个所述子任务线程中是否存在空闲任务线程。此时,步骤S320包括:获取任一包含所述标识信息的任务线程,控制该任务线程处理该监听端口对应的流媒体传输。
[0049]
在该实施方式中,对多个所述子任务线程中空闲的任务线程设置标识 信息,服务器只需识别到多个所述子任务线程中是否包含标识信息,即可获知多个所述子任务线程中是否包含有空闲的任务线程,无需对每个子任务线程内是否执行有相应的任务进行细节判断,以避免服务器过压以及增加处理器的工作量。因此,服务器可通过获取任一包含标识信息的任务线程,确定该任务线程为空闲线程,控制该任务线程处理该监听端口对应的流媒体传输。
[0050]
进一步地,所述获取任一包含所述标识信息的任务线程以处理该监听端口对应的流媒体传输之后,还包括:解除该任一包含所述标识信息的任务线程的标识信息;当该任一包含所述标识信息的任务线程终止处理流媒体传输的相关操作之后,释放该任务线程的任务,并对该任务线程设置所述标识信息。具体地,流媒体服务器可在包含有标识信息的子任务线程中获取任一子任务线程处理流媒体传输的相关操作。当子任务线程处理完对应的流媒体传输的相关操作之后,或者,当子任务线程结束对应的流媒体传输的相关操作之后,将该子任务线程重新设置上标识信息。因此,可以对子任务线程进行反复的重复利用,提高CPU的利用效率,提高多路流媒体处理性能高。
[0051]
在该实施方式的一个实施例中,所述客户端发送的流媒体传输请求包括上传流媒体数据的请求和下载流媒体数据的请求。所述当所述主任务线程通过所述监听端口监听到客户端发送的流媒体传输请求时,判断多个所述子任务线程中是否存在空闲任务线程;若有,从所述空闲任务线程中随机获取任一任务线程,控制该任务线程处理该监听端口对应的流媒体传输,包括:当所述主任务线程通过所述监听端口监听到客户端发送的下载流媒体数据的请求时,判断多个所述子任务线程中是否存在空闲任务线程,若有,从所述空闲任务线程中随机获取任一任务线程,利用该任务线程执行判断所述子任务线程中非空闲任务线程中是否包含有处理与所述下载流媒体数据的请求对应的上传流媒体数据的请求的任务线程;若无,利用该任务线程向客户端发送无响应数据的反馈信息,并对所述下载流媒体数据的请求进行该请求无响应数据的标注,以用于根据该标注识别出所述下载流媒体数据的请求无响应数据。
[0052]
在该实施例中,流媒体服务器在监听到端口接收到客户端发送的请求数据后,判断客户端向服务器发送的是否为下载流媒体数据的请求。若是,则进一步判断子任务线程中是否包含有该下载流媒体数据的请求对应的上传流媒体数据请求处理的子任务线程,若无,则直接向客户端发送无响应数据的反馈信息。进一步地,对该下载流媒体数据的请求进行标注。若流媒体服务器在监听到端口接收到该下载流媒体数据的请求时,可直接向客户端发送无响应数据的反馈信息而无需再次检查是否有对应的子任务处理器该下载流媒体数据的请求对应的上传流媒体数据的请求的子任务线程,减少了处理器的工作量,减轻了服务器的压力。
[0053]
本申请还提供一种流媒体传输控制装置。在一实施例中,如图3所示,该流媒体传输控制装置包括第一创建模块10、第二创建模块20以及处理模块30。
[0054]
第一创建模块10用于创建多个监听端口,所述监听端口用于监听客户端发送的流媒体传输请求。在本实施例中,系统在建立流媒体服务器时,创建多个监听端口。该监听端口用于监听系统是否接收到客户端发送的流媒体传输请求。当客户端向系统的流媒体服务器发送流媒体传输请求时,如上传流媒体数据请求或下载流媒体数据请求,系统通过监听端口即可监听到客户端发送的请求。在一具体实施方式中,在流媒体服务器的基类GenericMediaServer初始化时,创建多个socket监听端口。
[0055]
第二创建模块20用于创建主任务线程和多个子任务线程;所述主任务线程用于控制系统流媒体传输,所述子任务线程用于控制每个客户端的流媒体传输。在本实施例中,系统创建多个任务线程。其中,包括主任务线程和多个子任务线程。主任务线程用于执行整个流媒体服务器对于流媒体传输的控制。例如,当监听到客户端发送的下载流媒体数据的请求时,将对应客户端上传的经过流式传输处理的流媒体数据下发给对应的客户端。或者,通过使用查询机制对任务进行调度等。子任务线程用于单独处理监听端口对应的客户端与流媒体服务器之间的流媒体传输。在该实施例中,每个子任务线程对应独立处理一个客户端和服务器之间的数据交互。子任务线程接收主任务线程的调控信息,并执行调控信息对应的任务。
[0056]
处理模块30用于当所述主任务线程通过所述监听端口监听到客户端发送的流媒体传输请求时,所述主任务线程移除线程中的所述监听端口,控制所述子任务线程接管所述监听端口对应的流媒体传输。在本实施例中,当主任务线程通过监听端口监听到客户端发送的流媒体传输请求时,控制子任务线程处理该监听端口对应的流媒体传输。例如,主任务线程监听到客户端向流媒体服务器发送的下载流媒体数据时,主任务线程调度其中一个子任务线程,执行该客户端与流媒体服务器的关于下载流媒体数据的完整的流程。
[0057]
在其他实施例中,本申请提供的流媒体传输控制装置中的各个模块还用于执行本申请所述的流媒体传输控制方法中,对应各个步骤执行的操作,在此不再做详细的说明。
[0058]
本申请还提供一种存储介质。该存储介质上存储有计算机程序;所述计算机程序被处理器执行时,实现上述任一实施例所述的流媒体传输控制方法。存储介质可以是非易失性存储介质,也可以是易失性存储介质。存储介质可以是存储器。例如,内存储器或外存储器,或者包括内存储器和外存储器两者。内存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)、快闪存储器、或者随机存储器。外存储器可以包括硬盘、软盘、ZIP盘、U盘、磁带等。本申请所公开的存储介质包括但不限于这些类型的存储器。本申请所公开的存储器只作为例子而非作为限定。
[0059]
本申请还提供一种计算机设备。一种计算机设备包括:一个或多个处理器;存储器;一个或多个应用程序。其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个应用程序配置用于执行上述任一实施例所述的流媒体传输控制方法。
[0060]
图4为本申请一实施例中的计算机设备的结构示意图。本实施例所述计算机设备可以是服务器、个人计算机以及网络设备。如图4所示,设备包括处理器403、存储器405、输入单元407以及显示单元409等器件。本领域技术人员可以理解,图4示出的设备结构器件并不构成对所有设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件。存储器 405可用于存储应用程序401以及各功能模块,处理器403运行存储在存储器405的应用程序401,从而执行设备的各种功能应用以及数据处理。存储器可以是内存储器或外存储器,或者包括内存储器和外存储器两者。内存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)、快闪存储器、或者随机存储器。外存储器可以包括硬盘、软盘、ZIP盘、U盘、磁带等。本申请所公开的存储器包括但不限于这些类型的存储器。本申请所公开的存储器只作为例子而非作为限定。
[0061]
输入单元407用于接收信号的输入,以及接收用户输入的关键字。输入单元407可包括触控面板以及其它输入设备。触控面板可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并根据预先设定的程序驱动相应的连接装置;其它输入设备可以包括但不限于物理键盘、功能键(比如播放控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。显示单元409可用于显示用户输入的信息或提供给用户的信息以及计算机设备的各种菜单。显示单元409可采用液晶显示器、有机发光二极管等形式。处理器403是计算机设备的控制中心,利用各种接口和线路连接整个电脑的各个部分,通过运行或执行存储在存储器405内的软件程序和/或模块,以及调用存储在存储器内的数据,执行各种功能和处理数据。
[0062]
在一实施方式中,设备包括一个或多个处理器403,以及一个或多个存储器405,一个或多个应用程序401。其中所述一个或多个应用程序401被存储在存储器405中并被配置为由所述一个或多个处理器403执行,所述一个或多个应用程序401配置用于执行以上实施例所述的流媒体传输控制方法。
[0063]
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介 质中。
[0064]
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括存储器、磁盘或光盘等。
[0065]
以上所述仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
[0066]
应该理解的是,在本申请各实施例中的各功能单元可集成在一个处理模块中,也可以各个单元单独物理存在,也可以两个或两个以上单元集成于一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
[0067]
以上所述仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

权利要求书

[权利要求 1]
一种流媒体传输控制方法,包括: 创建多个监听端口,所述监听端口用于监听客户端发送的流媒体传输请求; 创建主任务线程和多个子任务线程;所述主任务线程用于控制系统流媒体传输,所述子任务线程用于控制每个客户端的流媒体传输; 当所述主任务线程通过所述监听端口监听到客户端发送的流媒体传输请求时,所述主任务线程移除线程中的所述监听端口,控制所述子任务线程接管所述监听端口对应的流媒体传输。
[权利要求 2]
根据权利要求1所述的方法,所述创建多个监听端口,包括: 获取历史数据中同一时间段内,接收到所述流媒体传输请求的数量,根据该数量设置预设数量的所述监听端口。
[权利要求 3]
根据权利要求1所述的方法,所述创建主任务线程和多个子任务线程,包括:在live555的流媒体服务器基类GenericMediaServer初始化时,根据多个所述子任务线程的调度情况实例化live555的BasicUsageEnvironment和BasicTaskScheduler,以由所述主任务线程对多个所述子任务线程进行任务调度; 所述当所述主任务线程通过所述监听端口监听到客户端发送的流媒体传输请求时,所述主任务线程移除线程中的所述监听端口,控制所述子任务线程接管所述监听端口对应的流媒体传输,包括:当所述主任务线程通过任一监听端口监听到客户端发送的实时流协议RTSP的相关请求时,所述主任务线程移除线程中的所述任一监听端口,控制所述子任务线程接管所述任一监听端口的操作。
[权利要求 4]
根据权利要求3所述的方法,所述当所述主任务线程通过所述监听端口监听到客户端发送的流媒体传输请求时,所述主任务线程移除线程中的所述监听端口,控制所述子任务线程接管所述监听端口对应的流媒体传输,包括: 当所述主任务线程通过所述监听端口监听到客户端发送的流媒体传输请求时,判断多个所述子任务线程中是否存在空闲任务线程;若有,从 所述空闲任务线程中随机获取任一任务线程,控制该任务线程处理该监听端口对应的流媒体传输;若无,则将该客户端发送的流媒体传输请求设置为等待处理状态。
[权利要求 5]
根据权利要求4所述的方法,所述判断多个所述子任务线程中是否存在空闲任务线程之前,还包括:对所述子任务线程中的空闲任务线程设置标识信息; 所述判断多个所述子任务线程中是否存在空闲任务线程,包括:通过识别所述标识信息判断多个所述子任务线程中是否存在空闲任务线程; 所述从所述空闲任务线程中随机获取任一任务线程,控制该任务线程处理该监听端口对应的流媒体传输,包括:获取任一包含所述标识信息的任务线程,控制该任务线程处理该监听端口对应的流媒体传输。
[权利要求 6]
根据权利要求5所述的方法,所述获取任一包含所述标识信息的任务线程以处理该监听端口对应的流媒体传输之后,还包括: 解除该任一包含所述标识信息的任务线程的标识信息; 当该任一包含所述标识信息的任务线程终止处理流媒体传输的相关操作之后,释放该任务线程的任务,并对该任务线程设置所述标识信息。
[权利要求 7]
根据权利要求5所述的方法,所述客户端发送的流媒体传输请求包括上传流媒体数据的请求和下载流媒体数据的请求; 所述当所述主任务线程通过所述监听端口监听到客户端发送的流媒体传输请求时,判断多个所述子任务线程中是否存在空闲任务线程;若有,从所述空闲任务线程中随机获取任一任务线程,控制该任务线程处理该监听端口对应的流媒体传输,包括: 当所述主任务线程通过所述监听端口监听到客户端发送的下载流媒体数据的请求时,判断多个所述子任务线程中是否存在空闲任务线程,若有,从所述空闲任务线程中随机获取任一任务线程,利用该任务线程执行判断所述子任务线程中非空闲任务线程中是否包含有处理与所述下载流媒体数据的请求对应的上传流媒体数据的请求的任务线程;若无,利用该任务线程向客户端发送无响应数据的反馈信息,并对所述下载流媒体数据的请求进行该请求无响应数据的标注,以用于根据该标注识别出所述下载 流媒体数据的请求无响应数据。
[权利要求 8]
一种流媒体传输控制装置,包括: 第一创建模块,用于创建多个监听端口,所述监听端口用于监听客户端发送的流媒体传输请求; 第二创建模块,用于创建主任务线程和多个子任务线程;所述主任务线程用于控制系统流媒体传输,所述子任务线程用于控制每个客户端的流媒体传输; 处理模块,用于当所述主任务线程通过所述监听端口监听到客户端发送的流媒体传输请求时,所述主任务线程移除线程中的所述监听端口,控制所述子任务线程接管所述监听端口对应的流媒体传输。
[权利要求 9]
一种存储介质,其上存储有计算机程序;所述计算机程序适于由处理器加载并执行一种流媒体传输控制方法的下述步骤: 创建多个监听端口,所述监听端口用于监听客户端发送的流媒体传输请求; 创建主任务线程和多个子任务线程;所述主任务线程用于控制系统流媒体传输,所述子任务线程用于控制每个客户端的流媒体传输; 当所述主任务线程通过所述监听端口监听到客户端发送的流媒体传输请求时,所述主任务线程移除线程中的所述监听端口,控制所述子任务线程接管所述监听端口对应的流媒体传输。
[权利要求 10]
根据权利要求9所述的存储介质,所述创建多个监听端口,包括: 获取历史数据中同一时间段内,接收到所述流媒体传输请求的数量,根据该数量设置预设数量的所述监听端口。
[权利要求 11]
根据权利要求9所述的存储介质,所述创建主任务线程和多个子任务线程,包括:在live555的流媒体服务器基类GenericMediaServer初始化时,根据多个所述子任务线程的调度情况实例化live555的BasicUsageEnvironment和BasicTaskScheduler,以由所述主任务线程对多个所述子任务线程进行任务调度; 所述当所述主任务线程通过所述监听端口监听到客户端发送的流媒体传输请求时,所述主任务线程移除线程中的所述监听端口,控制所述子 任务线程接管所述监听端口对应的流媒体传输,包括:当所述主任务线程通过任一监听端口监听到客户端发送的实时流协议RTSP的相关请求时,所述主任务线程移除线程中的所述任一监听端口,控制所述子任务线程接管所述任一监听端口的操作。
[权利要求 12]
根据权利要求11所述的存储介质,所述当所述主任务线程通过所述监听端口监听到客户端发送的流媒体传输请求时,所述主任务线程移除线程中的所述监听端口,控制所述子任务线程接管所述监听端口对应的流媒体传输,包括: 当所述主任务线程通过所述监听端口监听到客户端发送的流媒体传输请求时,判断多个所述子任务线程中是否存在空闲任务线程;若有,从所述空闲任务线程中随机获取任一任务线程,控制该任务线程处理该监听端口对应的流媒体传输;若无,则将该客户端发送的流媒体传输请求设置为等待处理状态。
[权利要求 13]
根据权利要求12所述的存储介质,所述判断多个所述子任务线程中是否存在空闲任务线程之前,还包括:对所述子任务线程中的空闲任务线程设置标识信息; 所述判断多个所述子任务线程中是否存在空闲任务线程,包括:通过识别所述标识信息判断多个所述子任务线程中是否存在空闲任务线程; 所述从所述空闲任务线程中随机获取任一任务线程,控制该任务线程处理该监听端口对应的流媒体传输,包括:获取任一包含所述标识信息的任务线程,控制该任务线程处理该监听端口对应的流媒体传输。
[权利要求 14]
一种计算机设备,其包括: 一个或多个处理器; 存储器; 一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个应用程序配置用于执行一种流媒体传输控制方法的下述步骤: 创建多个监听端口,所述监听端口用于监听客户端发送的流媒体传输请求; 创建主任务线程和多个子任务线程;所述主任务线程用于控制系统流媒体传输,所述子任务线程用于控制每个客户端的流媒体传输; 当所述主任务线程通过所述监听端口监听到客户端发送的流媒体传输请求时,所述主任务线程移除线程中的所述监听端口,控制所述子任务线程接管所述监听端口对应的流媒体传输。
[权利要求 15]
根据权利要求14所述的计算机设备,所述创建多个监听端口,包括: 获取历史数据中同一时间段内,接收到所述流媒体传输请求的数量,根据该数量设置预设数量的所述监听端口。
[权利要求 16]
根据权利要求14所述的计算机设备,所述创建主任务线程和多个子任务线程,包括:在live555的流媒体服务器基类GenericMediaServer初始化时,根据多个所述子任务线程的调度情况实例化live555的BasicUsageEnvironment和BasicTaskScheduler,以由所述主任务线程对多个所述子任务线程进行任务调度; 所述当所述主任务线程通过所述监听端口监听到客户端发送的流媒体传输请求时,所述主任务线程移除线程中的所述监听端口,控制所述子任务线程接管所述监听端口对应的流媒体传输,包括:当所述主任务线程通过任一监听端口监听到客户端发送的实时流协议RTSP的相关请求时,所述主任务线程移除线程中的所述任一监听端口,控制所述子任务线程接管所述任一监听端口的操作。
[权利要求 17]
根据权利要求16所述的计算机设备,所述当所述主任务线程通过所述监听端口监听到客户端发送的流媒体传输请求时,所述主任务线程移除线程中的所述监听端口,控制所述子任务线程接管所述监听端口对应的流媒体传输,包括: 当所述主任务线程通过所述监听端口监听到客户端发送的流媒体传输请求时,判断多个所述子任务线程中是否存在空闲任务线程;若有,从所述空闲任务线程中随机获取任一任务线程,控制该任务线程处理该监听端口对应的流媒体传输;若无,则将该客户端发送的流媒体传输请求设置为等待处理状态。
[权利要求 18]
根据权利要求17所述的计算机设备,所述判断多个所述子任务线程中是否存在空闲任务线程之前,还包括:对所述子任务线程中的空闲任务线程设置标识信息; 所述判断多个所述子任务线程中是否存在空闲任务线程,包括:通过识别所述标识信息判断多个所述子任务线程中是否存在空闲任务线程; 所述从所述空闲任务线程中随机获取任一任务线程,控制该任务线程处理该监听端口对应的流媒体传输,包括:获取任一包含所述标识信息的任务线程,控制该任务线程处理该监听端口对应的流媒体传输。
[权利要求 19]
根据权利要求18所述的计算机设备,所述获取任一包含所述标识信息的任务线程以处理该监听端口对应的流媒体传输之后,还包括: 解除该任一包含所述标识信息的任务线程的标识信息; 当该任一包含所述标识信息的任务线程终止处理流媒体传输的相关操作之后,释放该任务线程的任务,并对该任务线程设置所述标识信息。
[权利要求 20]
根据权利要求18所述的计算机设备,所述客户端发送的流媒体传输请求包括上传流媒体数据的请求和下载流媒体数据的请求; 所述当所述主任务线程通过所述监听端口监听到客户端发送的流媒体传输请求时,判断多个所述子任务线程中是否存在空闲任务线程;若有,从所述空闲任务线程中随机获取任一任务线程,控制该任务线程处理该监听端口对应的流媒体传输,包括: 当所述主任务线程通过所述监听端口监听到客户端发送的下载流媒体数据的请求时,判断多个所述子任务线程中是否存在空闲任务线程,若有,从所述空闲任务线程中随机获取任一任务线程,利用该任务线程执行判断所述子任务线程中非空闲任务线程中是否包含有处理与所述下载流媒体数据的请求对应的上传流媒体数据的请求的任务线程;若无,利用该任务线程向客户端发送无响应数据的反馈信息,并对所述下载流媒体数据的请求进行该请求无响应数据的标注,以用于根据该标注识别出所述下载流媒体数据的请求无响应数据。

附图

[ 图 1]  
[ 图 2]  
[ 图 3]  
[ 图 4]