多进程解码方法和系统的制作方法
【技术领域】
[0001]本发明涉及多媒体处理技术领域。具体地说,涉及一种多进程解码方法和系统。
【背景技术】
[0002]目前业内使用媒体解码技术有两种,一种是应用程序直接内嵌解码功能,另一种是应用程序动态加载解码插件来实现解码。两种方式都是单进程的解码方案,存在以下问题:
[0003]1.降低系统稳定性,实时监控时会浏览很多路图像,可能编码设备来自于很多不同厂家,各家的编码都不一样,解码时需要调用很多第三方的解码插件,这些插件互相不兼容或本身不稳定,经常遇到某路解码插件崩溃的情况。单进程多线程时,一路解码崩溃会引起整个监控客户端进程崩溃。用户只能重新打开客户端,重新浏览所有的图像。因此,单进程解码方法降低了监控系统的稳定性。
[0004]2.性能受限,单个32位的应用程序最多只能申请不到2G内存,当硬件设备的性能很强时,2G内存就成为了解码性能的瓶颈,不能充分的利用硬件能力来提高解码性能。
[0005]为此,现有技术提出了一种基于多进程的数据处理方法及系统,该系统的服务器端的主进程针对每块视频区域创建子进程,并记录子进程的ID和窗口句柄;由各个子进程对高码率的音视频流进行实时传输和解码,并将所得的码字在客户端进行输出。另外,主进程定时检查是否均收到各子进程发送的心跳包,并重新创建未收到心跳包的子进程,从而使该子进程对应的高码率音视频流稳定地进行输出。各子进程之间的处理过程相互独立,保证了服务器端的主程序运行的稳定性,且各子进程均有独立的2GB地址空间和独立的资源,在各自的地址空间内独立运行,对IP网络中2M/s及以上的高码率音视频流能够流畅地输出。
[0006]但是,上述技术方案中没有根据各解码进程的资源占用情况来分配解码任务,不能实现各个子进程的负载均衡,从而使得单个解码子进程的崩溃风险较高。
【发明内容】
[0007]为此,本发明提出一种能在客户机端实现的多进程解码方法和系统,其能够根据各个解码进程的当前资源占用情况来分配解码任务,从而实现各个解码进程的负载均衡。
[0008]本发明提供了如下技术方案:
[0009]一种多进程解码方法,包括以下步骤:
[0010]启动多个解码进程;
[0011]获取多个解码任务;
[0012]依次选择一个解码任务,根据共享内存中保存的多个解码进程的相关信息获取当前各个解码进程的负荷程度,将所选择的解码任务分配给当前负荷最轻的解码进程进行解码。
[0013]优选地,在启动多个解码进程的步骤之后还包括定时监测和维护多个解码进程的步骤,该步骤包括:
[0014]检测各个解码进程的进程状态是否正常,包括检测解码进程是否存在、解码进程心跳是否超时;
[0015]当有解码进程的进程状态不正常时,则关闭该解码进程,清除共享内存中的相关信息记录。
[0016]优选地,定时监测和维护多个解码进程的步骤还包括:
[0017]判断当前正常解码进程的数量是否不足;
[0018]若当前正常解码进程的数量不足则启动新的解码进程直到其达到数量要求。
[0019]优选地,上述依次选择一个解码任务,根据共享内存中保存的多个解码进程的相关信息获取当前各个解码进程的负荷程度,将所选择的解码任务分配给当前负荷最轻的解码进程进行解码的步骤还包括:
[0020]将解码命令函数的参数转换成XML信令数据,解码命令函数的参数包括解码插件调用函数、要显示图像的视频窗口的窗口句柄和接收媒体码流的网络参数;
[0021]通过进程间通信将XML信令数据传递给接受了解码任务的解码进程。
[0022]优选地,将所选择的解码任务分配给当前负荷最轻的的解码进程进行解码的步骤之后还包括:
[0023]将解码进程的被占用情况记录在共享内存中。
[0024]优选地,进程间通信包括四个消息队列,分别用作函数调用、函数调用返回、通知和通知返回。
[0025]一种多进程解码系统,包括:
[0026]启动模块,用于启动多个解码进程;
[0027]获取模块,用于获取多个解码任务;
[0028]分配模块,用于依次选择一个解码任务,根据共享内存中保存的多个解码进程的相关信息获取当前各个解码进程的负荷程度,将所选择的解码任务分配给当前负荷最轻的解码进程进行解码。
[0029]优选地,还包括监测和维护多个解码进程的模块,该监测和维护多个解码进程的丰吴块包括:
[0030]检测单元,用于检测各个解码进程的进程状态是否正常,包括检测解码进程是否存在、解码进程心跳是否超时;
[0031]处理单元,当有解码进程的进程状态不正常时,用于关闭该解码进程、清除共享内存中的相关信息记录。
[0032]优选地,监测和维护多个解码进程的模块还包括:
[0033]数量判断单元,用于判断当前正常解码进程的数量是否不足;
[0034]解码进程补充单元,若当前正常解码进程的数量不足则用于启动新的解码进程直到其达到数量要求。
[0035]优选地,分配模块还包括:
[0036]转换单元,用于将解码命令函数的参数转换成XML信令数据,解码命令函数的参数包括解码插件调用函数、要显示图像的视频窗口的窗口句柄和接收媒体码流的网络参数;
[0037]通信单元,通过进程间通信将XML信令数据传递给接受了解码任务的解码进程。
[0038]优选地,该系统还包括:
[0039]记录模块,用于将解码进程的被占用情况记录在共享内存中。
[0040]本发明的上述技术方案相比现有技术具有以下优点:
[0041]1.本发明提供的多进程解码方法和系统,适用于客户机,安装于客户机上的客户端在每次分配解码任务时都先获取当前所有正常解码进程的负荷程度,并将解码任务分配给当前负荷最轻的解码进程,使得解码任务能够均匀分配给各个解码进程,不仅可以实现各个解码进程的负载均衡,减小某个解码进程因负载过重或因各个解码线程调用的解码插件互相不兼容而导致解码进程崩溃的风险以及减小了单个解码进程崩溃对整个客户机的图像解码和显示的影响,还可以最大程度地利用客户机的内存资源以快速地完成多个解码任务。
[0042]2.本发明提供的多进程解码方法和系统,客户端定时监测各个解码进程的状态,关闭状态不正常进程并启动新的解码进程以保证正常解码进程的数量,充分利用客户机的硬件资源来完成各解码任务,从而实现高速流畅地解码媒体码流并实时显示。
【附图说明】
[0043]图1是本发明实施例1的一种多进程解码方法流程图;
[0044]图2是本发明实施例2的一种多进程解码方法流程图;
[0045]图3是本发明实施例3的一种多进程解码系统结构框图。
【具体实施方式】
[0046]为了使本技术领域的人员更好地理解本发明的内容,下面结合附图和实施例对本发明所提供的技术方案作进一步的详细描述。
[0047]实施例1