一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

视频渲染的触发方法、装置、电子设备及存储介质与流程

2022-08-17 09:58:54 来源:中国专利 TAG:


1.本发明实施例涉及计算机应用技术领域,尤其涉及一种视频渲染的触发方法、装置、电子设备及存储介质。


背景技术:

2.在日常生活中,视频作为信息传递载体之一,由于其强有力的视觉感染力备受广大用户青睐。在大量视频需要进行渲染的情况下,对视频渲染技术的开发以及维护的也提出了新的挑战。
3.现有方案中,往往是将视频渲染的触发流程以及渲染流程嵌套在整个业务流程中,通过对象与对象强引用的方式去实现。由于视频渲染的触发流程需要主动检测系统的详细运行情况来确定是否需要触发渲染。因此,触发渲染的逻辑中往往嵌套有页面数据监测等其他的实现逻辑。当业务流程优化的时候,通常需要调整大量的业务功能。但是由于视频渲染的触发流程以及渲染流程嵌套在整个业务流程中,即使不对视频渲染的触发流程进行优化或修改,也可能会因为其关联的逻辑的修改导致视频渲染的触发流程出现问题,使得业务流程优化的时候很难下手或者改造成本非常巨大。


技术实现要素:

4.本发明实施例提供了一种视频渲染的触发方法、装置、电子设备及存储介质,解决了视频渲染的触发机制的维护成本较高的问题。
5.第一方面,本发明实施例提供了一种视频渲染的触发方法,该方法可包括:
6.在监测到用于触发对目标视频进行视频渲染的触发事件时,获取与所述触发事件对应的页面内容参数,其中,所述页面内容参数包括视频标识、直播间类型判定信息和视频详情对象信息;
7.以所述页面内容参数为入参参数,在预定义的视频渲染代理类中调用持有者管理类复写的监听器触发方法,触发视频渲染功能,以获取目标页面数据;
8.其中,所述视频渲染代理类继承自基础管理类,所述调用预定义的视频渲染代理类中的监听器触发方法,触发视频渲染功能,包括:
9.以所述页面内容参数为入参参数,调用持有者管理类中的持有者获取方法,以获取当前页面的页面持有对象;
10.以所述视频标识、直播间类型判定信息和视频详情对象信息为入参参数,调用所述页面持有对象中的监听方法,对所述页面内容参数进行监听;
11.当监听到所述页面内容参数时,将所述视频标识、直播间类型判定信息和视频详情对象信息传递给已构建的请求监听协议中的渲染开始方法,调用所述渲染开始方法触发系统执行对目标视频开始渲染的操作。
12.可选地,所述调用所述页面持有对象中的监听器触发方法,对所述页面内容参数进行监听,包括:
13.通过所述页面持有对象中的监听器触发方法中的监听器对象,调用所述请求监听协议中的请求监听协议方法,对所述页面内容参数进行监听,其中,所述监听器对象为请求监听协议类型。
14.可选地,在所述获取到当前页面的页面持有对象之后,所述调用所述面持有对象中的监听器触发方法之前,还包括:
15.将请求监听器作为监听器包裹对象传入所述监听器触发方法中,对所述监听器包裹对象进行实例化,并在所述监听器包裹对象中复写所述监听器触发方法。
16.可选地,在所述获取到当前页面的页面持有对象之后,所述调用所述面持有对象中的监听器触发方法之前,还包括:
17.复写所述监听器包裹对象中的数据过滤方法,以对视频数据信息进行过滤,得到所述页面内容参数。
18.可选地,在所述获取到当前页面的页面持有对象之后,所述调用所述页面持有对象中的监听器触发方法,对所述页面内容参数进行监听之前,还包括:
19.对所述页面持有对象进行判空处理,如果所述页面持有对象不为空,则执行调用所述页面持有对象中的监听器触发方法,对所述页面内容参数进行监听的操作。
20.可选地,本发明实施例中的视频渲染的触发方法还可包括:
21.以所述视频标识、直播间类型判定信息和网址启动信息作为入参参数,在所述视频渲染代理类中调用视频切换方法,获取目标视频的切换状态,其中,所述视频切换方法为复写的回调方法;
22.当检测到所述目标视频的切换状态为已发生切换时,调用请求判定方法,对请求判定对象进行重置。
23.可选地,本发明实施例中的视频渲染的触发方法还可包括:
24.调用所述视频渲染代理类中的请求判定方法来判定当前时刻是否接收到视频详情获取请求;
25.若是,将判定对象的值修改为用于表示接收到所述视频详情获取请求的值,并调用复写的视频详情连接方法,获取所述目标视频的视频详情信息。
26.可选地,本发明实施例中的视频渲染的触发方法还可包括:
27.在所述视频渲染代理类中调用错误监听方法,确定视频详情是否获取失败,其中,所述错误监听方法为复写的回调方法。
28.第二方面,本发明实施例还提供了一种视频渲染的触发装置,该装置可以包括:
29.视频参数获取模块,用于在监测到用于触发对目标视频进行视频渲染的触发事件时,获取与所述触发事件对应的页面内容参数,其中,所述页面内容参数包括视频标识、直播间类型判定信息和视频详情对象信息;
30.视频渲染触发模块,用于以所述页面内容参数为入参参数,在预定义的视频渲染代理类中调用持有者管理类复写的监听器触发方法,触发视频渲染功能,以获取目标页面数据;其中,
31.所述视频渲染代理类继承自基础管理类,所述视频渲染触发模块包括:
32.页面持有对象获取单元,用于以所述页面内容参数为入参参数,调用持有者管理类中的持有者获取方法,以获取当前页面的页面持有对象;
33.页面内容参数监听单元,用于以所述视频标识、直播间类型判定信息和视频详情对象信息为入参参数,调用所述页面持有对象中的监听方法,对所述页面内容参数进行监听;
34.视频开始渲染触发模块,用于当监听到所述页面内容参数时,将所述视频标识、直播间类型判定信息和视频详情对象信息传递给已构建的请求监听协议中的渲染开始方法,调用所述渲染开始方法触发系统执行对目标视频开始渲染的操作。
35.第三方面,本发明实施例还提供了一种电子设备,该电子设备可以包括:
36.一个或多个处理器;
37.存储器,用于存储一个或多个程序;
38.当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现本发明任意实施例所提供的视频渲染的触发方法。
39.第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本发明任意实施例提供的视频渲染的触发方法。
40.本发明实施例的技术方案,在监测到用于触发对目标视频进行视频渲染的触发事件时,获取与所述触发事件对应的页面内容参数,以准确地确定待渲染的目标视频,进而,以所述页面内容参数为入参参数,通过在预定义的视频渲染代理类中调用持有者管理类复写的监听器触发方法,能够有效将持有者管理类中的代码复用于视频渲染代理类中,有效的降低优化的复杂度及人力成本,且只需要在视频渲染代理类中调用持有者管理类复写的监听器触发方法监听器触发方法,即可触发视频渲染功能,以获取目标页面数据,实现了与整体业务流程的有效解耦,极大的降低了程序漏洞产生的可能性,当我需要调整视频渲染的触发逻辑时,只需要在视频渲染代理类中动态的改变视频渲染的触发时机机制,就能够有效的动态对触发功能进行调度,这种动态的调度对于业务方而言是无感知的,从而解决了现有技术中由于视频渲染的触发流程嵌套在整个业务流程中通过对象与对象强引用的方式去实现而导致的业务流程优化很难下手或者改造成本非常巨大的技术问题,使得整体的业务逻辑流程变得更加智能化。
附图说明
41.为了更加清楚地说明本发明示例性实施例的技术方案,下面对描述实施例中所需要用到的附图做一简单介绍。显然,所介绍的附图只是本发明所要描述的一部分实施例的附图,而不是全部的附图,对于本领域普通技术人员,在不付出创造性劳动的前提下,还可以根据这些附图得到其他的附图。
42.图1a是本发明实施例一中的一种视频渲染的触发方法的流程图;
43.图1b是本发明实施例一中的一种监听器触发方法的实现逻辑的流程图;
44.图2是本发明实施例二中的一种视频渲染的触发方法的流程图;
45.图3是本发明实施例三中的一种视频渲染的触发方法的流程图;
46.图4是本发明实施例四中的一种视频渲染的触发装置的结构框图;
47.图5是本发明实施例五中的一种电子设备的结构示意图。
具体实施方式
48.下面结合附图和实施例对本发明作进一步详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
49.实施例一
50.图1a是本发明实施例一中提供的一种视频渲染的触发方法的流程图。该方法可以由本发明实施例提供的视频渲染的触发装置来执行,该装置可以由软件和/或硬件的方式实现,该装置可以集成在电子设备上,该电子设备可以是各种用户终端或服务器。
51.参见图1a,本发明实施例的方法具体包括如下步骤:
52.s110、在监测到用于触发对目标视频进行视频渲染的触发事件时,获取与所述触发事件对应的页面内容参数,其中,所述页面内容参数包括视频标识、直播间类型判定信息和视频详情对象信息。
53.其中,触发事件可以是android系统在监测到用于触发对目标视频进行视频渲染的触发操作之后自动触发的事件。可以理解的是,触发操作的作用区域以及在作用区域的作用方式可以根据实际需求进行设置,在此不做具体限定。可选地,该触发操作的作用方式为通过输入设备所输入的触发操作,或者,通过声音以及手势等人机交互方式输入的操作。触发操作的作用方式的作用区域可以是预先设定的触发元件,或者,预先设定的触发操作识别区域等。例如是,触发操作可以是某列表视图被滚动触发时的操作、某按钮被点击触发时的操作、触发某页面被显示时的操作等等。
54.android系统在监测到用于触发对目标视频进行视频渲染的触发事件时,为了实现对目标视频的准确渲染,可以获取与所述触发事件对应的页面内容参数。其中,页面内容参数可以理解为页面上下文参数,用于页面相关数据的获取处理。具体地,页面内容参数可包括目标视频的视频标识、直播间类型判定信息和视频详情对象信息。其中,视频标识可以理解为用于区分目标视频的标识信息,即视频id。在本发明实施例中,该视频标识可以根据实际需求进行设置,其表示方式可以有多种,例如,可以是文字、数字和/或符号等。具体地,该视频标识可以是视频的名称、视频编号或者视频的存储路径等。在直播场景中,为了丰富直播场景提升用户体验,可以为直播间设置不同的类型,以满足用户的个性化需求,在视频渲染时可以根据不同的直播间类型设置不同的渲染权限和/或渲染方式等。示例性地,直播间类型可以包括普通直播间和颜值直播间。直播间类型判定信息可以理解为判定该直播间属于何种类型的判定信息。例如可以是,判定该直播间是否为颜值直播间的判定结果信息。视频详情对象信息可以理解为目标视频的视频详情信息,具体可以是目标视频的具体视频资源的详情信息。
55.s120、以所述页面内容参数为入参参数,在预定义的视频渲染代理类中调用持有者管理类复写的监听器触发方法,触发视频渲染功能,以获取目标页面数据;其中,所述视频渲染代理类继承自基础管理类。
56.具体地,可以通过class关键字声明一个视频渲染代理类,来实现视频渲的触发逻辑。该视频渲染代理类的名称可以根据实际需求进行设置。考虑到在软件开发的过程中,可能需要定义或者嵌套多个类,为了便于直观地了解各个类的功能且便于后期维护,可以根据类实现的功能设置类的名称。因此,在本发明实施例中可以将视频渲染代理类的名称设
置为mzvideorenderproxy。进一步地,页面内容参数作为该视频渲染代理类中的入参参数,具体可以为context 类型的对象mcontext。其中,mcontext是页面的上下文对象,用于页面相关数据的获取处理。示例性地,持有者管理类可以是mzholdermanager类。监听器触发方法可以是dispatchlistener方法。
57.可选地,视频渲染代理类集成继承自基础管理类mzbasemanager,这样设置的好处在于,能够减少代码的重复率,有效实现代码复用。具体地,可以将页面内容参数mcontext传递给基础管理类mzbasemanager的构造函数,以实现对象初始化,为触发视频渲染做准备。其中,构造函数的命名和类名完全相同。该构造函数主要用于在类的对象创建时定义初始化的状态。构造函数往往不能被直接调用,必须通过new运算符在创建对象时才会自动调用;一般的方法是在程序执行到的时候被调用。
58.图1b是本发明实施例一中的一种监听器触发方法的实现逻辑的流程图。图图1b所示,具体地,调用预定义的视频渲染代理类中的监听器触发方法,触发视频渲染功能,包括:
59.s1201、以所述页面内容参数为入参参数,调用持有者管理类中的持有者获取方法,以获取当前页面的页面持有对象。
60.具体地,可以页面内容参数mcontext为入参参数,通过调用持有者管理类 mzholdermanager中的持有者获取方法getactivityholder方法来获取当前页面的页面持有对象holder对象。其中,页面持有对象可以理解为用于获取组成该页面的各个组件的对象。示例性地,持有者管理类中的持有者获取方法具体可表示为mzholdermanager.getactivityholder(mcontext)。
61.可选地,在所述获取到当前页面的页面持有对象之后,还包括:对所述页面持有对象进行判空处理,如果所述页面持有对象不为空,则执行调用所述页面持有对象中的监听器触发方法,对所述页面内容参数进行监听的操作。具体地,在获取到当前页面的holder对象之后,可以对该holder对象进行判空处理,如果为空,则说明该页面中没有任何待渲染的组件,此时可直接return,如果不为空,则说明该页面中存在待渲染的组件,可调用hodler对象中的监听器触发方法dispatchlistener方法,对页面内容参数进行监听。
62.s1202、以所述视频标识、直播间类型判定信息和视频详情对象信息为入参参数,调用所述页面持有对象中的监听方法,对所述页面内容参数进行监听。
63.为了实现整体的无感知流程调整,可选是预先构建了一个触发协议-请求监听协议,该请求监听协议的功能主要是用于后续触发其他业务功能,其中,请求监听协议可以使用interface关键字进行声明,具体的,请求监听协议的定义方法如下所述:
[0064][0065]
该请求监听协议的名称是请求监听协议imzrequestlistener,该请求监听协议中有一个协议方法为渲染开始onrenderstart,该onrenderstart方法有3个入参参数分别是视频标识、直播间类型判定信息和视频详情对象信息。其中,视频标识可以是string类型的
对象mvid,mvid用于表示视频id,直播间类型判定信息可以是boolean类型的对象ismobile,ismobile用于与待渲染的目标视频对应的直播间的直播间类型是否是颜值直播间,视频详情对象信息可以是 voddetailbean类型的对象voddetailbean。
[0066]
具体地,通过所述页面持有对象中的监听器触发方法中的监听器对象,调用所述请求监听协议中的请求监听协议方法,对所述页面内容参数进行监听,其中,所述监听器对象为请求监听协议类型。
[0067]
可选地,在所述获取到当前页面的页面持有对象之后,还包括:将请求监听器作为监听器包裹对象传入所述监听器触发方法中,对所述监听器包裹对象进行实例化,并在所述监听器包裹对象中复写所述监听器触发方法。
[0068]
上述监听器触发方法dispatchlistener方法可用于分发一个监听器消息,在该dispatchlistener方法中我们需要传入一个监听器包裹对象,具体的该监听器包裹对象的实例化方法是object:imzlistenerwrapper《imzrequestlistener》{},其中,监听包裹对象imzlistenerwrapper是一个包裹对象,用于包裹上述请求监听协议imzrequestlistener对象。
[0069]
可选地,在所述获取到当前页面的页面持有对象之后,还包括:复写所述监听器包裹对象中的数据过滤方法,以对视频数据信息进行过滤,得到所述页面内容参数。其中,复写监听器包裹对象中的数据过滤方法具体可以是:
[0070]
override fun filter(data:any):boolean{
[0071]
return data is imzrequestlistener
[0072]
}
[0073]
通过复写该数据过滤方法能够有效的过滤出imzrequestlistener类型的数据信息,也就是实现了该请求监听协议的对象信息。
[0074]
进而,再复写复写监听器包裹对象中的dispatchlistener方法,具体可以是:
[0075]
override fun dispatchlistener(listener:imzrequestlistener){
[0076]
listener.onrequeststart(mvid,ismobile,voddetailbean)
[0077]
}
[0078]
s1203、当监听到所述页面内容参数时,将所述视频标识、直播间类型判定信息和视频详情对象信息传递给已构建的请求监听协议中的渲染开始方法,调用所述渲染开始方法触发系统执行对目标视频开始渲染的操作。
[0079]
当监听到所述页面内容参数时,说明满足对目标视频进行渲染的触发条件,此时,可调用复写的dispatchlistener方法的中listener对象的请求开始 onrequeststart协议方法,以请求开始渲染。其中,视频标识、直播间类型判定信息和视频详情对象信息作为onrequeststart协议方法的入参参数。
[0080]
本发明实施例的技术方案,在监测到用于触发对目标视频进行视频渲染的触发事件时,获取与所述触发事件对应的页面内容参数,以准确地确定待渲染的目标视频,进而,以所述页面内容参数为入参参数,通过在预定义的视频渲染代理类中调用持有者管理类复写的监听器触发方法,能够有效将持有者管理类中的代码复用于视频渲染代理类中,有效的降低优化的复杂度及人力成本,且只需要在视频渲染代理类中调用持有者管理类复写的监听器触发方法监听器触发方法,即可触发视频渲染功能,以获取目标页面数据,实现了与
整体业务流程的有效解耦,极大的降低了程序漏洞产生的可能性,当我需要调整视频渲染的触发逻辑时,只需要在视频渲染代理类中动态的改变视频渲染的触发时机机制,就能够有效的动态对触发功能进行调度,这种动态的调度对于业务方而言是无感知的,从而解决了现有技术中由于视频渲染的触发流程嵌套在整个业务流程中通过对象与对象强引用的方式去实现而导致的业务流程优化很难下手或者改造成本非常巨大的技术问题,使得整体的业务逻辑流程变得更加智能化。
[0081]
实施例二
[0082]
图2是本发明实施例二中提供的一种视频渲染的触发方法的流程图。本实施例以上述各技术方案为基础进行优化。在本实施例中,可选的,视频渲染的触发方法还包括:以所述视频标识、直播间类型判定信息和网址启动信息作为入参参数,在所述视频渲染代理类中调用视频切换方法,获取目标视频的切换状态,其中,所述视频切换方法为复写的回调方法;当检测到所述目标视频的切换状态为已发生切换时,调用请求判定方法,对请求判定对象进行重置。其中,与上述各实施例相同或相应的术语的解释在此不再赘述。
[0083]
参见图2,本实施例的方法具体可以包括如下步骤:
[0084]
s210、在监测到用于触发对目标视频进行视频渲染的触发事件时,获取与所述触发事件对应的页面内容参数,其中,所述页面内容参数包括视频标识、直播间类型判定信息和视频详情对象信息。
[0085]
s220、以所述页面内容参数为入参参数,在预定义的视频渲染代理类中调用持有者管理类复写的监听器触发方法,触发视频渲染功能,以获取目标页面数据;其中,所述视频渲染代理类继承自基础管理类。
[0086]
s230、以所述视频标识、直播间类型判定信息和网址启动信息作为入参参数,在所述视频渲染代理类中调用视频切换方法,获取目标视频的切换状态,其中,所述视频切换方法为复写的回调方法。
[0087]
其中,视频切换方法可以表示为onvideochanged,用于确定目标视频的切换状态,即确定目标视频是不是发生了切换,或者说,是不是待渲染的视频发生了切换,当目标视频发生切换时,视频的统一定位资源符也会发生改变,因此,可以将视频标识、直播间类型判定信息和视频的网址启动信息作为目标视频切换方法的入参参数。具体地,可以通过如下方式复写该视频切换方法: override fun onvideochanged(mvid:string,ismobile:boolean,cloverurl:string)
[0088]
在本发明实施例中,视频切换方法为回调方法,由于回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应,这样设置的好处在于,在视频渲染的触发机制中,我们仅需被动获取目标视频的切换状态即可,无需关注于如何判断视频是否发生切换,也无需在视频渲染的触发逻辑中详细嵌套设计视频切换逻辑,能够使得视频渲染的触发逻辑更加灵活,更加智能化,而且,降低代码之前的耦合度,降低出现程序漏洞的风险。而且通过对视频切换方法进行重写,可以根据自身需求对继承来的方法进行扩充,增强类的重用性、复用性以及扩展性。
[0089]
s240、当检测到所述目标视频的切换状态为已发生切换时,调用请求判定方法,对请求判定对象进行重置。
[0090]
示例性地,可预先定义一个全局变量请求判定对象private var isrequest对象,
用于表示是否请求过。可选地,isrequest对象的初始值可以赋值为false。即,使得isrequest=false。如果已经请求过,则可以改变isrequest的初始值。例如,可以将isrequest的初始值由false改为true。通过判定是都请求过,能够有效的避免重复请求的问题,极大的提高整体方案的性能。
[0091]
当检测到所述目标视频已发生切换时,说明请求渲染的目标视频已经发生了改变,此时可调用请求判定方法,对请求判定对象进行重置,以重新判定是否请求触发对切换后的视频进行渲染的操作。在避免重复请求的同时,保证对正常请求的准确判定。
[0092]
本实施例的技术方案,通过调用视频切换方法,能够有效地确定目标视频的切换状态,由于视频切换方法为重写的回调方法,因此,在视频渲染的触发机制中,我们仅需被动获取目标视频的切换状态即可,无需关注于如何判断视频是否发生切换,也无需在视频渲染的触发逻辑中详细嵌套设计视频切换逻辑,降低代码之前的耦合度,降低出现程序漏洞的风险;进而在目标视频发生切换时,调用请求判定方法,对请求判定对象进行重置,以保证视频渲染的触发请求能够及时提出,而且还能够避免重复请求,进一步优化了视频渲染的触发逻辑,使得视频渲染的触发逻辑更加智能化,提升用户体验。
[0093]
实施例三
[0094]
图3是本发明实施例三中提供的一种视频渲染的触发方法的流程图。本实施例以上述各技术方案为基础进行优化。本实施例中,可选的,视频渲染的触发方法还包括:调用所述视频渲染代理类中的请求判定方法来判定当前时刻是否接收到视频详情获取请求;若是,将判定对象的值修改为用于表示接收到所述视频详情获取请求的值,并调用复写的视频详情连接方法,获取所述目标视频的视频详情信息。
[0095]
在本发明任一可选实施例的基础上,视频渲染的触发方法还可以进一步包括:在所述视频渲染代理类中调用错误监听方法,确定视频详情是否获取失败,其中,所述错误监听方法为复写的回调方法。
[0096]
其中,与上述各实施例相同或相应的术语的解释在此不再赘述。
[0097]
参见图3,本实施例的方法具体可以包括如下步骤:
[0098]
s310、在监测到用于触发对目标视频进行视频渲染的触发事件时,获取与所述触发事件对应的页面内容参数,其中,所述页面内容参数包括视频标识、直播间类型判定信息和视频详情对象信息。
[0099]
s320、以所述页面内容参数为入参参数,在预定义的视频渲染代理类中调用持有者管理类复写的监听器触发方法,触发视频渲染功能,以获取目标页面数据;其中,所述视频渲染代理类继承自基础管理类。
[0100]
s330、调用所述视频渲染代理类中的请求判定方法来判定当前时刻是否接收到视频详情获取请求。
[0101]
如前所述,可预先定义一个全局变量请求判定对象private var isrequest对象,用于表示是否请求过。可选地,isrequest对象的初始值可以赋值为false。如果已经请求过,则可以改变isrequest的初始值。例如,可以将isrequest的初始值由false改为true。通过判定是都请求过,能够有效的避免重复请求的问题,极大的提高整体方案的性能。
[0102]
可选地,通过判定if(!isrequest)方法来判定当前是否是正处于请求中,如果处于请求中,即已经接收到过视频详情获取请求,则直接通过调用return 来返回,如果此前
未接收到过该目标视频的视频详情获取请求,则需要执行与该视频详情获取请求对应的业务逻辑。
[0103]
s340、若是,将判定对象的值修改为用于表示接收到所述视频详情获取请求的值,并调用复写的视频详情连接方法,获取所述目标视频的视频详情信息。
[0104]
沿用前例,具体可以是通过将isrequest的值信息由false改变为true,即,使得isrequest=false。一旦isrequest的值为true后,就能够有效的避免后续再次触发功能。
[0105]
示例性地,通过调用复写的视频详情连接方法onvideoinfoconnect方法来获取所述目标视频的视频详情信息,具体地,可通过override修饰符以及fun 关键字声明重写的onvideoinfoconnect方法,示例性地,可通过如下方式复写视频详情连接方法:
[0106]
override fun onvideoinfoconnect(voddetailbean:voddetailbean?)
[0107]
其中,视频详情连接方法的入参参数视频详情对象信息voddetailbean为 voddetailbean类型。
[0108]
s350、在所述视频渲染代理类中调用错误监听方法,确定视频详情是否获取失败,其中,所述错误监听方法为复写的回调方法。
[0109]
考虑到在获取视频详情时,可能会出现视频详情获取失败的情况,因此,在本技术的视频渲染触发逻辑中还重写了错误监听方法,以监听对视频详情是否获取失败的情况进行监听,这样就能够有效的保障业务触发与视频详情的无关性,有效的解耦了业务之间的耦合,具体的实现方法是
[0110]
通过复写错误监听方法来监听视频详情是否获取失败,即对在视频详情获取时出现错误的信息进行监听。该错误监听方法为回调方法,当出现错误的时候系统会回调该方法。这样设置的好处在于,在视频渲染的触发逻辑中,仅需被动获取视频详情是否获取失败的结果就进行后续触发逻辑,而无需再具体嵌套如何判定视频详情获取失败等逻辑,提升代码复用率,减少人力开发成本。
[0111]
具体地,错误监听方法可以命名为onerror方法,其具体地复写方式可以为:
[0112]
override fun onerror(what:int,extra:int)
[0113]
类似地,可以在该错误监听方法中仍旧通过判定if(!isrequest)方法来判定当前是否是正处于请求中,如果处于请求中,即已经接收到过视频详情获取请求,则直接通过调用return来返回,如果此前未接收到过该目标视频的视频详情获取请求,则执行与该视频详情获取请求对应的业务逻辑,以保证实现业务触发的同时,避免多次触发等问题。
[0114]
需要说明的是,在本发明实施例中,各个执行步骤的编号s110~s350仅仅用于对各个技术特征的区分,而并非对其执行顺序的限定。基于本发明实施例的技术特征进行组合得到的各技术方案均在本发明的保护范围内。
[0115]
本发明实施例的技术方案,不仅能够基于在视频详情获取请求获取视频详情信息,并避免重复请求,而且能够对视频详情是否获取失败进行监听,以保障视频详情的成功获取,而且无需再视频渲染逻辑中嵌套详细的判断逻辑,通过回调方法实现,使得代码更加简洁,提高了代码复用率,进一步优化了视频渲染的触发逻辑,使视频渲染的触发法法更加智能化。
[0116]
本发明实施例还提供了一种视频渲染的触发方法的可选的技术方案,具体的实现方法如下所述:
[0117]
首先定义一个类来完成上述的功能,具体的类的定义如下所述:
[0118]
class mzvideorenderproxy(val mcontext: context) : mzbasemanager(mcontext)
[0119]
该类的名称是视频渲染代理mzvideorenderproxy,在该类中有一个入参参数为context类型的对象mcontext,并且让该类继承自基础管理类 mzbasemanager,同时将mcontext参数传递给基础管理类mzbasemanager的构造函数中,其中mcontext是页面的上下文对象,用于页面相关数据的获取处理。因为要实现整体的无感知流程调整,因此我们在设计的时候构建了一个触发协议,该协议的功能是用于后续触发其他业务功能而使用的,具体的协议定义如下所述:
[0120][0121]
该协议的名称是请求监听协议imzrequestlistener,该协议中有一个协议方法为渲染开始方法onrenderstart,该方法有3个入参参数分别是string类型的对象mvid(视频id),boolean类型的对象ismobile(是否是颜值直播间), voddetailbean类型的对象voddetailbean,该对象是视频详情对象信息。
[0122]
有了这一个触发协议后,就可以开展后续的业务逻辑了。
[0123]
接下来我们需要定义一个全局变量请求private var isrequest=false对象,该对象用于表示是否请求过,能够有效的避免重复请求的问题,极大的提高整体方案的性能。
[0124]
接下来通过复写
[0125]
override fun onvideochanged(mvid:string,ismobile:boolean,cloverurl: string)
[0126]
即复写视频切换方法来对请求判定对象isrequest对象进行重置操作,视频切换方法onvideochanged方法会在视频切换的时候被回调,此时通过调用 isrequest=false方法来将该请求判定对象进行重置。
[0127]
接下来通过复写
[0128]
override fun onvideoinfoconnect(voddetailbean:voddetailbean?)
[0129]
即复写视频详情连接方法,以在获取视频详情的时候被调用该方法,来获取所述目标视频的视频详情信息。在获取视频详情之前,还可以首先通过判定 if(!isrequest)方法来判定当前是否是正处于请求中,如果处于请求中,就直接通过调用return来返回,否则进行业务逻辑触发功能,触发的具体实现后续再进行描述,触发完成后,通过调用isrequest=true来改变isrequest的值信息,一旦isrequest的值为true后,就能够有效的避免后续再次触发功能。
[0130]
除了视频详情获取成功的时候需要进行逻辑触发,当视频详情获取失败的时候,也是需要进行触发的,这样就能够有效的保障业务触发与视频详情的无关性,有效的解耦了业务之间的耦合,具体的实现方法是
[0131]
通过复写
[0132]
override fun onerror(what:int,extra:int)
[0133]
即复写错误监听方法来监听错误信息,当出现错误的时候系统会回调该方法,此时我们在该方法中依旧是通过判定if(!isrequest)状态及重置isrequest= true的逻辑实现业务触发及避免多次触发等问题。
[0134]
接下来我们需要详细描述一下具体的业务触发实现方法,业务触发功能首先通过调用mzholdermanager.getactivityholder(mcontext)方法来获取到当前页面的页面持有对象holder对象,然后对该holder对象进行判空处理,如果为空就直接return否则就进行后续的业务逻辑。
[0135]
接下来调用hodler对象中的监听器触发dispatchlistener方法,该方法是用于分发一个监听器消息,在该方法中我们需要传入一个监听器包裹对象,具体的该对象的实例化方法是:
[0136]
object:imzlistenerwrapper《imzrequestlistener》{}
[0137]
其中,监听包裹对象imzlistenerwrapper对象是一个包裹对象,用于包裹上述自定义的请求监听协议imzrequestlistener对象,并复写该包裹对象中的2 个方法,分别是
[0138]
重写override fun filter(data:any):boolean{
[0139]
return data is imzrequestlistener
[0140]
}
[0141]
即复写请求过滤方法,以有效的过滤出请求监听协议imzrequestlistener 类型的数据信息,也就是实现了该协议的对象信息,然后在通过复写
[0142]
override fun dispatchlistener(listener:imzrequestlistener){
[0143]
listener.onrequeststart(mvid,ismobile,voddetailbean)
[0144]
}
[0145]
即复写监听器触发方法dispatchlistener方法,然后,调用其中listener对象的请求开始onrequeststart协议方法,来将消息信号进行触发处理,这样所有实现了该协议的对象并复写了onrequeststart的功能就会被触发,从而视频渲染的业务逻辑就被完整的触发了。
[0146]
后续当需要调整视频渲染的整体触发业务逻辑时,只需要在视频渲染代理mzvideorenderproxy类中动态的改变上述触发的时机机制就能够有效的动态对触发功能进行调度,这种动态的调度对于业务方而言是无感知的,这样就可以实现在无感知的情况下进行高效的性能优化,极大的提高了开发效率和降低了代码的维护和优化成本。
[0147]
实施例四
[0148]
图4为本发明实施例四提供的视频渲染的触发装置的结构框图,该装置用于执行上述任意实施例所提供的视频渲染的触发方法。该装置与上述各实施例的视频渲染的触发方法属于同一个发明构思,在视频渲染的触发装置的实施例中未详尽描述的细节内容,可以参考上述视频渲染的触发方法的实施例。参见图4,该装置具体可包括:视频参数获取模块410和视频渲染触发模块420,
[0149]
其中,视频参数获取模块410,用于在监测到用于触发对目标视频进行视频渲染的触发事件时,获取与所述触发事件对应的页面内容参数,其中,所述页面内容参数包括视频
标识、直播间类型判定信息和视频详情对象信息;视频渲染触发模块420,用于以所述页面内容参数为入参参数,在预定义的视频渲染代理类中调用持有者管理类复写的监听器触发方法,触发视频渲染功能,以获取目标页面数据;其中,所述视频渲染代理类继承自基础管理类。
[0150]
具体地,视频渲染触发模块420包括页面持有对象获取单元4201、页面内容参数监听单元4202和视频开始渲染触发单元4303。
[0151]
其中,页面持有对象获取单元4201,用于以所述页面内容参数为入参参数,调用持有者管理类中的持有者获取方法,以获取当前页面的页面持有对象;页面内容参数监听单元4202,用于以所述视频标识、直播间类型判定信息和视频详情对象信息为入参参数,调用所述页面持有对象中的监听方法,对所述页面内容参数进行监听;视频开始渲染触发单元4203,用于当监听到所述页面内容参数时,将所述视频标识、直播间类型判定信息和视频详情对象信息传递给已构建的请求监听协议中的渲染开始方法,调用所述渲染开始方法触发系统执行对目标视频开始渲染的操作。
[0152]
在本发明可选实施例的基础上,所述页面内容参数监听单元可用于:
[0153]
通过所述页面持有对象中的监听器触发方法中的监听器对象,调用所述请求监听协议中的请求监听协议方法,对所述页面内容参数进行监听,其中,所述监听器对象为请求监听协议类型。
[0154]
在本发明可选实施例的基础上,所述视频渲染的触发装置还可以包括:
[0155]
监听器触发方法复写模块,用于在所述获取到当前页面的页面持有对象之后,所述调用所述面持有对象中的监听器触发方法之前,将请求监听器作为监听器包裹对象传入所述监听器触发方法中,对所述监听器包裹对象进行实例化,并在所述监听器包裹对象中复写所述监听器触发方法。
[0156]
在本发明可选实施例的基础上,所述视频渲染的触发装置还可以包括:
[0157]
数据过滤模块,用于在所述获取到当前页面的页面持有对象之后,所述调用所述面持有对象中的监听器触发方法之前,复写所述监听器包裹对象中的数据过滤方法,以对视频数据信息进行过滤,得到所述页面内容参数。
[0158]
在本发明可选实施例的基础上,所述视频渲染的触发装置还可以包括:
[0159]
页面持有对象判断模块,用于在所述获取到当前页面的页面持有对象之后,所述调用所述页面持有对象中的监听器触发方法,对所述页面内容参数进行监听之前,对所述页面持有对象进行判空处理,如果所述页面持有对象不为空,则执行调用所述页面持有对象中的监听器触发方法,对所述页面内容参数进行监听的操作。
[0160]
在本发明可选实施例的基础上,所述视频渲染的触发装置还可以包括:
[0161]
请求判定对象重置模块,用于以所述视频标识、直播间类型判定信息和网址启动信息作为入参参数,在所述视频渲染代理类中调用视频切换方法,获取目标视频的切换状态,其中,所述视频切换方法为复写的回调方法;
[0162]
当检测到所述目标视频的切换状态为已发生切换时,调用请求判定方法,对请求判定对象进行重置。
[0163]
在本发明可选实施例的基础上,所述视频渲染的触发装置还可以包括:
[0164]
请求判定模块,用于调用所述视频渲染代理类中的请求判定方法来判定当前时刻
是否接收到视频详情获取请求;
[0165]
视频详情信息获取模块,用于若是,将判定对象的值修改为用于表示接收到所述视频详情获取请求的值,并调用复写的视频详情连接方法,获取所述目标视频的视频详情信息。
[0166]
在本发明可选实施例的基础上,所述视频渲染的触发装置还可以包括:
[0167]
错误监听模块,用于在所述视频渲染代理类中调用错误监听方法,确定视频详情是否获取失败,其中,所述错误监听方法为复写的回调方法。
[0168]
本发明实施例所提供的视频渲染的触发装置可执行本发明任意实施例所提供的视频渲染的触发方法,具备执行方法相应的功能模块和有益效果。
[0169]
值得注意的是,上述视频渲染的触发装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
[0170]
实施例五
[0171]
图5为本发明实施例五提供的一种电子设备的结构示意图,如图5所示,该电子设备包括存储器510、处理器520、输入装置530和输出装置540。电子设备中的处理器520的数量可以是一个或多个,图5中以一个处理器520为例;电子设备中的存储器510、处理器520、输入装置530和输出装置540可以通过总线或其它方式连接,图5中以通过总线550连接为例。
[0172]
存储器510作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的视频渲染的触发方法对应的程序指令/模块(例如,视频渲染的触发装置中的参数获取模块410和视频渲染的触发模块420)。处理器520通过运行存储在存储器510中的软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现上述的视频渲染的触发方法。
[0173]
存储器510可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器510可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器510可进一步包括相对于处理器 520远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0174]
输入装置530可用于接收输入的数字或字符信息,以及产生与装置的用户设置以及功能控制有关的键信号输入。输出装置540可包括显示屏等显示设备。
[0175]
实施例六
[0176]
本发明实施例六提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种视频渲染的触发方法,该方法包括:
[0177]
在监测到用于触发对目标视频进行视频渲染的触发事件时,获取与所述触发事件对应的页面内容参数,其中,所述页面内容参数包括视频标识、直播间类型判定信息和视频详情对象信息;
[0178]
以所述页面内容参数为入参参数,在预定义的视频渲染代理类中调用持有者管理类复写的监听器触发方法,触发视频渲染功能,以获取目标页面数据;其中,
[0179]
所述视频渲染代理类继承自基础管理类,所述调用预定义的视频渲染代理类中的监听器触发方法,触发视频渲染功能,包括:
[0180]
以所述页面内容参数为入参参数,调用持有者管理类中的持有者获取方法,以获取当前页面的页面持有对象;
[0181]
以所述视频标识、直播间类型判定信息和视频详情对象信息为入参参数,调用所述页面持有对象中的监听方法,对所述页面内容参数进行监听;
[0182]
当监听到所述页面内容参数时,将所述视频标识、直播间类型判定信息和视频详情对象信息传递给已构建的请求监听协议中的渲染开始方法,调用所述渲染开始方法触发系统执行对目标视频开始渲染的操作。当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的视频渲染的触发方法中的相关操作。
[0183]
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器 (cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0184]
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0185]
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、rf等等,或者上述的任意合适的组合。
[0186]
可以以一种或多种程序设计语言或其组合来编写用于执行本发明实施例操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如 java、smalltalk、c ,还包括常规的过程式程序设计语言——诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0187]
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还
可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献