首页 / 专利库 / 多媒体工具与应用 / 媒体流 / 一种集群并发发送网络媒体流的方法

一种集群并发发送网络媒体流的方法

阅读:1026发布:2020-10-29

专利汇可以提供一种集群并发发送网络媒体流的方法专利检索,专利查询,专利分析的服务。并且本 发明 涉及一种集群并发发送网络 媒体流 的方法,特别适用于多媒体彩铃大规模并发网络播放。将播放系统按不同的复杂度设置成消息接收模 块 、消息处理模块,发送模块和删除播放模块,每个模块承担整个任务中的一部分,给每个模块分配不同的线程数处理相应的任务。来自上层的指令由消息接收模块进行处理,消息处理模块进行任务分配和设置结束状态,媒体流发送模块读取文件并定期发送rtp流实现播放效果,Session及相关清除数据工作由删除任务模块进行删除。本发明提供的优化处理方法,可达到每秒响应150caps以上呼叫,同时并发2500路音频或1500路音视频文件的播放目标。,下面是一种集群并发发送网络媒体流的方法专利的具体信息内容。

1.一种集群并发发送网络媒体流的方法,其特征在于:将播放系统分成消息接收模、消息处理模块,发送模块和删除播放模块,给每个模块分配不同的线程数处理相应的任务,包括如下步骤:
(1)在消息处理模块中设置全局会话状态;
(2)消息接收模块将收取到的来自上层消息模块的消息指令送至消息处理模块;
(3)消息处理模块依据消息类型,由全局会话分配任务或设置成结束状态;
(4)发送模块发现有新的会话任务后,按任务读取指定的文件并将文件打包成音视频媒体流发送给终端,进行播放;每次播放的rtp包为1~3秒,每次发送结束后检查全局会话状态,若不需要删除则回到播放队列中;
(5)删除任务模块发现有会话被设置到删除状态后,清除会话的任务信息及内存资源的回收。

说明书全文

一种集群并发发送网络媒体流的方法

技术领域

[0001] 本发明涉及一种集群并发发送网络媒体流的方法,可用于多媒体彩铃大规模并发网络播放等。

背景技术

[0002] 多媒体彩铃业务是基于第三代移动通信的增值业务,它可以是极具个性的视频和音乐。用户在拨打移动电话过程中,如果主\被叫用户其中之一方或者双方均已开通了多媒体彩铃业务,在拨通后、通话前的空闲状态下,主叫或被叫或主\被双方的通话终端自动播放一段由对方专精心制作的、内容丰富多彩的、极具特色的多媒体彩铃。
[0003] 在电信级的多媒体彩铃应用时,由于其海量的用户群体,使得机器必须要在瞬间能同时响应大量的呼叫,并且能并发多路,而且并发的路数越多,越能降低运营商的成本。
[0004] 如果使用传统的多线程处理技术,即当一个呼叫来时,服务器起一个线程处理这个呼叫,再需要从硬盘上读取此文件内容,按WAV/MP4/3GP等文件规定,依次读取相应的数据,再运用rtp打包技术打包,以规定的时序进行发送,直到上层下信令停止发送。经过实际检测,这种方式即使在高性能的16核的MIPS64板卡也只能支持200多路,由于linux线程过多,调度太频繁而出现错误。

发明内容

[0005] 本发明所要解决的问题是克服现有技术存在的不足,提供一种集群并发发送网络媒体流的方法用于响应多媒体彩铃播放请求,实现性能强劲、有效降低设备成本的效果。
[0006] 达到上述发明目的的技术方案是提供一种集群并发发送网络媒体流的方法,将播放系统分成消息接收模、消息处理模块,发送模块和删除播放模块,给每个模块分配不同的线程数处理相应的任务,包括如下步骤:
[0007] (1)在消息处理模块中设置全局会话状态;
[0008] (2)消息接收模块将收取到的来自上层消息模块的消息指令送至消息处理模块;
[0009] (3)消息处理模块依据消息类型,由全局会话分配任务或设置成结束状态;
[0010] (4)发送模块发现有新的会话任务后,按任务读取指定的文件并将文件打包成音视频媒体流发送给终端,进行播放;每次播放的rtp包为1~3秒,每次发送结束后检查全局会话状态,若不需要删除则回到播放队列中;
[0011] (5)删除任务模块发现有会话被设置到删除状态后,清除会话的任务信息及内存资源的回收。
[0012] 本发明将以往单个呼叫处理流程,服务器需要起一个线程处理这个呼叫,再需要从硬盘上读取此文件内容,按WAV/MP4/3GP等文件规定,依次读取相应的数据,再运用rtp打包技术打包,以规定的时序进行发送,直到上层下信令停止发送这个方法。本发明技术方案中各模块的作用如下:
[0013] (1)文件读取模块(IoCache模块),大部分彩铃播放文件会被反复使用,只有少量需要临时读取,这个模块运用传统计算机IO缓冲区原理,将常用文件可以缓存在内存中,加快读取速度。
[0014] (2)收取上层消息的消息接收模块(prsMsgReeeive模块),负责接收上层指令的XIPC消息
[0015] (3)消息处理模块(prsMsgSwitch模块),负责处理XIPC消息线程,根据所下消息设置Session状态决定Session是开始播放还是结束播放
[0016] (4)发送媒体流的发送模块(prsSendData模块),需要播放的Session进去队列后,该模块负责文件读取、解析和RTP包的发送线程,以及将播放好的Session放入删除队列中。
[0017] (5)删除播放模块(prsSessionDelete模块),负责删除Session及相关清除数据工作。
[0018] 本发明与现有多线程技术,简单的完成整个操作相比,具有下列优点:
[0019] 1、将任务精确地划分成不同模块,每个模块执行一部分任务,协作工作,大大的减少了内部的线程数。
[0020] 2、既可以保证少数工作时不过多占用系统资源,又可以保证大并发处理时高效及时处理响应。
[0021] 3、同样环境中,能比简单起多线程完成整个任务的并发数增加7倍以上。附图说明
[0022] 图1是本发明实施例提供的媒体流发送模块处理流程图
[0023] 图2是本发明实施例提供的集群并发处理的流程图。

具体实施方式

[0024] 下面结合附图和实施例对本发明技术方案作进一步的阐述。
[0025] 实施例1
[0026] 本实施例一种集群并发发送网络媒体流的方法,对采用的模块及步骤作如下具体的描述:
[0027] (1)收取上层消息的消息接收模块(prsMsgReceive模块),负责接收上层指令的XIPC消息。在这个模块更上层有专门处sip+msml信令的模块,转换成内部xipc消息,通知PRS模块进行处理。对多媒体彩铃来说,就是播放指定路径下文件和结束播放2个指令。这里在收到指令后,进行一个初步的分发,压进prsMsgSwitch模块消息队列中。
[0028] (2)消息处理模块(prsMsgSwitch模块),负责处XIPC消息线程,根据所下的消息设置Session状态决定Session是开始播放还是结束播放。如果是开始播放,调用iocache模块将本地文件读取压入内存中,将需要播放的任务压入prsSendData模块。如果需要结束播放,这里仅做session状态设置。
[0029] (3)发送媒体流的发送模块(prsSendData模块),这个模块是最复杂,所以线程需要分配最多。该模块的线程在没有任务时将休眠以避免占用cpu,直到有任务进来开始处理,需要播放的Session进去队列后,此模块只会解析和一定时间的包,就会停止发进已经播放队列,当下次再次对播放队列处理前有一个检查是否需要删除的操作,从而响应上层停止播放信令。当少量播放时,这样的出队入队操作其实还会增加cpu处理量,但大规模并发时就可以解决如何及时响应上层停止播放这个问题。
[0030] (4)删除任务模块(prsSessionDelete模块),负责删除Session及相关清除数据工作。
[0031] 若使用传统的多线程处理技术,处理一个呼叫来时,服务器起一个线程处理这个呼叫,再需要从硬盘上读取此文件内容,按WAV/MP4/3GP等文件规定,依次读取相应的数据,再运用rtp打包技术打包,以规定的时序进行发送,直到上层下信令停止发送。这个缺点就是没有对任务细分,在处理过程中线程繁忙程度不一,导致处理数量仅能达到200多路。
[0032] 本发明采用划分成四大模块,每个模块起不同数量的线程数处理所承担的任务,例如prsMsgSwitch模块,若设置2个线程,每个线程定期遍历消息队列是否有新数据,有新数据按上述prsMsgSwitch模块的描述进行相应处理,无新数据则sleep(1us),暂时释放出cpu使用权。经实际测试,目前设定的线程数分别是,prsMsgReceive模块一个线程,prsMsgSwitch模块两个线程,prsSendData模块十二个线程,prsSessionDelete模块三个线程。由于采用模块化的技术方案,实际随着不同应用场景还可以很方便的调整线程数。
[0033] 参见附图2,它是本实施例提供的集群并发处理的流程图,具体处理流程如下:
[0034] (1)当上层下达的播放任务,prsMsgReceive模块收到这个消息后,置于模块消息队列中,它的任务即完成,处理下一个消息。
[0035] (2)prsMsgSwitch模块任意一个线程检测到新压入的处理消息,进行相应的处理,任务压入prsSendData模块。
[0036] (3)prsSendData模块检测到相应的任务,按上面描述进行发送rtp包操作,即给指定的用户发送多媒体彩铃。
[0037] (4)当用户通话开始时,运营商会终止多媒体彩铃播放,经过一系列处理,上层下停止播放信令,prsMsgReceive模块收到这个消息后,压入prsMsgSwitch模块消息队列中。
[0038] (5)prsMsgSwitch模块任意一个线程检测到新压入的停止播放消息,找到相应的任务,将其状态置为deleting状态。
[0039] (6)由图1所示,prsSendData模块中的线程,每次只是发送一段时间即将任务重新压入队尾,这样做的好处即可以避免后续播放任务长时间无响应,又解决了这里停止播放问题。每次重新获取任务时,会检测其状态,当状态为deleting时,这个任务被压入prsSessionDelete模块。
[0040] (7)prsSessionDelete模块任意一个线程检测到新压入的删除任务,进行相应处理。
[0041] 采用本发明技术方案,在处理单路时明显增加了处理流程,但任务量增加后,所有线程将开始全工作,由于不同阶段处理的复杂度不一样,因此,在本实施例中,prsMsgReceive模块设置一个线程,prsMsgSwitch模块设置两个线程,prsSendData模块设置十二个线程,prsSessionDelete模块设置三个线程,既保证了系统cpu同时处于高效运作状态,但又没有启动过多的线程增加系统调度线程的复杂度。由于本发明技术方案的采用,使原来只能支持200多路,达到了能够每秒响应150caps以上呼叫,同时并发2500路音频或1500路音视频文件播放的设计目标。
[0042] 经测试,采用本发明技术方案,可在16核的MIPS64板卡上实现单卡每秒响应156次呼叫,同时并发2500路音频或1500路音视频文件的播放,有效的降低了设备成本。程序是基于Linux上开发的,可以轻松移植到其他Linux平台机器,根据机器的CPU核数迅速调整模块的线程数,同样实现高效并发播放。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈