实时转码的监控方法和实时转码系统的制作方法
【专利摘要】本发明公开了一种实时转码的监控方法和实时转码系统,该方法包括:接收直播控制中心下发的实时转码任务创建指令;创建并执行对应的实时转码任务,为所述实时转码任务分配对应的任务标识,将所述实时转码任务的日志数据重定向到预设目录;根据所述任务标识解析所述预设目录中的日志数据,监控所述实时转码任务的运行状态。实现了对实时转码任务运行状态的监控,提升了实时转码系统的稳定性,为直播业务提供了有效保障。
【专利说明】
实时转码的监控方法和实时转码系统
技术领域
[0001]本发明属于视频技术领域,具体地说,涉及一种实时转码的监控方法和实时转码系统。
【背景技术】
[0002]随着多媒体、智能设备及互联网应用等技术的快速发展,无论是体育比赛,音乐演出,还是个人秀场,人们对于视频点播和直播的需求愈发强烈,但限于当前的网络条件及观看人数等因素的限制,点播及直播云平台、视频网站等较稳定的直播系统仍是用户的首选。但同时也对这些平台构成了挑战,平台不仅需要满足各类用户的需求,应对不同的网络环境进行调度处理,还需尽可能地统一视频编码格式的情况下提供不同客户的定制功能,保证转码内容的稳定输出,在这种情景下实时转码这一环节就显得尤为重要。
[0003]现有技术中很多平台选用的实时转码系统大多是商用编码器,编码器的设备原因导致的不稳定因素经常不可控,转码任务运行状态无法预知。
【发明内容】
[0004]有鉴于此,本发明实施例提供了一种实时转码的监控方法和实时转码系统,用以解决现有技术中实时转码系统对转码任务的运行状态无法预知的技术问题。
[0005]为了解决上述技术问题,本发明公开了一种实时转码的监控方法,适用于实时转码系统,包括:接收直播控制中心下发的实时转码任务创建指令;创建并执行对应的实时转码任务,为所述实时转码任务分配对应的任务标识,将所述实时转码任务的日志数据重定向到预设目录;根据所述任务标识解析所述预设目录中的日志数据,监控所述实时转码任务的运行状态。
[0006]为了解决上述技术问题,本发明公开了一种实时转码系统,包括:指令接收模块,用于接收直播控制中心下发的实时转码任务创建指令;第一任务执行模块,用于创建并执行对应的实时转码任务,为所述实时转码任务分配对应的任务标识,将所述实时转码任务的日志数据重定向到预设目录;任务监控模块,用于根据所述任务标识解析所述预设目录中的日志数据,监控所述实时转码任务的运行状态。
[0007]与现有技术相比,本发明实施例提供的实时转码的监控方法和实时转码系统,将每个实时转码任务的日志数据重定向到预设目录,对预设目录中的日志数据进行解析,实现对实时转码任务运行状态的监控,提升了实时转码系统的稳定性,为直播业务提供了有效保障。
【附图说明】
[0008]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0009]图1是本发明实施例提供的一种实时转码的监控方法的流程图;
[0010]图2是本发明实施例提供的一种实时转码的监控方法的流程图;
[0011]图3是本发明实施例提供的一种实时转码的监控方法的流程图;
[0012]图4是本发明实施例提供的一种实时转码的监控方法的流程图;
[0013]图5是本发明实施例提供的一种实时转码的监控方法的流程图;
[0014]图6是本发明实施例提供的一种实时转码系统的框图。
【具体实施方式】
[0015]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0016]本发明实施例,根据直播控制中心下发的指令创建实时转码任务并分配任务标识,将实时转码任务的日志数据重定向至预设目录,在实时转码任务开始执行后,通过解析预设目录中的日志数据来监控实时转码任务的运行状态是否出现异常,实现了对实时转码系统的有效监控,提升了实时转码系统的稳定性,为直播业务提供了有效保障,有助于为网络用户提供更稳定的视频直播服务。
[0017]图1是本发明实施例提供的一种实时转码的监控方法,适用于实时转码系统,该方法包括以下步骤SI O-Sl 2。
[0018]在步骤SlO中,接收直播控制中心下发的实时转码任务创建指令。
[0019]实时转码系统与直播控制中心之间定义了实现创建实时转码任务、查看实时转码任务状态、终止实时转码任务、重启任务执行模块和任务监控模块等功能的网页(Web)接口,供编辑人员根据直播业务的变化来启动和停止对应的实时转码任务。
[0020]当接收到直播控制中心下发的指令后,执行上述对应操作。如果指令数据不符合预定义的数据格式,例如,缺少直播流标识(ID)、或者缺少输入流和输出流对应的地址等,则返回错误消息通知直播控制中心,不执行对应的操作。
[0021 ]在步骤SI I中,创建并执行对应的实时转码任务,为实时转码任务分配对应的任务标识,将实时转码任务的日志数据重定向到预设目录。
[0022]每接收到一个实时转码任务,启动一个实时转码任务线程实例并分配对应任务标识,做为该实时转码任务的全局唯一标识。
[0023]考虑到单台实时转码设备的转码容量问题以及中控单元对各台实时转码设备负载的限制,不会出现大量实时转码任务同时在单台转码机运行的状况,因此能够在实时转码设备的内存中创建一个全局任务管理字典,并将任务标识作为键(key)存入全局任务管理字典中。
[0024]解析实时转码任务数据,以获得该实时转码任务的属性参数。包括检测输入流的传输协议,例如实时消息传输协议(Real Time MessagingProtocol,RTMP)、超文本传输协议(HyperText TransferProtocol,HTTP)和微软媒体服务器协议(MicrosoftMediaServerProtocol,MMS)等;配置输出流的用户代理信息(user_agent)、HTTP头(headers)信息等;根据转码档次确定不同的码率之后,在该实时转码任务线程实例下启动转码子进程,开始执行实时转码任务,将该转码子进程的进程号记录到全局任务管理字典内相应的任务标识下,并将转码子进程的日志数据重定向到预设目录,该预设目录是任务监控模块能够访问的目录,以利于任务监控模块获取日志数据并执行监控操作。
[0025]在转码子进程的运行过程中,如果接收到直播控制中心的停止(Stop)信号,则转码子进程退出,停止转码任务;如果未接收到停止信号,遇到子进程退出的情况,则重启一个转码子进程并更新全局任务管理字典中的进程号。
[0026]在步骤S12中,根据任务标识解析预设目录中的日志数据,监控实时转码任务的运行状态。
[0027]通过任务标识来区分不同的实时转码任务,从对应的日志数据中获取其转码子进程当前的进度信息(通常出现在日志数据的最后3行),进度信息包括时间信息、码率(比特率)、图像尺寸和负载信息。
[0028]其中,时间信息是转码子进程当前已转码的直播视频流的总时长;码率是已转码的直播视频流的码率,图像尺寸是转码后的直播视频流图像的宽和高;负载信息是该实时转码任务当前所占用的系统资源。
[0029]可以周期性的解析日志数据并通过上述信息来监控每个实时转码任务,也可以在预设的固定时间点解析日志数据并通过上述信息来监控每个实时转码任务,以检测实时转码任务是否运转正常,识别出已卡死(stuck)或者占用系统资源过大的实时转码任务。
[0030]本实施例中,将每个实时转码任务的日志数据重定向到预设目录,对预设目录中的日志数据进行解析,实现对实时转码任务运行状态的监控,提升了实时转码系统的稳定性,为直播业务提供了有效保障。下面对监控实时转码任务的运行状态的方式分别进行说明。
[0031]在一个实施例中,如图2所示,步骤S12可进一步实施为以下步骤S121-S124。
[0032]在步骤S121中,从日志数据中获取实时转码任务的进度信息。
[0033]在步骤S122中,周期性的获取进度信息中的时间信息来判断时间信息的更新状
??τ O
[0034]获取时间信息后,将其更新到时间字典内,时间字典也是以实时转码任务的任务标识为键(key),对应保存实时转码任务的时间信息。
[0035]每隔预设时长(例如10秒)获取一次时间信息,当获取到的时间信息与上一次获取的相比没有更新时,代表该实时转码任务可能出现了卡死。
[0036]在步骤S123中,当时间信息持续未被更新的次数大于或等于第一预设门限时,确定实时转码任务处于异常状态。
[0037]时间信息持续未被更新的次数大于或等于第一预设门限,代表该实时转码任务已卡死的时间过长,那么,可确定该实时转码任务出现了异常。例如,每隔10秒获取一次时间信息,时间字典中某个任务标识的时间信息没有更新的次数超过了 3次,那么该实时转码任务已卡死的时长很可能已经超过了 30秒,那么确定该任务标识对应的实时转码任务出现了异常。
[0038]在步骤S124中,根据任务标识重启实时转码任务。
[0039]在全局任务管理字典中,查询到该任务标识下的转码子进程的进程号,根据进程号重启该实时转码任务的转码子进程。为重新启动的转码子进程重新分配新的进程号并保存在全局任务管理字典相应的任务标识下。
[0040]本实施例中,通过进度信息中的时间信息是否持续更新来判断实时转码任务是否出现已卡死的现象,识别出卡死现象后重新启动转码子进程,从而尽快修复对于直播业务的实时转码处理,保证直播业务的正常播出。
[0041 ] 在一个实施例中,如图3所示,步骤SI2可进一步实施为以下步骤SI25-S124。
[0042]在步骤S125中,周期性的获取日志数据中的更新日志。
[0043]每隔预设时长(例如10秒)获取实时转码任务日志数据中更新日志,以判断该实时转码任务是否仍在继续运行。如果没有获取到更新日志,代表该实时转码任务可能已停止运行。
[0044]在步骤S126中,当未获取到更新日志的时长大于或等于第二预设门限时,确定实时转码任务处于异常状态。
[0045]当获取不到更新日志的时长大于或等于第二预设门限时,代表该实时转码任务没有继续运行的持续时间过长,那么,可确定该实时转码任务出现了异常。
[0046]在步骤S127中,根据任务标识重启实时转码任务。
[0047]本实施例中,通过是否能够获取到更新日志来判断实时转码任务是否在继续运行,识别出该实时转码任务无法继续运行的持续时间过长时,重新启动转码子进程,从而尽快修复对于直播业务的实时转码处理,保证直播业务的正常播出。
[0048]在一个实施例中,如图4所示,步骤S12可进一步实施为以下步骤S128-S1211。
[0049]在步骤S128中,从日志数据中获取实时转码任务的进度信息。
[0050]在步骤S129中,周期性的检测所述进度信息中的负载信息。
[0051]负载信息可以是实时转码任务对系统内存的占用率,或者是对CPU的使用率等。
[0052]在步骤S1210中,当负载信息大于或等于第三预设门限时,确定实时转码任务处于异常状态。
[0053]负载信息大于或等于第三预设门限时,代表该实时转码任务当前的负载过大,可能是运行时间过长或者是视频数据处理量过多造成的。例如,当实时转码程序占用了大于40 %的系统内存时,判定该实时转码任务异常。
[0054]在步骤S1211中,根据任务标识重启实时转码任务。
[0055]本实施例中,通过进度信息中的负载信息来判断实时转码任务的负载是否过高,当该实时转码任务负载过高时,重新启动转码子进程,从而释放其占用的系统资源,使重新启动的转码子进程能够获取更佳的处理效率。
[0056]而在另一个实施例中,可以通过图2、图3和图4所提供的监控方式同时并行对实时转码任务进行监控,当实时转码任务出现已卡死、出现没有继续运行、当前负载过高等任意一种情形时,都会对实时转码任务的转码子进程进行重启,从而从多个维度对实时转码任务进行监控,进一步有助于为网络用户提供更稳定的视频直播服务。
[0057]在一个实施例中,如图5所示,该实时转码的监控方法进一步包括以下步骤S13-S14。
[0058]在步骤S13中,在实时转码系统重启之后,从直播控制中心获取当前所有的实时转码任务。
[0059]需要对实时转码系统进行重启时,由于实时转码任务均由内存中的全局任务管理字典来维护,因此在重启后当前的全局任务管理字典将无法保存。
[0060]实时转码系统在重启后从直播控制中心根据当前仍在直播中的业务获取实时转码任务。
[0061 ]在步骤S14中,创建并执行获取到的实时转码任务并重新分配对应的任务标识。
[0062]创建实时转码任务并重新分配任务标识,在内存中重新创建一个全局任务管理字典,以重新分配的任务标识为键(key)。后续转码处理与实时监控的过程仍然与重启之前相同。
[0063]该实时转码系统在重启之后也能够很快重新创建实时转码任务,使仍在继续的直播业务能够迅速恢复正常。
[0064]在一个实施例中,该实时转码的监控方法中的步骤Sll可进一步实施为以下步骤Slll-步骤 S113。
[0065]在步骤SI11中,创建对应的实时转码任务,为实时转码任务分配对应的任务标识,将实时转码任务的日志数据重定向到预设目录。
[0066]在步骤SI12中,解析实时转码任务,获取其中的自定义转码属性信息。
[0067]自定义转码属性信息可以是由直播控制中心的编辑人员设置的转码属性信息,包括码率范围信息、音轨信息、声道信息、字幕信息、音频滤镜以及视频滤镜中的一个或多个,可以为直播视频添加更丰富的内容供用户选择或者提高直播视频的观看效果。
[0068]在步骤SI13中,根据自定义转码属性信息执行实时转码任务。
[0069]本实施例中,在转码任务执行之前解析出实时转码任务中的自定义转码属性信息,根据自定义转码属性信息执行转码内容,提高了直播视频的观看效果,为直播视频添加更丰富的内容供用户选择。
[0070]以下为本发明的装置实施例,用于执行本发明的上述方法实施例。
[0071]图6是本发明实施例提供的一种实时转码系统,包括:
[0072]指令接收模块20,用于接收直播控制中心下发的实时转码任务创建指令;
[0073]第一任务执行模块21,用于创建并执行对应的实时转码任务,为实时转码任务分配对应的任务标识,将实时转码任务的日志数据重定向到预设目录;
[0074]任务监控模块22,用于根据任务标识解析预设目录中的日志数据,监控实时转码任务的运行状态。
[0075]在一个实施例中,该任务监控模块22进一步包括:
[0076]第一进度信息获取子模块,用于从日志数据中获取实时转码任务的进度信息;
[0077]时间信息检测子模块,用于周期性的获取进度信息中的时间信息来判断时间信息的更新状态;
[0078]第一状态检测子模块,用于当时间信息持续未被更新的次数大于或等于第一预设门限时,确定实时转码任务处于异常状态;
[0079]第一任务重启子模块,用于根据任务标识重启实时转码任务。
[0080]在一个实施例中,该任务监控模块22进一步包括:
[0081 ]更新日志获取子模块,用于周期性的获取日志数据中的更新日志;
[0082]第二状态检测子模块,用于当未获取到更新日志的时长大于或等于第二预设门限时,确定实时转码任务处于异常状态;
[0083]第二任务重启子模块,用于根据任务标识重启实时转码任务。
[0084]在一个实施例中,该任务监控模块22进一步包括:
[0085]第二进度信息获取子模块,用于从日志数据中获取实时转码任务的进度信息;
[0086]负载检测子模块,用于周期性的检测进度信息中的负载信息;
[0087]第三状态检测子模块,当负载信息大于或等于第三预设门限时,确定实时转码任务处于异常状态;
[0088]第三任务重启子模块,根据任务标识重启实时转码任务。
[0089]在一个实施例中,所述系统还包括:
[0090]任务获取模块,用于在实时转码系统重启之后,从直播控制中心获取当前所有的实时转码任务;
[0091]第二任务执行模块,用于创建并执行获取到的实时转码任务并重新分配对应的任务标识。
[0092]在一个实施例中,该第一任务执行模块21包括:
[0093]任务创建子模块,用于创建对应的实时转码任务,为实时转码任务分配对应的任务标识,将实时转码任务的日志数据重定向到预设目录;
[0094]自定义属性获取子模块,用于解析实时转码任务,获取其中的自定义转码属性信息;
[0095]任务执行子模块,用于根据自定义转码属性信息执行实时转码任务。
[0096]此外,本发明实施例中可以通过硬件处理器(hardware processor)来实现上述各个功能模块。
[0097]以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0098]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如R0M/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0099]最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
【主权项】
1.一种实时转码的监控方法,适用于实时转码系统,其特征在于,包括: 接收直播控制中心下发的实时转码任务创建指令; 创建并执行对应的实时转码任务,为所述实时转码任务分配对应的任务标识,将所述实时转码任务的日志数据重定向到预设目录; 根据所述任务标识解析所述预设目录中的日志数据,监控所述实时转码任务的运行状??τ O2.根据权利要求1所述的方法,其特征在于,所述根据所述任务标识解析所述预设目录中的日志数据,监控所述实时转码任务的运行状态包括: 从所述日志数据中获取所述实时转码任务的进度信息; 周期性的获取所述进度信息中的时间信息来判断所述时间信息的更新状态; 当所述时间信息持续未被更新的次数大于或等于第一预设门限时,确定所述实时转码任务处于异常状态; 根据所述任务标识重启所述实时转码任务。3.根据权利要求1所述的方法,其特征在于,所述根据所述任务标识解析所述预设目录中的日志数据,监控所述实时转码任务的运行状态包括: 周期性的获取所述日志数据中的更新日志; 当未获取到所述更新日志的时长大于或等于第二预设门限时,确定所述实时转码任务处于异常状态; 根据所述任务标识重启所述实时转码任务。4.根据权利要求1所述的方法,其特征在于,所述根据所述任务标识解析所述预设目录中的日志数据,监控所述实时转码任务的运行状态包括: 从所述日志数据中获取所述实时转码任务的进度信息; 周期性的检测所述进度信息中的负载信息; 当所述负载信息大于或等于第三预设门限时,确定所述实时转码任务处于异常状态; 根据所述任务标识重启所述实时转码任务。5.根据权利要求1所述的方法,其特征在于,所述方法还包括: 在所述实时转码系统重启之后,从所述直播控制中心获取当前所有的实时转码任务; 创建并执行获取到的实时转码任务并重新分配对应的任务标识。6.根据权利要求1所述的方法,其特征在于,所述创建并执行对应的实时转码任务,为所述实时转码任务分配对应的任务标识,将所述实时转码任务的日志数据重定向到预设目录包括: 创建对应的实时转码任务,为所述实时转码任务分配对应的任务标识,将所述实时转码任务的日志数据重定向到预设目录; 解析所述实时转码任务,获取其中的自定义转码属性信息; 根据所述自定义转码属性信息执行所述实时转码任务。7.一种实时转码系统,其特征在于,包括: 指令接收模块,用于接收直播控制中心下发的实时转码任务创建指令; 第一任务执行模块,用于创建并执行对应的实时转码任务,为所述实时转码任务分配对应的任务标识,将所述实时转码任务的日志数据重定向到预设目录; 任务监控模块,用于根据所述任务标识解析所述预设目录中的日志数据,监控所述实时转码任务的运行状态。8.根据权利要求7所述的系统,其特征在于,所述任务监控模块包括: 第一进度信息获取子模块,用于从所述日志数据中获取所述实时转码任务的进度信息; 时间信息检测子模块,用于周期性的获取所述进度信息中的时间信息来判断所述时间信息的更新状态; 第一状态检测子模块,用于当所述时间信息持续未被更新的次数大于或等于第一预设门限时,确定所述实时转码任务处于异常状态; 第一任务重启子模块,用于根据所述任务标识重启所述实时转码任务。9.根据权利要求7所述的系统,其特征在于,所述任务监控模块包括: 更新日志获取子模块,用于周期性的获取所述日志数据中的更新日志; 第二状态检测子模块,用于当未获取到所述更新日志的时长大于或等于第二预设门限时,确定所述实时转码任务处于异常状态; 第二任务重启子模块,用于根据所述任务标识重启所述实时转码任务。10.根据权利要求7所述的系统,其特征在于,所述任务监控模块包括: 第二进度信息获取子模块,用于从所述日志数据中获取所述实时转码任务的进度信息; 负载检测子模块,用于周期性的检测所述进度信息中的负载信息; 第三状态检测子模块,当所述负载信息大于或等于第三预设门限时,确定所述实时转码任务处于异常状态; 第三任务重启子模块,根据所述任务标识重启所述实时转码任务。11.根据权利要求7所述的系统,其特征在于,所述系统还包括: 任务获取模块,用于在所述实时转码系统重启之后,从所述直播控制中心获取当前所有的实时转码任务; 第二任务执行模块,用于创建并执行获取到的实时转码任务并重新分配对应的任务标识。12.根据权利要求7所述的系统,其特征在于,所述第一任务执行模块包括: 任务创建子模块,用于创建对应的实时转码任务,为所述实时转码任务分配对应的任务标识,将所述实时转码任务的日志数据重定向到预设目录; 自定义属性获取子模块,用于解析所述实时转码任务,获取其中的自定义转码属性信息; 任务执行子模块,用于根据所述自定义转码属性信息执行所述实时转码任务。
【文档编号】H04N21/4402GK105898554SQ201510960428
【公开日】2016年8月24日
【申请日】2015年12月18日
【发明人】祁海, 白茂生, 魏伟, 蔡砚刚
【申请人】乐视云计算有限公司