H04L67/60 H04L67/61 H04L67/12 H04N7/18
1.一种视频流分发方法,其特征在于,所述方法包括:
获取车载应用发送的待处理访问请求,并将所述待处理访问请求添加到申请队列中;
根据所述待处理访问请求的优先级、时间戳、目标摄像头标识和所述申请队列的预设长度,判断所述待处理访问请求是否申请成功;
当所述待处理访问请求申请成功时,向所述待处理访问请求对应的车载应用输出所述待处理访问请求对应的目标摄像头的视频流;
其中,所述待处理访问请求中包括所述车载应用标识、目标摄像头标识、优先级和时间戳。
2.根据权利要求1所述的方法,其特征在于,所述根据所述待处理访问请求的优先级、时间戳、目标摄像头标识和所述申请队列的预设长度,判断所述待处理访问请求是否申请成功,具体包括:
根据所述申请队列中各个访问请求和所述待处理访问请求的所述优先级和所述时间戳,对所述申请队列进行重新排序;
根据重新排序后的所述申请队列中各个所述访问请求和所述待处理访问请求的所述优先级、所述目标摄像头标识和所述申请队列的长度,对所述申请队列进行调整;
当所述待处理访问请求在调整后的所述申请队列中时,确定所述待处理访问请求申请成功。
3.根据权利要求2所述的方法,其特征在于,所述根据所述申请队列中各个访问请求和所述待处理访问请求的所述优先级和所述时间戳,对所述申请队列进行重新排序,具体包括:
根据所述申请队列的各个所述访问请求,按照优先级从高到低的顺序进行排列,所述优先级从高到低包括独占、普通和后台三个级别;
当所述申请队列中存在多个所述访问请求的优先级相同时,根据多个所述访问请求的时间戳从晚到早的顺序进行排列,所述时间戳越晚越接近当前时刻。
4.根据权利要求2所述的方法,其特征在于,所述根据重新排序后的所述申请队列中各个所述访问请求和所述待处理访问请求的所述优先级、所述目标摄像头标识和所述申请队列的长度,对所述申请队列进行调整,具体包括:
当所述申请队列中存在多个所述访问请求的所述目标摄像头标识相同,且其中存在至少一个所述访问请求的优先级为独占时,将所述申请队列中所述目标摄像头标识对应的排序最靠前的所述访问请求以外的其他全部所述访问请求,从所述申请队列中删除;
当所述申请队列的长度大于预设长度时,从所述申请队列的队尾开始删除所述访问请求,直至所述申请队列的长度小于等于所述预设长度。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述方法,还包括:
当所述待处理访问请求申请失败时,继续向所述目标摄像头对应的原车载应用输出所述视频流。
6.一种视频流分发装置,其特征在于,所述装置,包括:
获取模块,用于获取当前车载应用发送的访问请求,并将所述当前车载应用发送的所述访问请求添加到申请队列中;
处理模块,用于根据所述访问请求的优先级、时间戳、目标摄像头标识和所述申请队列的长度,判断所述当前车载应用的所述访问请求是否申请成功;当所述当前车载应用发送的所述访问请求申请成功时,向所述当前车载应用输出所述视频流;
其中,所述访问请求中包括所述车载应用标识、目标摄像头标识、优先级和时间戳。
7.一种控制器,其特征在于,所述控制器,包括:存储器,处理器;所述存储器用于存储计算机程序;所述处理器用于根据所述存储器存储的计算机程序,实现如权利要求1至5中任意一项所述的视频流分发方法。
8.一种车辆,其特征在于,所述车辆上设置有多个车载摄像头、多个车载应用和如权利要求7所述的控制器。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时用于实现如权利要求1至5任一项所述的视频流分发方法。
10.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现权利要求1至5任一项所述的视频流分发方法。
本申请涉及电子电气领域,尤其涉及一种视频流分发方法、控制器、车辆、存储介质和程序产品。
随着汽车智能生态业务的不断发展,车载摄像头的硬件数量逐渐增加。车载应用通常需要从摄像头中获取视频流,以实现对场景的分析和决策,实现车载智能。
现有技术中,车载应用通常需要向车载摄像头发送访问请求,以请求获取车载摄像头中的视频流。一个车载摄像头可能会同时接收到多个车载应用发送的访问请求。该车载摄像头通常需要根据多个访问请求的优先级或请求顺序,向车载应用反馈视频流。
然而,现有技术中,该车辆中的车载摄像头通常相互独立,无法实现摄像头之间的联动,容易导致视频流使用效率低的问题。
本申请提供一种视频流分发方法、控制器、车辆、存储介质和程序产品,用以解决现有技术中视频流使用效率低的问题。
第一方面,本申请提供一种视频流分发方法,包括:
获取车载应用发送的待处理访问请求,并将所述待处理访问请求添加到所述申请队列中;
根据所述待处理访问请求的优先级、时间戳、目标摄像头标识和所述申请队列的预设长度,判断所述待处理访问请求是否申请成功;
当所述待处理访问请求申请成功时,向所述待处理访问请求对应的车载应用输出所述待处理访问请求对应的目标摄像头的视频流;
其中,所述待处理访问请求中包括所述车载应用标识、目标摄像头标识、优先级和时间戳。
可选地,所述根据所述待处理访问请求的优先级、时间戳、目标摄像头标识和所述申请队列的预设长度,判断所述待处理访问请求是否申请成功,具体包括:
根据所述申请队列中各个访问请求和所述待处理访问请求的所述优先级和所述时间戳,对所述申请队列进行重新排序;
根据重新排序后的所述申请队列中各个所述访问请求和所述待处理访问请求的所述优先级、所述目标摄像头标识和所述申请队列的长度,对所述申请队列进行调整;
当所述待处理访问请求在调整后的所述申请队列中时,确定所述待处理访问请求申请成功。
可选地,所述根据所述申请队列中各个访问请求和所述待处理访问请求的所述优先级和所述时间戳,对所述申请队列进行重新排序,具体包括:
根据所述申请队列的各个所述访问请求,按照优先级从高到低的顺序进行排列,所述优先级从高到低包括独占、普通和后台三个级别;
当所述申请队列中存在多个所述访问请求的优先级相同时,根据多个所述访问请求的时间戳从晚到早的顺序进行排列,所述时间戳越晚越接近当前时刻。
可选地,所述根据重新排序后的所述申请队列中各个所述访问请求和所述待处理访问请求的所述优先级、所述目标摄像头标识和所述申请队列的长度,对所述申请队列进行调整,具体包括:
当所述申请队列中存在多个所述访问请求的所述目标摄像头标识相同,且其中存在至少一个所述访问请求的优先级为独占时,将所述申请队列中所述目标摄像头标识对应的排序最靠前的所述访问请求以外的其他全部所述访问请求,从所述申请队列中删除;
当所述申请队列的长度大于预设长度时,从所述申请队列的队尾开始删除所述访问请求,直至所述申请队列的长度小于等于所述预设长度。
可选地,所述方法,还包括:
当所述待处理访问请求申请失败时,继续向所述目标摄像头对应的原车载应用输出所述视频流。
第二方面,本申请提供一种视频流分发装置,包括:
获取模块,用于获取车载应用发送的待处理访问请求,并将所述待处理访问请求添加到所述申请队列中;
处理模块,用于根据所述待处理访问请求的优先级、时间戳、目标摄像头标识和所述申请队列的预设长度,判断所述待处理访问请求是否申请成功;当所述待处理访问请求申请成功时,向所述待处理访问请求对应的车载应用输出所述待处理访问请求对应的目标摄像头的视频流;
其中,所述待处理访问请求中包括所述车载应用标识、目标摄像头标识、优先级和时间戳。
可选地,所述处理模块,具体用于:
根据所述申请队列中各个访问请求和所述待处理访问请求的所述优先级和所述时间戳,对所述申请队列进行重新排序;
根据重新排序后的所述申请队列中各个所述访问请求和所述待处理访问请求的所述优先级、所述目标摄像头标识和所述申请队列的长度,对所述申请队列进行调整;
当所述待处理访问请求在调整后的所述申请队列中时,确定所述待处理访问请求申请成功。
可选地,所述处理模块,具体用于:
根据所述申请队列的各个所述访问请求,按照优先级从高到低的顺序进行排列,所述优先级从高到低包括独占、普通和后台三个级别;
当所述申请队列中存在多个所述访问请求的优先级相同时,根据多个所述访问请求的时间戳从晚到早的顺序进行排列,所述时间戳越晚越接近当前时刻。
可选地,所述处理模块,具体用于:
当所述申请队列中存在多个所述访问请求的所述目标摄像头标识相同,且其中存在至少一个所述访问请求的优先级为独占时,将所述申请队列中所述目标摄像头标识对应的排序最靠前的所述访问请求以外的其他全部所述访问请求,从所述申请队列中删除;
当所述申请队列的长度大于预设长度时,从所述申请队列的队尾开始删除所述访问请求,直至所述申请队列的长度小于等于所述预设长度。
可选地,所述处理模块,还用于:
当所述待处理访问请求申请失败时,继续向所述目标摄像头对应的原车载应用输出所述视频流。
第三方面,本申请提供一种控制器,包括:存储器和处理器;所述存储器用于存储计算机程序;所述处理器用于根据所述存储器存储的计算机程序执行第一方面及第一方面任一种可能的设计中的视频流分发方法。
第四方面,本申请提供一种车辆,所述车辆上设置有多个车载摄像头、多个车载应用和如第三方面及第三方面任一种可能的设计中的控制器。
第五方面,本申请提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,当控制器的至少一个处理器执行该计算机程序时,控制器执行第一方面及第一方面任一种可能的设计中的视频流分发方法。
第六方面,本申请提供一种计算机程序产品,所述计算机程序产品包括计算机程序,当控制器的至少一个处理器执行该计算机程序时,控制器执行第一方面及第一方面任一种可能的设计中的视频流分发方法。
本申请提供的视频流分发方法、控制器、车辆、存储介质和程序产品,通过获取车载应用发送的待处理访问请求,并将待处理访问请求添加到申请队列中;根据该申请队列中访问请求和待处理请求的优先级、时间戳、目标摄像头标识和申请队列的预设长度,对申请队列中的访问请求和待处理访问请求进行仲裁;当待处理访问请求在该完成仲裁后的申请队列中时,确定该待处理访问请求申请成功,否则,该待处理访问请求申请失败;当所述待处理访问请求申请成功时,向所述待处理访问请求对应的车载应用输出所述待处理访问请求对应的目标摄像头的视频流的手段,实现提高了视频流的输出效率的效果。
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的一种视频流分发的场景示意图;
图2为本申请一实施例提供的一种视频流分发方法的流程图;
图3为本申请一实施例提供的一种视频流分发示例的流程图;
图4为本申请一实施例提供的一种仲裁示例的流程图;
图5为本申请一实施例提供的一种视频流分发装置的结构示意图;
图6为本申请一实施例提供的一种控制器的硬件结构示意图。
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换。例如,在不脱离本文范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。
取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
再者,如同在本文中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文中有相反的指示。
应当进一步理解,术语“包含”、“包括”表明存在的特征、步骤、操作、元件、组件、项目、种类、和/或组,但不排除一个或多个其他特征、步骤、操作、元件、组件、项目、种类、和/或组的存在、出现或添加。
此处使用的术语“或”和“和/或”被解释为包括性的,或意味着任一个或任何组合。因此,“A、B或C”或者“A、B和/或C”意味着“以下任一个:A;B;C;A和B;A和C;B和C;A、B和C”。仅当元件、功能、步骤或操作的组合在某些方式下内在地互相排斥时,才会出现该定义的例外。
随着汽车智能生态业务的不断发展,车辆中的车载摄像头的硬件数量逐渐增加。车辆上的车载应用通常需要从摄像头中获取视频流,以实现对场景的分析和决策,实现车载智能。现有技术中,车载应用通常需要向车载摄像头发送访问请求,以请求获取车载摄像头中的视频流。一个车载摄像头可能会同时接收到多个车载应用发送的访问请求。该车载摄像头通常需要根据多个访问请求的优先级或请求顺序,向车载应用反馈视频流。一个车载应用也可能需要同时访问多个车载摄像头,以获取更加完整全面的视频信息。为了使摄像头的视频流能够最大程度的被车载应用访问,限制并发访问请求的车载应用个数来维持车载系统稳定运行,是必不可少的控制策略。然而,现有技术中,该车辆中的各个车载摄像头通常相互独立,无法实现摄像头之间的联动,难以实现车载摄像头的整体控制,容易导致视频流使用效率低的问题。
针对上述问题,本申请提出了一种视频流分发方法、控制器和车辆。本申请中,控制器可以获取车载应用发送的待处理访问请求。控制器可以将待处理访问请求添加到申请队列中。该申请队列中可以包括多个已经申请成功的访问请求,和至少一个待处理访问请求。访问请求中可以包括车载应用标识、目标摄像头标识、优先级和时间戳。其中,优先级可以包括独占、普通和后台三种类型。控制器可以根据申请队列中的访问请求和待处理访问请求的优先级和时间戳对该申请队列进行重新排序。控制器可以根据重新排序后的申请队列中各个访问请求和待处理访问请求的优先级、目标摄像头标识和申请队列的预设长度,对申请队列进行调整。如果待处理访问请求在该调整后的申请队列中,则控制器确定该待处理访问请求申请成功。控制器可以根据该申请队列中各个申请成功的访问请求,向其对应的车载应用输出其对应的目标摄像头的视频流。本申可以通过上述针对多应用并发访问多摄像头视频流的分发控制策略,使一个摄像头可以被多个车载应用访问,以及一个车载应用可以同时访问多个摄像头。本申请中,控制器通过对车载摄像头的统一管控,确保车载摄像头能合理的被多个车载应用并发访问,并维持系统的稳定性。
下面以具体地实施例对本申请的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图1示出了本申请一实施例提供的一种视频流分发的场景示意图。如图1所示,该车辆中可以包括多个车载应用和多个摄像头。在本申请的方法中,每一个车载应用可以被看成是一个客户端。在摄像头和车载应用之间,本申请增加了一个控制器。该控制器可以用于实现该车辆中各个摄像头的视频流的分发决策管理。车载应用可以在需要获取摄像头的视频流时,向该控制器发送访问请求。该访问请求中包括预先定义的优先级。控制器将根据该优先级向车载应用分发视频流。该访问请求用于指示车载应用访问摄像头视频流的权限。只有向目标摄像头发送访问请求的车载应用才能访问该目标摄像头的视频流。该访问请求的优先级可以包括:独占、普通、后台三种类型。该三种类型的优先级为:独占>普通>后台。该控制器中维护有一个申请队列。该申请队列中包括多个访问请求。该申请队列中,控制器以先进先出的方式写入或者删除访问请求。当访问请求被添加到申请队列后,该控制器将向该访问请求对应的目标摄像头申请视频流。当目标摄像头的视频流未被占用时,无论车载应用的访问请求的优先级为哪一种,该车载应用都将申请成功。当目标摄像头已经被发送独占型的访问请求的车载应用占用时,其它车载应用发送的其他优先级的访问请求会直接申请失败。而如果其它车载应用发送的访问请求的优先级为独占型,则其他车载应用会抢占到该摄像头的视频流。在车载应用发送的访问请求的优先级为普通或者后台时,如果申请队列未满,则车载应用申请成功。否则,高优先级将挤占低优先级的车载应用。以及,访问请求的发送时间晚的同优先级的访问请求,将挤占发送时间早的访问请求。
本申请中,以控制器为执行主体,执行如下实施例的视频流分发方法。具体地,该执行主体可以为控制器的硬件装置,或者为控制器中实现下述实施例的软件应用,或者为安装有实现下述实施例的软件应用的计算机可读存储介质,或者为实现下述实施例的软件应用的代码。
图2示出了本申请一实施例提供的一种视频流分发方法的流程图。在图1所示实施例的基础上,如图2所示,以控制器为执行主体,本实施例的方法可以包括如下步骤:
S101、获取车载应用发送的待处理访问请求,并将待处理访问请求添加到申请队列中。其中,待处理访问请求中包括车载应用标识、目标摄像头标识、优先级和时间戳。
本实施例中,控制器可以与多个车载应用连接。该多个车载应用可以向该控制器发送访问请求。一个访问请求用于访问一个目标摄像头,并获取该目标摄像头的视频流。一个车载应用可以同时发送多个访问请求。或者,多个车载应用可以同时发送访问请求。一个访问请求中至少包括发送该访问请求的车载应用标识、目标摄像头标识、优先级和时间戳。其中,车载应用标识用于唯一标识一个车载应用。目标摄像头标识用于唯一标识一个摄像头。其中,优先级可以包括独占、普通、后台三种类型。当访问请求为独占型时,在待处理访问请求申请成功时,其他待处理访问请求将无法申请成功。
控制器可以在获取车载应用发送的待处理访问请求后,将该待处理访问请求添加到申请队列中。其中,该申请队列中可以包括多个已经申请成功的访问请求和至少一个待处理访问请求。其中,已经申请成功的访问请求的数量为该申请队列的预设长度。例如,该预设长度可以为6、7、8等。例如,当该预设长度为6时,说明该申请队列中前6个访问请求为申请成功的访问请求。控制器将根据该6个访问请求,向这些访问请求对应的车载应用发送其请求的目标摄像头的视频流。
当控制器将待处理访问请求添加到该申请队列后,该申请队列的长度将大于预设长度。例如,当控制器将一个待处理访问请求添加到预设长度为6的申请队列后,该申请队列的长度更新为7。又如,当控制器将两个待处理访问请求添加到预设长度为6的申请队列后,该申请队列的长度更新为8。
一种示例中,控制器可以根据获取的待处理访问请求的时间顺序,逐一将待处理访问请求添加到申请队列中后,逐一对待处理访问请求就进行处理。
另一种示例中,控制器可以周期性将该周期内获取的至少一个待处理访问请求添加到申请队列中,控制器将批量对该至少一个待处理访问请求进行处理。
一种示例中,步骤S101所示内容可以如图3中步骤S201和步骤S202所示。车载应用根据预设的目标摄像头的指定优先级,生成访问请求。该访问请求用于申请目标摄像头的视频流。当控制器获取当前车载应用发送的访问请求后,该控制器可以将该访问请求添加到申请队列中。控制器可以以先进先出的形式,将该访问请求添加到该申请队列的队尾。
S102、根据访问请求的优先级、时间戳、目标摄像头标识和申请队列的预设长度,判断待处理访问请求是否申请成功。
本实施例中,申请队列中申请成功的访问请求的数量根据预设长度确定。加入了待处理访问请求后的申请队列长度将大于该预设长度。因此,控制器可以根据该申请队列中访问请求和待处理请求的优先级、时间戳、目标摄像头标识和申请队列的预设长度,对申请队列中的访问请求和待处理访问请求进行仲裁。完成该步骤仲裁后的申请队列的长度为预设长度。当待处理访问请求在该完成仲裁后的申请队列中时,控制器确定该待处理访问请求申请成功。否则,该待处理访问请求申请失败。
例如,假设申请队列的预设长度为6。控制器在向申请队列中添加一个待处理访问请求后的,该申请队列的长度为7。控制器可以对该长度为7的申请队列中的访问请求和待处理访问请求进行仲裁。完成仲裁后的申请队列的长度为6。如果该待处理访问请求在该仲裁后的申请队列中,则该待处理访问请求申请成功。
该仲裁步骤可以如图3中的步骤S203所示。该仲裁步骤具体用于判断该申请队列中哪些访问请求可以获取到目标摄像头的视频流。
一种示例中,该仲裁的过程具体可以包括如下步骤:
步骤1、控制器根据申请队列中各个访问请求和待处理访问请求的优先级和时间戳,对申请队列进行重新排序。
一种实现方式中,控制器可以根据排序规则,按照如下两个步骤完成该申请队列的排序。
步骤1.1、控制器根据申请队列的各个访问请求,按照优先级从高到低顺序进行排列,优先级从高到低包括独占、普通和后台三个级别。
即,当该申请队列可以根据优先级分为三段。其中第一段在该申请队列的最前,其优先级均为独占型。第二段在第一段之后,其优先级均为普通型。第三段在第二段之后,其优先级均为后台型。如果其中存在一种优先级对应的访问请求数量为0,则该种优先级对应的段长度为0。控制器可以在获取各个访问请求和待处理访问请求的优先级后,根据该优先级对该申请队列中的访问请求和待处理访问请求进行排序。
步骤1.2、当申请队列中存在多个访问请求的优先级相同时,控制器根据多个访问请求的时间戳从晚到早的顺序进行排列,时间戳越晚越接近当前时刻。
即,当一种优先级对应的访问请求数量大于1时,可以根据该段中各个访问请求的时间戳从晚到早排序。即,时间戳越接近当前时刻,该访问请求的排序越靠前。控制器可以针对上述三段中段长度大于1的段进行段内排序,得到最终的排序结果。
另一种实现方式中,由于该申请队列中的访问请求为已经在上一个周期中完成排序的访问请求。因此,在本步骤中,控制器可以根据待处理访问请求的优先级和时间戳将待处理请求插入到该申请队列中,从而实现该申请队列的排序。使用该方法进行排序,可以降低排序复杂度,提高排序效率。
步骤2、控制器根据重新排序后的申请队列中各个访问请求和待处理访问请求的优先级、目标摄像头标识和申请队列的长度,对申请队列进行调整。
本步骤中,控制器可以根据调整规则,按照如下两个步骤完成该申请队列的调整。
步骤2.1、当申请队列中存在多个访问请求的目标摄像头标识相同,且其中存在至少一个访问请求的优先级为独占时,控制器将申请队列中目标摄像头标识对应的排序最靠前的访问请求以外的其他全部访问请求,从申请队列中删除。
由于在本申请中,当摄像头被独占型访问请求访问时,该摄像头将无法被其他访问请求访问。因此,当申请队列中存在一访问请求的优先级为独占型时,控制器可以根据该访问请求确定其目标摄像头,并将该申请队列中该目标摄像头的其他访问请求删除。在本步骤中,控制器将根据申请队列的顺序,从前向后依次判断各个访问请求。例如,第一个访问请求为独占型访问请求,且其目标摄像头为摄像头1。控制器可以遍历该申请队列中的其他访问请求,并获取其他访问请求的目标摄像头。如果,其他访问请求的目标摄像头与第一个访问请求的目标摄像头相同,则控制器删除该访问请求。例如,第二个访问请求为独占型访问请求,其目标摄像头也为摄像头1,则控制器删除该第二个访问请求。虽然该第二个访问请求的优先级同样为独占型访问请求,但是该第二个访问请求的排序在第一个访问请求之后。该排序可以说明该第二个访问请求的时间戳早于第一个访问请求。按照后申请优先的规则,该时间戳较早的冲突的访问请求将被删除。其后,控制器将在删除该第二个访问请求后,继续遍历下一个访问请求。又如,第五个访问请求为普通型访问请求或者后台型访问请求,且其目标摄像头为摄像头1。控制器将删除该第五个访问请求。由于第一个访问请求为独占访问请求,因此,当该第一个访问请求申请成功后,与该第一个访问请求访问同一个目标摄像头的访问请求将无法申请成功。因此,该第五个访问请求无法申请成功。即,该第五个访问请求将被从该申请队列中删除。
步骤2.2、当申请队列的长度大于预设长度时,控制器从申请队列的队尾开始删除访问请求,直至申请队列的长度小于等于预设长度。
如果,在完成步骤2.1的处理后,该申请队列的长度可能仍旧大于预设长度,则控制器需要将优先级最低的至少一个访问请求删除,以使该申请队列的长度保留在预设长度。例如,申请队列的预设长度为6,队列长度为7,其中包括1个待处理访问请求。当该待处理访问请求的优先级为独占型时,该待处理访问请求的可能会在步骤1后出现在该申请队列的队首。如果在步骤2.1中控制器没有在该队列中到与该待处理访问请求的目标摄像头相同的其他访问请求,则在本步骤中,该申请队列的长度还为7。此时,控制器可以直接删除申请队列的最后一个访问请求,以使该申请队列的长度保持在6。当该申请队列中存在后台型访问请求时,控制器删除的访问请求通常为时间戳最早的后台型访问请求。当该申请队列中没有后台型访问请求,且存在普通型访问请求时,控制器删除的访问请求通常为时间戳最早的普通型访问请求。当该申请队列中仅包括独占型访问请求时,控制器删除的访问请求通常为时间戳最早的独占型访问请求。
如果,在完成步骤2.1的处理后,该申请队列的长度小于等于预设长度,则控制器不需要对该申请队列进行其他处理,可以直接跳转到步骤3。
步骤3、当待处理访问请求在调整后的申请队列中时,确定待处理访问请求申请成功。
本步骤中,当待处理访问请求在调整后的申请队列中时,控制器可以确定该待处理访问请求申请成功。否则,当待处理访问请求不在调整后的申请队列中时,说明该待处理访问请求的优先级低于该待处理访问请求中的其他访问请求。此时,控制器可以确定该待处理访问请求申请失败。
另一种示例中,上述仲裁过程还可以根据如图4所示的过程实现:
步骤1:控制器可以在将待处理访问请求加入申请队列后,判断该申请队列的长度是否为1。如果该申请队列的长度为1,则待处理访问请求申请成功。否则,控制器执行步骤2的判断。
步骤2:当申请队列的长度大于1时,控制器判断申请队列中是否包含该待处理访问请求对应的目标摄像头的独占型访问请求。如果申请队列中包含目标摄像头的独占型访问请求,则进入步骤3,否则进入步骤4。
步骤3:当申请队列中包含目标摄像头的独占型访问请求时,控制器判断待处理访问请求的优先级是否为独占型。如果待处理访问请求的优先级是独占型,则申请成功。如果申请成功,则之前访问该目标摄像头的访问请求被该待处理访问请求取代。该目标摄像头的视频流将不再向之前访问该目标摄像头的访问请求对应的车载应用输出。该目标摄像头的视频流将向待处理访问请求对应的车载应用输出。否则,如果待处理访问请求的优先级不是独占型,则申请失败。
步骤4:当申请队列中不包含目标摄像头的独占型访问请求时,控制器判断申请队列的长度是否大于预设长度。如果申请队列的长度大于预设长度,则进入步骤6,否则,如果申请队列的长度小于等于预设长度,进入步骤5。
步骤5:当申请队列中不包含目标摄像头的独占型访问请求,且申请队列长度小于等于预设长度时,控制器判断待处理访问请求的优先级是否为独占型。如果,该待处理访问请求的优先级是独占型,则申请成功。如果申请成功,则控制器将使用该待处理访问请求,取代之前访问该目标摄像头的独占型的访问请求。该目标摄像头的视频流将不再向之前访问该目标摄像头的访问请求对应的车载应用输出。否则,如果该待处理访问请求的优先级不是独占型,则该待处理访问请求也申请成功。此时,该待处理访问请求将被添加到该申请队列中。且该待处理访问请求在该申请队列中的添加将不影响其它访问请求访问该目标摄像头。例如,该申请队列中第三个访问请求的目标摄像头为摄像头1,且其优先级为普通型。此时,控制器可以将该待处理访问请求添加到该申请队列的队尾。该待处理访问请求的加入,将不会影响该第三个访问请求获取摄像头1的视频流。控制器可以在该第三个访问请求完成访问后,顺序获取该申请队列中下一个访问该摄像头1的访问请求。例如,当该待处理访问请求为第五个访问请求,且第四个访问请求的目标摄像头为摄像头2时,该待处理访问请求将在第三个访问请求完成访问后被执行。否则,如果第四个访问请求的目标摄像头也为摄像头1,则该待处理访问请求将在第四个访问请求完成访问后被执行。当该待处理访问请求被执行时,该摄像头1的视频流将被发送到该待处理访问请求对应的车载应用。
步骤6:当申请队列中不包含目标摄像头的独占型访问请求,且申请队列长度大于预设长度时,控制器判断待处理访问请求的优先级是否为独占型。如果待处理访问请求的优先级是独占型,则申请成功。如果申请成功,则之前访问该目标摄像头的访问请求被该待处理访问请求取代。该目标摄像头的视频流将不再向之前访问该目标摄像头的访问请求对应的车载应用输出。否则,如果待处理访问请求的优先级不是独占型,则进入步骤7。
步骤7:当申请队列中不包含目标摄像头的独占型访问请求,申请队列长度大于预设长度,且待处理访问请求的优先级不是独占型时,控制器判断待处理访问请求的优先级是否为普通型。如果待处理访问请求的优先级是普通型,则进入步骤8,否则进入步骤9。
步骤8:当申请队列中不包含目标摄像头的独占型访问请求,申请队列长度大于预设长度,且待处理访问请求的优先级是普通型时,控制器判断申请队列中是否包含该待处理访问请求对应的目标摄像头的其他后台型访问请求。如果申请队列中包含与该待处理访问请求的目标摄像头相同,且优先级为后台型的访问请求,则该待处理访问请求申请成功,且与该待处理访问请求的目标摄像头相同,且优先级为后台型的访问请求申请失败。即,控制器将不再向与该待处理访问请求的目标摄像头相同,且优先级为后台型的访问请求对应的车载应用发送目标摄像头的视频流。控制器将向待处理访问请求对应的车载应用发送该目标摄像头的视频流。如果申请队列中不包含与该待处理访问请求的目标摄像头相同,且优先级为后台型的访问请求,该待处理访问请求也可以申请成功。此时,优先级为普通型,且时间戳最早的访问请求将被该待处理访问请求取代。即,控制器将不再向该优先级为普通型,且时间戳最早的访问请求发送视频流。例如,该优先级为普通型,且时间戳最早的访问请求对应的目标摄像头可以为摄像头2和车载应用2。该待处理访问请求对应的目标摄像头可以为摄像头1和车载应用1。则,控制器将停止向车载应用2发送摄像头2的视频流。同时,向车载应用1发送摄像头1的视频的进程将取代向车载应用2发送摄像头2的视频流的进程。
步骤9:当申请队列中不包含目标摄像头的独占型访问请求,申请队列长度大于预设长度,且待处理访问请求的优先级是后台型时,控制器判断申请队列中是否包含该待处理访问请求对应的目标摄像头的其他后台型访问请求。如果申请队列中包含该待处理访问请求对应的目标摄像头的其他后台型访问请求,则申请成功。优先级为后台型且与待处理访问请求对应的目标摄像头相同的时间戳最早的访问请求将被该待处理访问请求取代。如果申请队列中包含优先级为后台型的其他摄像头的访问请求,同样申请成功。优先级为后台型且时间戳最早的其他摄像头的访问请求将被该待处理访问请求取代。如果申请队列中不包含优先级为后台型的访问请求,则申请失败。
S103、当待处理访问请求申请成功时,向待处理访问请求对应的车载应用输出待处理访问请求对应的目标摄像头的视频流。
本实施例中,控制器可以在确定该申请队列后,根据该申请队列中的访问请求,调整各个摄像头输出的视频流。如果申请队列中的访问请求没有发生变化,则摄像头的视频流的输出不需要调整。否则,如果该待处理访问请求申请成功,则说明控制器需要删除一个原有的摄像头向车载应用输出视频流的进程,并根据该待处理访问请求生成一个新的摄像头向车载应用输出视频流的进程。
一种示例中,控制器可以根据步骤S102生成的申请队列,按照从前往后的顺序,逐一对访问请求继续处理。该处理包括根据该访问请求,将该访问请求对应的目标摄像头的视频流输出到该访问请求对应的车载应用中。在该过程中,如果在后的访问请求对应的目标摄像头已经被在前的访问请求访问,则控制器不对该访问请求继续处理,直至在前的访问请求结束对该目标摄像头的访问。在执行本示例的操作之前,控制器可以将存在全部视频流输出进程删除,并等待本示例中新的视频流输出进程的创建。
另一种示例中,控制器还可以根据该申请队列中删除的访问请求和新增的待处理访问请求,对摄像头向车载应用输出视频流的进程进行调整。控制器可以根据删除的访问请求,删除该访问请求对应的目标摄像头向该访问请求对应的车载应用输出视频流的进程。控制器可以根据新增的待处理访问请求,新增该待处理访问请求对应的目标摄像头向该待处理访问请求对应的车载应用输出视频流的进程。需要注意的是,在该新增过程中,如果该待处理访问请求对应的目标摄像头已经被其他访问请求访问,则控制器将不对该待处理访问请求进行处理,直至该待处理访问请求对应的目标摄像头被其他访问请求释放。
再一种实例中,当待处理访问请求申请失败时,该待处理访问请求对应的目标摄像头将继续向其输出视频流的原车载应用继续输出视频流。
又一种实例中,该视频流输出的调整过程可以如图3中的步骤S204至S209所示。
步骤S204:控制器可以在完成仲裁后,确定该访问请求是否申请成功。
步骤S205:当待处理访问请求申请失败时,该待处理请求对应的车载应用将无法获取目标摄像头的视频流。
步骤S206:当待处理访问请求申请成功时,控制器可以判断该申请队列中其它车载应用的视频流是否被挤占。即,该申请队列中是否存在访问请求被删除。
步骤S207:如果该申请队列中存在其它车载应用的视频流被挤占,则该视频流会被停止向该车载应用输出。即,该被删除的访问请求对应的目标摄像头将停止向该访问请求对应的车载应用输出视频流。
步骤S208:如果该申请队列中存在其它车载应用的视频流没被挤占,则其它车载应用仍可以正常获取视频流。即,如果该申请队列中没有访问请求被删除,则该申请队列中的访问请求将继续执行之前的视频流输出操作。
步骤S209:当前待处理访问请求申请成功后,该待处理访问请求对应的车载应用将可以获取该待处理访问请求对应的目标摄像头的视频流。
本申请提供的视频流分发方法,控制器可以获取车载应用发送的待处理访问请求,并将待处理访问请求添加到申请队列中。控制器可以根据该申请队列中访问请求和待处理请求的优先级、时间戳、目标摄像头标识和申请队列的预设长度,对申请队列中的访问请求和待处理访问请求进行仲裁。当待处理访问请求在该完成仲裁后的申请队列中时,控制器确定该待处理访问请求申请成功。否则,该待处理访问请求申请失败。当待处理访问请求申请成功时,控制器向待处理访问请求对应的车载应用输出待处理访问请求对应的目标摄像头的视频流。本申请中,通过该控制器实现多摄像头和多应用程序的视频流输出,提高了视频流的输出效率,提高了车载应用对于视频流的使用效率。
图5示出了本申请一实施例提供的一种视频流分发装置的结构示意图,如图5所示,本实施例的视频流分发装置10用于实现上述任一方法实施例中对应于控制器的操作,本实施例的视频流分发装置10包括:
获取模块11,用于获取车载应用发送的待处理访问请求,并将待处理访问请求添加到申请队列中。
处理模块12,用于根据待处理访问请求的优先级、时间戳、目标摄像头标识和申请队列的预设长度,判断待处理访问请求是否申请成功;当待处理访问请求申请成功时,向待处理访问请求对应的车载应用输出待处理访问请求对应的目标摄像头的视频流。
其中,待处理访问请求中包括车载应用标识、目标摄像头标识、优先级和时间戳。
一种示例中,处理模块12,具体用于:
根据申请队列中各个访问请求和待处理访问请求的优先级和时间戳,对申请队列进行重新排序;
根据重新排序后的申请队列中各个访问请求和待处理访问请求的优先级、目标摄像头标识和申请队列的长度,对申请队列进行调整;
当待处理访问请求在调整后的申请队列中时,确定待处理访问请求申请成功。
一种示例中,处理模块12,具体用于:
根据申请队列的各个访问请求,按照优先级从高到低的顺序进行排列,优先级从高到低包括独占、普通和后台三个级别。
当申请队列中存在多个访问请求的优先级相同时,根据多个访问请求的时间戳从晚到早的顺序进行排列,时间戳越晚越接近当前时刻。
一种示例中,处理模块12,具体用于:
当申请队列中存在多个访问请求的目标摄像头标识相同,且其中存在至少一个访问请求的优先级为独占时,将申请队列中目标摄像头标识对应的排序最靠前的访问请求以外的其他全部访问请求,从申请队列中删除。
当申请队列的长度大于预设长度时,从申请队列的队尾开始删除访问请求,直至申请队列的长度小于等于预设长度。
一种示例中,处理模块12,还用于:
当待处理访问请求申请失败时,继续向目标摄像头对应的原车载应用输出视频流。
本申请实施例提供的视频流分发装置10,可执行上述方法实施例,其具体实现原理和技术效果,可参见上述方法实施例,本实施例此处不再赘述。
图6示出了本申请实施例提供的一种控制器的硬件结构示意图。如图6所示,该控制器20,用于实现上述任一方法实施例中对应于控制器的操作,本实施例的控制器20可以包括:存储器21,处理器22和通信接口24。
存储器21,用于存储计算机程序。该存储器21可能包含高速随机存取存储器(Random Access Memory,RAM),也可能还包括非易失性存储(Non-Volatile Memory,NVM),例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
处理器22,用于执行存储器存储的计算机程序,以实现上述实施例中的视频流分发方法。具体可以参见前述方法实施例中的相关描述。该处理器22可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
可选地,存储器21既可以是独立的,也可以跟处理器22集成在一起。
当存储器21是独立于处理器22之外的器件时,控制器20还可以包括总线23。该总线23用于连接存储器21和处理器22。该总线23可以是工业标准体系结构(IndustryStandard Architecture,ISA)总线、外部设备互连(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准体系结构(Extended Industry StandardArchitecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
通信接口24用于与摄像头进行交互,以获取视频流。该通信接口24还用于与应用程序进行交互,以输出视频流。
本实施例提供的控制器可用于执行上述的视频流分发方法,其实现方式和技术效果类似,本实施例此处不再赘述。
本申请还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时用于实现上述的各种实施方式提供的方法。
其中,计算机可读存储介质可以是计算机存储介质,也可以是通信介质。通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。计算机存储介质可以是通用或专用计算机能够存取的任何可用介质。例如,计算机可读存储介质耦合至处理器,从而使处理器能够从该计算机可读存储介质读取信息,且可向该计算机可读存储介质写入信息。当然,计算机可读存储介质也可以是处理器的组成部分。处理器和计算机可读存储介质可以位于专用集成电路(Application Specific Integrated Circuits, ASIC)中。另外,该ASIC可以位于用户设备中。当然,处理器和计算机可读存储介质也可以作为分立组件存在于通信设备中。
具体地,该计算机可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random-Access Memory,SRAM),电可擦除可编程只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM),可编程只读存储器(Programmable read-only memory,PROM),只读存储器(Read-OnlyMemory,ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
本申请还提供一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中。设备的至少一个处理器可以从计算机可读存储介质中读取该计算机程序,至少一个处理器执行该计算机程序使得设备实施上述的各种实施方式提供的方法。
本申请实施例还提供一种芯片,该芯片包括存储器和处理器,存储器用于存储计算机程序,处理器用于从存储器中调用并运行计算机程序,使得安装有芯片的设备执行如上各种可能的实施方式中的方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
其中,各个模块可以是物理上分开的,例如安装于一个的设备的不同位置,或者安装于不同的设备上,或者分布到多个网络单元上,或者分布到多个处理器上。各个模块也可以是集成在一起的,例如,安装于同一个设备中,或者,集成在一套代码中。各个模块可以以硬件的形式存在,或者也可以以软件的形式存在,或者也可以采用软件加硬件的形式实现。本申请可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
当各个模块以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本申请各个实施例方法的部分步骤。
应该理解的是,虽然上述实施例中的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制。尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换。而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
本文发布于:2023-04-13 11:02:52,感谢您对本站的认可!
本文链接:https://patent.en369.cn/patent/3/85973.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |