首页> 中国专利> 音视频处理方法、装置、电子设备及存储介质

音视频处理方法、装置、电子设备及存储介质

摘要

本发明实施例提供一种音视频处理方法、装置、电子设备及存储介质;方法包括:根据待执行命令以及播放应用中的已注册功能模块,确定所述待执行命令的工作流起点所对应的第一已注册功能模块,以及工作流终点所对应的第二已注册功能模块;根据所述第一已注册功能模块以及第二已注册功能模块,结合预构建的带权有向图,按照工作流走向依次确定并运行执行所述待执行命令所需要的已注册功能模块。本发明实施例提供的音视频处理方法、装置、电子设备及存储介质将播放应用内部的静态流水线更改为根据dijkstra算法动态生成的流水线,提高了播放应用的性能及扩展性,解决了运行时文件格式变化或场景变化所带来的处理失败问题。

著录项

  • 公开/公告号CN112165649A

    专利类型发明专利

  • 公开/公告日2021-01-01

    原文格式PDF

  • 申请/专利号CN202010817708.1

  • 发明设计人 柳建龙;邢刚;李琳;

    申请日2020-08-14

  • 分类号H04N21/44(20110101);H04N21/4402(20110101);H04N21/643(20110101);H04N21/845(20110101);H04N21/854(20110101);

  • 代理机构11002 北京路浩知识产权代理有限公司;

  • 代理人王宇杨

  • 地址 100032 北京市西城区华远街11号

  • 入库时间 2023-06-19 09:23:00

说明书

技术领域

本发明涉及音视频技术领域,尤其涉及一种音视频处理方法、装置、电子设备及存储介质。

背景技术

用于播放音视频文件的播放应用在工作过程中需要应对多种可能的场景,例如:多种音视频文件格式(如M3U8、MPD以及MP4等)的播放,多种音视频文件处理场景(如MPEG-DASH、HLS packing切分等)的实现,业务处理过程中实时发生的文件格式场景变化。

在现有技术中,为了应对前述的多种可能的场景,在播放应用内部设置复杂的分支逻辑去判断和实现不同处理场景,构造静态固定的处理流水线。

这样的实现方式存在明显的缺陷:随着处理场景的增多,播放应用内部的分支逻辑复杂程度上升,应用维护的难度也将相应上升;如果有新的场景加入,需要对原有流程进行修改,增加新的分支判断,导致播放应用整体代码量偏大,不易扩展;如果在播放应用运行过程中发生文件格式变化(例如开始文件需要解码,运行过程中文件格式发生变化,不再需要解码)或场景变化,因为变化的随机及不可控性,会导致某些场景处理失败。

发明内容

针对现有技术存在的问题,本发明实施例提供一种音视频处理方法、装置、电子设备及存储介质。

本发明第一方面实施例提供一种音视频处理方法,包括:

根据待执行命令以及播放应用中的已注册功能模块,确定所述待执行命令的工作流起点所对应的第一已注册功能模块,以及工作流终点所对应的第二已注册功能模块;

根据所述第一已注册功能模块以及第二已注册功能模块,结合预构建的带权有向图,按照工作流走向依次确定并运行执行所述待执行命令所需要的已注册功能模块;其中,

所述带权有向图中的图节点用于表示所述播放应用中的已注册功能模块,所述带权有向图中的边用于表示已注册功能模块之间的关联关系,边的权重用于表示已注册功能模块之间的关联程度。

上述技术方案中,在所述根据待执行命令以及播放应用中的已注册功能模块,确定所述待执行命令的工作流起点所对应的第一已注册功能模块,以及工作流终点所对应的第二已注册功能模块的步骤之前,方法还包括:

根据播放应用的功能划分功能模块,将所述功能模块按照预设的结构进行注册;

根据所述播放应用中的所有已注册功能模块,构建带权有向图;其中,所述构建带权有向图包括:

将已注册功能模块作为图节点;

计算所述图节点之间的权重值,在所述权重值大于0的图节点之间设置边,将所述权重值作为所述边的权重。

上述技术方案中,所述计算所述图节点之间的权重值包括:

当边起点所对应的已注册功能模块没有输出属性,则将边的权重值设置为0;

当边终点所对应的已注册功能模块没有输入属性,则将边的权重值设置为0;

当边起点所对应的已注册功能模块存在输出属性且边终点所对应的已注册功能模块存在输入属性,对所述输出属性分别做判断操作,直至所有输出属性均已完成判断操作;其中,

所述判断操作包括:若当前输出属性满足下面任一条件,将权重值加1;

当前输出属性中标注的需要排除的属性在边终点所对应的已注册功能模块都不存在;

边终点所对应的已注册功能模块中标注的需要排除的属性在当前输出属性都不存在;

边终点所对应的已注册功能模块的任一属性与当前输出属性的值相等且都不是需要排除的属性。

上述技术方案中,所述根据待执行命令以及播放应用中的已注册功能模块,确定所述待执行命令的工作流起点所对应的第一已注册功能模块,包括:

根据所述待执行命令中的源文件地址,从播放应用中的所有已注册功能模块中查找能够处理文件输入的已注册功能模块;

从查找到的能够处理文件输入的已注册功能模块中,根据所述待执行命令中的源文件格式,将匹配度最高的已注册功能模块确定为所述待执行命令的工作流起点所对应的第一已注册功能模块。

上述技术方案中,所述根据待执行命令以及播放应用中的已注册功能模块,确定工作流终点所对应的第二已注册功能模块,包括:

根据所述待执行命令中的目标操作,从播放应用中的所有已注册功能模块中查找与所述目标操作相对应的已注册功能模块,将查找到的已注册功能模块确定为所述待执行命令的工作流终点所对应的第二已注册功能模块。

上述技术方案中,所述根据所述第一已注册功能模块以及第二已注册功能模块,结合预构建的带权有向图,按照工作流走向依次确定并运行执行所述待执行命令所需要的已注册功能模块,包括:

从所述第一已注册功能模块开始,根据迪克斯特拉算法在所述带权有向图查找下一个需要运行的已注册功能模块,直至最终到达第二已注册功能模块。

上述技术方案中,所述从所述第一已注册功能模块开始,根据迪克斯特拉算法在所述带权有向图查找下一个需要运行的已注册功能模块,直至最终到达第二已注册功能模块,包括:

运行第一已注册功能模块,根据所述第一已注册功能在运行后的属性更新所述带权有向图;

将第一已注册功能模块在所述带权有向图中的图节点作为当前图节点;

在所述带权有向图中,根据迪克斯特拉算法计算当前图节点与第一图节点之间的最短路径;其中,所述第一图节点为所述第二已注册功能模块在所述带权有向图中的图节点;

运行第二图节点所对应的已注册功能模块,根据运行后的属性更新所述带权有向图;其中,所述第二图节点为所述当前图节点在所述当前图节点与第一图节点之间的最短路径上的下一个图节点;

判断所述第二图节点是否与所述第一图节点相同,当所述第二图节点与所述第一图节点不同时,将所述第二图节点作为当前图节点,然后重新执行在所述带权有向图中,根据迪克斯特拉算法计算当前图节点与第一图节点之间的最短路径的步骤;当所述第二图节点与所述第一图节点相同时,结束操作。

本发明第二方面实施例提供一种音视频处理装置,包括:

工作流起点与终点确定模块,用于根据待执行命令以及播放应用中的已注册功能模块,确定所述待执行命令的工作流起点所对应的第一已注册功能模块,以及工作流终点所对应的第二已注册功能模块;

命令执行模块,用于根据所述第一已注册功能模块以及第二已注册功能模块,结合预构建的带权有向图,按照工作流走向依次确定并运行执行所述待执行命令所需要的已注册功能模块;其中,

所述带权有向图中的图节点用于表示所述播放应用中的已注册功能模块,所述带权有向图中的边用于表示已注册功能模块之间的关联关系,边的权重用于表示已注册功能模块之间的关联程度。

本发明第三方面实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本发明第一方面实施例所述音视频处理方法的步骤。

本发明第四方面实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如本发明第一方面实施例所述音视频处理方法的步骤。

本发明实施例提供的音视频处理方法、装置、电子设备及存储介质,通过为播放应用的待执行命令查找对应工作流起点所对应的功能模块以及工作流终点所对应的功能模块,然后结合播放应用的带权有向图,从工作流起点所对应的功能模块开始,动态查找并运行下一个功能模块,直至到达工作流终点所对应的功能模块,从而将播放应用内部的静态流水线更改为根据dijkstra算法动态生成的流水线,提高了播放应用的性能及扩展性,解决了运行时文件格式变化或场景变化所带来的处理失败问题。

附图说明

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

图1为本发明实施例提供的音视频处理方法的流程图;

图2为本发明实施例提供的音视频处理方法中根据带权有向图查找待执行命令所对应的已注册功能模块的流程图;

图3为本发明另一实施例提供的音视频处理方法的流程图;

图4为本发明实施例提供的音视频处理方法中构建带权有向图的流程图;

图5为本发明另一实施例提供的音视频处理装置的示意图;

图6示例了本发明实施例提供的电子设备的实体结构示意图。

具体实施方式

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

图1为本发明实施例提供的音视频处理方法的流程图,如图1所示,本发明实施例提供的音视频处理方法包括:

步骤101、根据待执行命令以及播放应用中的已注册功能模块,确定所述待执行命令的工作流起点所对应的第一已注册功能模块,以及工作流终点所对应的第二已注册功能模块。

在本发明实施例中,播放应用是指能够播放音频文件和/或视频文件的应用。

播放应用根据待执行命令可实现视频/音频播放、文件格式转换等操作。待执行命令一般包括以下信息:源文件地址、目标操作类型、输出文件名以及输出文件类型。

播放应用中一些可独立执行的功能被划分为单独的功能模块,如用于通过网络下载文件的功能模块,用于解析标准的MP3文件的功能模块,用于解析标准的MP4文件的功能模块,用于对视频解码的功能模块,用于视频输出的功能模块等。

由于这些功能模块在播放应用中是“分散”的,对外没有统一的接口。因此在本发明实施例中,需要对这些功能模块进行注册。注册后的功能模块具有独立的标识,并按照统一的结构对所要完成的操作进行归类,以提供特定类型的服务。

例如,一个视频播放应用中已注册的功能模块包括:

http_in:用于通过网络下载文件;

mp4_demux:用于解析标准的mp4文件;

mp3_demux:用于解析标准的mp3文件;

dash_in:用于MPEG-DASH及HLS协议客户端;

tile_merge:用于根据协议将同一视频的多个tile分片合并;

dec:用于对视频进行解码;

audio_out:用于音频输出;

video_out:用于视频输出。

上述功能模块中的任意一个均可提供以下服务:

register方法:用于将功能模块注册到系统;

initialize方法:用于功能模块的初始化;

configure方法:用于为功能模块业务配置上下游输入输出通道;

property方法:定义功能模块的元属性,定义功能模块的输入输出数据类型(如功能模块输入的数据类型是文件流,可处理文件格式为MPD|M3U8,功能模块输出的数据类型是未解码的二进制hevc码流),还包括一些需要指定排除的属性,用于filter之间进行属性匹配或者排除。功能模块的属性在运行过程中会随着处理的进行而进行变化

process方法:功能模块业务处理逻辑;

finalize方法:功能模块销毁前处理逻辑。

在本发明实施例中,播放应用中的功能模块已经注册,在此不再对其注册过程做进一步说明。

一个播放应用中所包含的已注册功能模块一般有多个,根据待执行命令中的源文件地址(包括本地地址及远程地址等),从所有的已注册功能模块中查找能够处理文件输入(即含有处理文件输入方法)的功能模块。由于查找到的功能模块可能会有多个,因此还可根据待执行命令中的源文件格式(如前缀、后缀等信息)找到匹配度最高的功能模块,将这一功能模块作为待执行命令的工作流起点所对应的第一已注册功能模块。

根据待执行命令的目标操作,可从所有的已注册功能模块中查找与所述目标操作相对应的功能模块,将这一功能模块作为待执行命令的工作流终点所对应的第二已注册功能模块。例如,待执行命令的目标操作是播放(play),那么已注册功能模块video_out是待执行命令的工作流终点所对应的第二已注册功能模块。

步骤102、根据所述第一已注册功能模块以及第二已注册功能模块,结合预构建的带权有向图,按照工作流走向依次确定并运行执行所述待执行命令所需要的已注册功能模块。

播放应用中的已注册功能模块之间会存在一定的关联关系,如一功能模块的输出属性是另一功能模块的输入属性,所述输出属性或输入属性如解码类型,流类型(视频,音频等),文件扩展名(mpd,m3u8等)。为了描述同一播放应用中所有已注册功能模块之间的关联关系,在本发明实施例中,预构建了一个带权有向图。该带权有向图中的图节点为播放应用中的已注册功能模块,图节点之间的边代表图节点所对应的已注册功能模块之间存在关联关系,如某一条边的起点所代表的已注册功能模块的输出属性是该条边的终点所代表的已注册功能模块的输入属性;边的权重用于描述边的两个顶点各自所代表的已注册功能模块之间关联程度的高低,权重值越高,则相关性越高。

在本发明实施中,播放应用的带权有向图是预构建的,在本发明其他实施例中,将对带权有向图的构建过程进行说明。

在确定工作流起点所对应的第一已注册功能模块以及工作流终点所对应的第二已注册功能模块后,从所述第一已注册功能模块开始,根据迪克斯特拉算法在所述带权有向图查找下一个需要运行的已注册功能模块,直至最终到达第二已注册功能模块。图2为本发明实施例提供的音视频处理方法中根据带权有向图查找待执行命令所对应的已注册功能模块的流程图,如图2所示,具体包括:

步骤102-1、将工作流起点所对应的已注册功能模块作为当前已注册功能模块,标记当前已注册功能模块为F0;

步骤102-2、F0根据目前运行状态,对自身的属性进行更新,根据更新后的属性信息刷新预构建的带权有向图中的对应图节点的属性信息。

功能模块在运行过程中的属性有可能会发生变化,如目前处理的输入输出格式,需要排除的类型属性等。因此在本步骤中对自身的属性进行更新。

由于预构建的带权有向图中对应图节点的属性信息是尚未更新的属性信息,因此需要根据更新后的属性信息刷新预构建的带权有向图中的对应图节点的属性信息。例如,在一个实施例中,采用图列表node_list来存储图节点(包括图节点的属性信息),因此,可根据F0更新后的属性信息对node_list中对应图节点的属性信息进行更新。

如何根据F0更新后的属性信息对node_list中对应图节点的属性信息进行更新将在本发明之后实施例描述如何构建带权有向图时做详细说明。

步骤102-3、根据已注册功能模块和图节点的绑定关系,在带权有向图(通常用图列表node_list表示)中找到对应的图节点,将其作为起点Src_p。

步骤102-4、为工作流终点所对应的已注册功能模块(记为C1)在带权有向图中找到对应的图节点,将其作为终点Dst_p。

步骤102-5、根据各个已注册功能模块的实时属性信息为带权有向图中对应图节点以及边的属性信息进行更新。

步骤102-6、根据dijkstra_nodes算法,算出Src_p到Dst_p的最短路径。

步骤102-7、根据所述最短路径,得到起点Src_p在最短路径中的下一个图节点,根据图节点与已注册功能模块之间的绑定关系,得到下一个已注册功能模块。

步骤102-8、判断下一个已注册功能模块是否为工作流终点所对应的已注册功能模块,如果是,结束操作,否则,重新执行步骤102-2。

通过执行上述操作,可得到工作流起点所对应的已注册功能模块与工作流终点所对应的已注册功能模块之间的所有已注册功能模块,从而得到待执行命令的工作流中的所有功能模块。

按顺序执行这些功能模块,可实现对待执行命令的执行。

例如,一个待执行命令所要完成的操作是播放一个网络上的dash协议MP4视频。按照本发明实施例提供的方法,相应的执行步骤为:

S1、根据输入的视频地址格式,得到匹配的入口filter http_in,参照前述步骤102-1—步骤102-8,得到http_in的下一个处理的功能节点是mp4_demux;

S2、通过mp4_demux对MP4文件进行解析,并得到其下一个处理的节点是dash_in;

S3、通过dash_in对整个拉流过程进行控制,再继续算出dash_in下一个处理节点是dec;

S4、dec对视频进行解码,同时算出下一个处理节点是video_out;

S5、video_out根据dec解码出的视频进行渲染显示,最终完成整个播放过程。

本发明实施例提供的音视频处理方法通过为播放应用的待执行命令查找对应工作流起点所对应的功能模块以及工作流终点所对应的功能模块,然后结合播放应用的带权有向图,从工作流起点所对应的功能模块开始,动态查找并运行下一个功能模块,直至到达工作流终点所对应的功能模块,从而将播放应用内部的静态流水线更改为根据dijkstra算法动态生成的流水线,提高了播放应用的性能及扩展性,解决了运行时文件格式变化或场景变化所带来的处理失败问题。

基于上述任一实施例,图3为本发明另一实施例提供的音视频处理方法的流程图,如图3所示,本发明另一实施例提供的音视频处理方法包括:

步骤301、对播放应用中的功能模块进行注册。

播放应用中一些可独立执行的功能可划分为单独的功能模块,如通过网络下载文件的功能模块,解析标准的MP3文件的功能模块,解析标准的MP4文件的功能模块,对视频解码的功能模块,视频输出的功能模块等。

在本发明实施例中,每个功能模块注册为一个过滤器filter。

对这些功能模块进行注册时,首先要设置相应的标识。

例如,一个视频播放应用中的功能模块经注册后的标识包括:

http_in:用于通过网络下载文件;

mp4_demux:用于解析标准的mp4文件;

mp3_demux:用于解析标准的mp3文件;

dash_in:用于MPEG-DASH及HLS协议客户端;

tile_merge:用于根据协议将同一视频的多个tile分片合并;

dec:用于对视频进行解码;

audio_out:用于音频输出;

video_out:用于视频输出。

对功能模块进行注册,还包括按照预设的结构对功能模块所要完成操作进行划分。

例如,可将一个功能模块划分成以下方法:

register方法:用于将功能模块注册到系统;

initialize方法:用于功能模块的初始化;

configure方法:用于为功能模块业务配置上下游输入输出通道;

property方法:定义功能模块的元属性,定义功能模块的输入输出数据类型(如功能模块输入的数据类型是文件流,可处理文件格式为MPD|M3U8,功能模块输出的数据类型是未解码的二进制hevc码流),还包括一些需要指定排除的属性,用于filter之间进行属性匹配或者排除。功能模块的属性在运行过程中会随着处理的进行而进行变化

process方法:功能模块业务处理逻辑;

finalize方法:功能模块销毁前处理逻辑。

本发明实施例在注册功能模块时并不局限于以上说明,本领域技术人员可根据需要对功能模块的类型、功能模块所能划分的方法的类型进行调整。

步骤302、为播放应用中已注册的所有功能模块构建带权有向图。

在本发明实施例中,将播放应用中已注册的功能模块作为图节点,根据功能模块的属性信息设置图节点之间的边,并为所述边设置权重。

图4为本发明实施例提供的音视频处理方法中构建带权有向图的流程图,具体的说,包括以下步骤:

步骤302-1、创建一个存储图节点的列表node_list,该列表用于存放带权有向图中已创建的图节点,列表初始为空。

步骤302-2、判断播放应用已注册的所有功能模块是否都已经被处理,如果都已经被处理,结束构建带权有向图的操作;如果有已注册功能模块未被处理,选取一个未经处理的功能模块,将当前选取的功能模块记为F0。

本领域技术人员很容易理解,可采用集合的方式表示播放应用已注册的、未经处理的所有功能模块。从集合中选取功能模块时,将被选取的功能模块从集合中删除。这样可以保证从集合中选取的功能模块都是未经处理的已注册功能模块。

步骤302-3、创建图节点Dst,将F0和Dst绑定。

步骤302-4、判断是否已经为列表node_list中的所有图节点计算其与图节点Dst之间的距离,如果是,执行步骤302-7,如果列表node_list中还有图节点没有计算其与图节点Dst之间的距离,从列表node_list中取出一个尚未计算与图节点Dst之间距离的图节点,将其记为Src。

步骤302-5、根据Src的property方法,判断Src是否有输出属性,如果没有输出属性,执行下一步,如果有输出属性,计算Src到Dst的权重W0;如果计算得到的权重W0大于0,则为图节点Dst添加一条边E0,所添加的边E0的起点是Src,边E0的权重是W0,然后执行步下一步;如果计算得到的权重W0小于或等于0,执行下一步。

步骤302-6、根据Dst的property方法,判断Dst是否有输出属性,如果没有输出属性,重新执行步骤302-4,如果有输出属性,计算Dst到Src的权重W1;如果权重W1大于0,则为Src添加一条边E1,所添加的边E1的起点是Dst,边E1的权重是W1,然后重新执行步骤302-4;如果计算得到的权重W1小于或等于0,重新执行步骤302-4。

步骤302-7、将F0添加到node_list,然后重新执行步骤302-2。

以上是对播放应用中已注册的所有功能模块构建带权有向图的实现过程的描述。需要说明的是,若列表node_list为空,则在步骤302-4中将其视为已经为列表node_list中的所有图节点计算其与图节点Dst之间的距离。

在以上的步骤302-5和步骤302-6中都具有计算边的权重的相关步骤,下面对边的权重计算方法做详细说明。

在计算边权重时,将边的起点记为S0,边的终点记为D0;

如果边起点S0所对应的功能模块的property方法里没有输出属性(output属性),则边的权重值为0;

如果边终点D0所对应的功能模块的property方法里没有输入属性(input属性),则边的权重值为0;

如果边起点S0所对应的功能模块的property方法里有输出属性且边终点D0所对应的功能模块的property方法里有输入属性,遍历所有输出属性,取其中一个记为P0;

如果P0满足下面任一条件,则权重值加1:

①P0里标注需要排除的属性在D0都不存在;

②D0里标注需要排除的属性在P0都不存在;

③D0的任一属性和P0的值(value)相等且都不是排除(exclude)类型属性。

遍历完毕边起点S0所对应的功能模块中的所有输出属性,将最终得到的权重值作为边的权重值。

步骤303、根据待执行命令以及播放应用中的已注册功能模块,确定所述待执行命令的工作流起点所对应的已注册功能模块,以及工作流终点所对应的已注册功能模块。

步骤304、根据所述工作流起点所对应的已注册功能模块,以及工作流终点所对应的已注册功能模块,结合带权有向图,按照工作流走向依次确定执行所述待执行命令所需要的已注册功能模块,并执行所述待执行命令。

本发明实施例提供的音视频处理方法通过将播放应用中的功能模块按照属性信息构建带权有向图,所构建的带权有向图有助于查找用于实现待执行命令的所有相关功能模块,从而将播放应用内部的静态流水线更改为根据dijkstra算法动态生成的流水线,提高了播放应用的性能及扩展性,解决了运行时文件格式变化或场景变化所带来的处理失败问题。

基于上述任一实施例,图5为本发明另一实施例提供的音视频处理装置的示意图,如图5所示,本发明另一实施例提供的音视频处理装置,包括:

工作流起点与终点确定模块501,用于根据待执行命令以及播放应用中的已注册功能模块,确定所述待执行命令的工作流起点所对应的第一已注册功能模块,以及工作流终点所对应的第二已注册功能模块;

命令执行模块502,用于根据所述第一已注册功能模块以及第二已注册功能模块,结合预构建的带权有向图,按照工作流走向依次确定并运行执行所述待执行命令所需要的已注册功能模块;其中,

所述带权有向图中的图节点用于表示所述播放应用中的已注册功能模块,所述带权有向图中的边用于表示已注册功能模块之间的关联关系,边的权重用于表示已注册功能模块之间的关联程度。

本发明实施例提供的音视频处理装置为播放应用的待执行命令查找对应工作流起点所对应的功能模块以及工作流终点所对应的功能模块,然后结合播放应用的带权有向图,从工作流起点所对应的功能模块开始,动态查找并运行下一个功能模块,直至到达工作流终点所对应的功能模块,从而将播放应用内部的静态流水线更改为根据dijkstra算法动态生成的流水线,提高了播放应用的性能及扩展性,解决了运行时文件格式变化或场景变化所带来的处理失败问题。

图6示例了本发明实施例提供的电子设备的实体结构示意图,如图6所示,该电子设备可以包括:处理器(processor)610、通信接口(Communications Interface)620、存储器(memory)630和通信总线640,其中,处理器610,通信接口620,存储器630通过通信总线640完成相互间的通信。处理器610可以调用存储器630中的逻辑指令,以执行如下方法:根据待执行命令以及播放应用中的已注册功能模块,确定所述待执行命令的工作流起点所对应的第一已注册功能模块,以及工作流终点所对应的第二已注册功能模块;根据所述第一已注册功能模块以及第二已注册功能模块,结合预构建的带权有向图,按照工作流走向依次确定并运行执行所述待执行命令所需要的已注册功能模块。

需要说明的是,本实施例中的电子设备在具体实现时可以为服务器,也可以为PC机,还可以为其他设备,只要其结构中包括如图6所示的处理器610、通信接口620、存储器630和通信总线640,其中处理器610,通信接口620,存储器630通过通信总线640完成相互间的通信,且处理器610可以调用存储器630中的逻辑指令以执行上述方法即可。本实施例不对电子设备的具体实现形式进行限定。

此外,上述的存储器630中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

进一步地,本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:根据待执行命令以及播放应用中的已注册功能模块,确定所述待执行命令的工作流起点所对应的第一已注册功能模块,以及工作流终点所对应的第二已注册功能模块;根据所述第一已注册功能模块以及第二已注册功能模块,结合预构建的带权有向图,按照工作流走向依次确定并运行执行所述待执行命令所需要的已注册功能模块。

另一方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的方法,例如包括:根据待执行命令以及播放应用中的已注册功能模块,确定所述待执行命令的工作流起点所对应的第一已注册功能模块,以及工作流终点所对应的第二已注册功能模块;根据所述第一已注册功能模块以及第二已注册功能模块,结合预构建的带权有向图,按照工作流走向依次确定并运行执行所述待执行命令所需要的已注册功能模块。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号