一种视频数据共享方法及系统

专利类型 发明公开 法律事件 公开; 实质审查;
专利有效性 实质审查 当前状态 实质审查
申请号 CN202310290847.7 申请日 2023-03-17
公开(公告)号 CN116401221A 公开(公告)日 2023-07-07
申请人 深圳市锐明技术股份有限公司; 申请人类型 企业
发明人 冯嘉伟; 许裕锋; 第一发明人 冯嘉伟
权利人 深圳市锐明技术股份有限公司 权利人类型 企业
当前权利人 深圳市锐明技术股份有限公司 当前权利人类型 企业
省份 当前专利权人所在省份:广东省 城市 当前专利权人所在城市:广东省深圳市
具体地址 当前专利权人所在详细地址:广东省深圳市南山区学苑大道1001号南山智园B1栋21-23楼 邮编 当前专利权人邮编:518000
主IPC国际分类 G06F16/176 所有IPC国际分类 G06F16/176H04N21/414H04N21/433G06F16/172G06F16/78G06F12/0842G06F12/0875G06F9/54
专利引用数量 0 专利被引用数量 0
专利权利要求数量 10 专利文献类型 A
专利代理机构 深圳中一联合知识产权代理有限公司 专利代理人 姚泽鑫;
摘要 本 申请 适用于车载技术领域,提供了一种视频数据共享方法及系统,该视频数据共享方法包括:主 进程 响应于连接 请求 ,获取目标视频通道,并至少获取目标视频通道对应的视频 访问 句柄,将目标视频通道对应的视频访问句柄发送至从进程;从进程从目标视频通道对应的共享内存中获取目标视频通道下的 视频 帧 对应的视频帧描述信息;从进程根据目标视频通道对应的视频访问句柄和视频帧对应的视频帧描述信息,至少得到目标视频通道下的视频帧对应的虚拟访问地址,通过目标视频通道下的视频帧对应的虚拟访问地址,访问目标视频通道对应的缓存 块 中的视频帧。上述方法,解决了多进程难以一同访问视频数据的技术问题,降低了车载产品功能模块之间的耦合性。
权利要求

1.一种视频数据共享方法,其特征在于,包括:
进程获取目标视频通道,根据所述目标视频通道,生成并发送连接请求至主进程;
所述主进程响应于所述连接请求,获取所述目标视频通道,并至少获取所述目标视频通道对应的视频访问句柄,将所述目标视频通道对应的视频访问句柄发送至所述从进程;
所述从进程接收所述目标视频通道对应的视频访问句柄,并从所述目标视频通道对应的共享内存中,获取所述目标视频通道下的视频对应的视频帧描述信息;
所述从进程根据所述目标视频通道对应的视频访问句柄和所述目标视频通道下的视频帧对应的视频帧描述信息,至少得到所述目标视频通道下的视频帧对应的虚拟访问地址,通过所述目标视频通道下的视频帧对应的虚拟访问地址,访问所述目标视频通道对应的缓存中的视频帧。
2.如权利要求1所述的视频数据共享方法,其特征在于,所述主进程响应于所述连接请求之前,包括:
所述主进程接收各个视频通道下的视频数据,将各个所述视频通道下的视频数据分别写入至各个所述视频通道对应的缓存块中;其中,所述视频通道下的视频数据由所述视频通道下的视频帧组成;其中,所述视频通道至少包括所述目标视频通道。
3.如权利要求2所述的视频数据共享方法,其特征在于,所述主进程响应于所述连接请求之后,包括:
所述主进程响应于连接成功指令,开辟各个所述视频通道对应的共享内存,将各个所述视频通道下的视频帧对应的视频帧描述信息分别写入至对应的共享内存中。
4.如权利要求1所述的视频数据共享方法,其特征在于,所述主进程响应于所述连接请求之前,包括:
所述主进程接收各个视频通道下的视频数据;其中,所述视频通道下的视频数据由所述视频通道下的视频帧组成;
所述主进程对各个所述视频通道下的视频帧添加时间戳,根据各个所述视频通道下的视频帧以及各个所述视频通道下的视频帧对应的时间戳,构造视频帧包裹;其中,一个所述视频帧包裹中包括每个所述视频通道下的一个视频帧;
每构造一个所述视频帧包裹,所述主进程根据所述视频帧包裹和预设的环视画面拼接顺序,得到拼接后的视频帧,并将所述拼接后的视频帧写入所述目标视频通道对应的缓存块上;所述目标视频通道对应的缓存块为从缓存池中取出的缓存块。
5.如权利要求4所述的视频数据共享方法,其特征在于,所述主进程响应于所述连接请求之后,包括:
所述主进程响应于连接成功指令,开辟所述目标视频通道对应的共享内存,将所述拼接后的视频帧对应的视频帧描述信息写入至所述目标视频通道对应的共享内存中。
6.如权利要求4所述的视频数据共享方法,其特征在于,所述根据各个所述视频通道下的视频帧以及各个所述视频通道下的视频帧对应的时间戳,构造视频帧包裹,包括:
所述主进程根据各个所述视频通道下的视频帧对应的时间戳,确定参照视频帧和所述参照视频帧对应的时间戳;
所述主进程获取各个所述视频通道下的视频帧对应的时间戳与所述参照视频帧对应的时间戳之间的时间间隔;
若所述时间间隔不小于预设的时间间隔阈值,所述主进程丢弃对应的视频帧,等待所述对应的视频帧所在视频通道的下一个视频帧,重复上述步骤直至所有时间间隔均小于预设的时间间隔阈值,得到所述视频帧包裹。
7.如权利要求1至6任意一项所述的视频数据共享方法,其特征在于,还包括:
若所述从进程访问所述目标视频通道对应的缓存块中的视频帧,则所述从进程触发增加所述视频帧对应的视频帧描述信息的引用计数值;
若所述从进程停止访问所述目标视频通道对应的缓存块中的视频帧,则所述从进程触发减少所述视频帧对应的视频帧描述信息的引用计数值。
8.如权利要求7所述的一种视频数据共享方法,其特征在于,所述视频帧对应的视频帧描述信息以队列形式存储在所述目标视频通道对应的共享内存中,还包括:
若所述目标视频通道对应的共享内存中所存储的视频帧描述信息超过预设的数量时,所述主进程根据预设的释放优先级规则,释放所述目标视频通道对应的共享内存中视频帧描述信息;其中,预设的释放优先级规则从高至低为队列头部引用计数值为零的视频帧描述信息、队列尾部引用计数值为零的视频帧描述信息和等待进入队列的视频帧描述信息。
9.如权利要求1至6任意一项所述的一种视频数据共享方法,其特征在于,还包括:
所述主进程响应于所述从进程发送的释放请求,获取目标视频帧和所述目标视频帧对应的视频帧描述信息的引用计数值;
若所述目标视频帧对应的视频帧描述信息的引用计数值为零,则所述主进程释放所述目标视频帧对应的缓存。
10.一种视频数据共享系统,其特征在于,包括:视频采集设备和车载设备;
所述视频采集设备用于采集各个视频通道下的视频数据,将各个所述视频通道下的视频数据发送至所述车载设备中;
所述车载设备上装载有整机软件,所述整机软件的功能由主进程和从进程实现,所述车载设备通过所述主进程和所述从进程实现如权利要求1至9所述的视频数据共享方法。

说明书全文

一种视频数据共享方法及系统

技术领域

[0001] 本申请属于车载技术领域,尤其涉及一种视频数据共享方法及系统。

背景技术

[0002] 随着硬件的复杂化,传统的车载设备在代码重用方面做得不够好,硬件驱动程序看起来很臃肿。因此,提出了V4L2框架,V4L2框架可提供一些基础软件组件,通过一些共享的功能函数,简化驱动程序的编写,使代码的重用性增强。在V4L2框架的基础上,车载设备上的应用能够更加透明地使用硬件来驱动音视频的处理,目前,V4L2框架已被越来越多车载设备采用。
[0003] 在V4L2框架下,视频采集软件中只能运行一个实例,其他进程想要一同访问视频数据是会受到限制的,然而近年来,车载设备是向着多元化、智能化的方向发展的,车载设备企业之间往往会通过技术合作,集成各家所长到产品中,以增加产品的竞争,提高用户的体验。在技术合作中,不同企业的技术团队会提供各自的功能模,如此一来,往往也就会存在多个进程运行在车载设备中的情况,从而致使访问视频数据变得困难。发明内容
[0004] 本申请实施例提供了一种视频数据共享方法及系统,可以解决上述技术问题。
[0005] 第一方面,本申请实施例提供了一种视频数据共享方法,包括:从进程获取目标视频通道,根据目标视频通道,生成并发送连接请求至主进程;主进程响应于连接请求,获取目标视频通道,并至少获取目标视频通道对应的视频访问句柄,将目标视频通道对应的视频访问句柄发送至从进程;从进程接收目标视频通道对应的视频访问句柄,并从目标视频通道对应的共享内存中,获取目标视频通道下的视频对应的视频帧描述信息;从进程根据目标视频通道对应的视频访问句柄和目标视频通道下的视频帧对应的视频帧描述信息,至少得到目标视频通道下的视频帧对应的虚拟访问地址,通过目标视频通道下的视频帧对应的虚拟访问地址,访问目标视频通道对应的缓存块中的视频帧。
[0006] 进一步地,主进程响应于连接请求之前,包括:主进程接收各个视频通道下的视频数据,将各个视频通道下的视频数据分别写入至各个视频通道对应的缓存块中;其中,视频通道下的视频数据由视频通道下的视频帧组成;其中,视频通道至少包括目标视频通道。
[0007] 进一步地,主进程响应于连接请求之后,包括:主进程响应于连接成功指令,开辟各个视频通道对应的共享内存,将各个视频通道下的视频帧对应的视频帧描述信息分别写入至对应的共享内存中。
[0008] 进一步地,主进程响应于连接请求之前,包括:主进程接收各个视频通道下的视频数据;其中,视频通道下的视频数据由视频通道下的视频帧组成;主进程对各个视频通道下的视频帧添加时间戳,根据各个视频通道下的视频帧以及各个视频通道下的视频帧对应的时间戳,构造视频帧包裹;其中,一个视频帧包裹中包括每个视频通道下的一个视频帧;每构造一个视频帧包裹,主进程根据视频帧包裹和预设的环视画面拼接顺序,得到拼接后的视频帧,并将拼接后的视频帧写入目标视频通道对应的缓存块上;目标视频通道对应的缓存块为从缓存池中取出的缓存块。
[0009] 进一步地,主进程响应于连接请求之后,包括:主进程响应于连接成功指令,开辟目标视频通道对应的共享内存,将拼接后的视频帧对应的视频帧描述信息写入至目标视频通道对应的共享内存中。
[0010] 进一步地,根据各个视频通道下的视频帧以及各个视频通道下的视频帧对应的时间戳,构造视频帧包裹,包括:主进程根据各个视频通道下的视频帧对应的时间戳,确定参照视频帧和参照视频帧对应的时间戳;主进程获取各个视频通道下的视频帧对应的时间戳与参照视频帧对应的时间戳之间的时间间隔;若时间间隔不小于预设的时间间隔阈值,主进程丢弃对应的视频帧,等待对应的视频帧所在视频通道的下一个视频帧,重复上述步骤直至所有时间间隔均小于预设的时间间隔阈值,得到视频帧包裹。
[0011] 进一步地,该方法,还包括:若从进程访问目标视频通道对应的缓存块中的视频帧,则从进程触发增加视频帧对应的视频帧描述信息的引用计数值;若从进程停止访问目标视频通道对应的缓存块中的视频帧,则从进程触发减少视频帧对应的视频帧描述信息的引用计数值。
[0012] 进一步地,视频帧对应的视频帧描述信息以队列形式存储在目标视频通道对应的共享内存中,该方法,还包括:若目标视频通道对应的共享内存中所存储的视频帧描述信息超过预设的数量时,主进程根据预设的释放优先级规则,释放目标视频通道对应的共享内存中视频帧描述信息;其中,预设的释放优先级规则从高至低为队列头部引用计数值为零的视频帧描述信息、队列尾部引用计数值为零的视频帧描述信息和等待进入队列的视频帧描述信息。
[0013] 进一步地,该方法,还包括:主进程响应于从进程发送的释放请求,获取目标视频帧和目标视频帧对应的视频帧描述信息的引用计数值;若目标视频帧对应的视频帧描述信息的引用计数值为零,则主进程释放目标视频帧对应的缓存。
[0014] 第二方面,本申请实施例提供了一种视频数据共享装置,包括:
[0015] 获取模块,用于获取目标视频通道,根据目标视频通道,生成并发送连接请求至主进程;
[0016] 响应模块,用于响应于连接请求,获取目标视频通道,并至少获取目标视频通道对应的视频访问句柄,将目标视频通道对应的视频访问句柄发送至从进程;
[0017] 共享模块,用于接收目标视频通道对应的视频访问句柄,并从目标视频通道对应的共享内存中,获取目标视频通道下的视频帧对应的视频帧描述信息;
[0018] 访问模块,用于从进程根据目标视频通道对应的视频访问句柄和目标视频通道下的视频帧对应的视频帧描述信息,至少得到目标视频通道下的视频帧对应的虚拟访问地址,通过目标视频通道下的视频帧对应的虚拟访问地址,访问目标视频通道对应的缓存块中的视频帧。
[0019] 进一步地,该装置,还包括:第一写入模块,用于接收各个视频通道下的视频数据,将各个视频通道下的视频数据分别写入至各个视频通道对应的缓存块中;其中,视频通道下的视频数据由视频通道下的视频帧组成;其中,视频通道至少包括目标视频通道。
[0020] 进一步地,该装置,还包括:第一连接模块,用于响应于连接成功指令,开辟各个视频通道对应的共享内存,将各个视频通道下的视频帧对应的视频帧描述信息分别写入至对应的共享内存中。
[0021] 进一步地,该装置,还包括:接收模块,用于接收各个视频通道下的视频数据;其中,视频通道下的视频数据由视频通道下的视频帧组成;
[0022] 构造模块,用于对各个视频通道下的视频帧添加时间戳,根据各个视频通道下的视频帧以及各个视频通道下的视频帧对应的时间戳,构造视频帧包裹;其中,一个视频帧包裹中包括每个视频通道下的一个视频帧;
[0023] 第二写入模块,用于每构造一个视频帧包裹,根据视频帧包裹和预设的环视画面拼接顺序,得到拼接后的视频帧,并将拼接后的视频帧写入目标视频通道对应的缓存块上;目标视频通道对应的缓存块为从缓存池中取出的缓存块。
[0024] 进一步地,该装置,还包括:第二连接模块,用于响应于连接成功指令,开辟目标视频通道对应的共享内存,将拼接后的视频帧对应的视频帧描述信息写入至目标视频通道对应的共享内存中。
[0025] 进一步地,构造模块,具体用于:根据各个视频通道下的视频帧对应的时间戳,确定参照视频帧和参照视频帧对应的时间戳;获取各个视频通道下的视频帧对应的时间戳与参照视频帧对应的时间戳之间的时间间隔;若时间间隔不小于预设的时间间隔阈值,丢弃对应的视频帧,等待对应的视频帧所在视频通道的下一个视频帧,重复上述步骤直至所有时间间隔均小于预设的时间间隔阈值,得到视频帧包裹。
[0026] 进一步地,该装置,还包括:第一计数模块,用于若从进程访问目标视频通道对应的缓存块中的视频帧,触发增加视频帧对应的视频帧描述信息的引用计数值;第二计数模块,用于若从进程停止访问目标视频通道对应的缓存块中的视频帧,则触发减少视频帧对应的视频帧描述信息的引用计数值。
[0027] 进一步地,该装置,还包括:第一释放模块,用于若目标视频通道对应的共享内存中所存储的视频帧描述信息超过预设的数量时,根据预设的释放优先级规则,释放目标视频通道对应的共享内存中视频帧描述信息;其中,预设的释放优先级规则从高至低为队列头部引用计数值为零的视频帧描述信息、队列尾部引用计数值为零的视频帧描述信息和等待进入队列的视频帧描述信息。
[0028] 进一步地,该装置,还包括:释放响应模块,用于响应于从进程发送的释放请求,获取目标视频帧和目标视频帧对应的视频帧描述信息的引用计数值;
[0029] 第二释放模块,用于若目标视频帧对应的视频帧描述信息的引用计数值为零,则释放目标视频帧对应的缓存。
[0030] 第三方面,本申请实施例提供了一种视频数据共享系统,包括:视频采集设备和车载设备;
[0031] 视频采集设备用于采集各个视频通道下的视频数据,将各个视频通道下的视频数据发送至车载设备中;
[0032] 车载设备上装载有整机软件,整机软件的功能由主进程和从进程实现,车载设备通过主进程和从进程实现如第一方面的视频数据共享方法。
[0033] 第四方面,本申请实施例提供了一种车载设备,包括处理器、存储器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现如上述第一方面的视频数据共享方法。
[0034] 第五方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现如上述第一方面的视频数据共享方法。
[0035] 本申请实施例中,各个从进程均可以通过与主进程进行连接,基于主进程共享的视频访问句柄以及共享内存中存储的视频帧描述信息,访问缓存块中的视频帧,具体地,从进程会先根据目标视频通道,生成并发送连接请求至从进程,主进程响应于连接请求,获取到该目标视频通道,并至少获取该目标视频通道对应的视频访问句柄,将目标视频通道对应的视频访问句柄发送至从进程,可以理解的是,任意个从进程请求连接,主进程均会发送对应的视频访问句柄至从进程,从进程获取到目标视频通道对应的视频访问句柄后,其还需要从目标视频通道对应的共享内存中,获取目标视频通道下的视频帧对应的视频帧描述信息,再根据目标视频通道对应的视频访问句柄和目标视频通道下的视频帧对应的视频帧描述信息,至少得到目标视频通道下的视频帧对应的虚拟访问地址,进而便能够通过目标视频通道下的视频帧对应的虚拟访问地址,访问目标视频通道对应的缓存块中的视频帧。上述方法中各个从进程可以通过不同的虚拟访问地址访问同一个视频帧,从而实现了视频数据共享于多个从进程之间,解决了多进程难以一同访问视频数据的技术问题,相较于将所有功能集中在一个进程内实现而言,多个从进程也降低了功能模块之间的耦合性,某一个从进程执行出现问题时,也不会影响其他从进程实现其对应的功能,进而在满足视频共享需求的情况下,也增强了车载产品的稳定性,兼顾了产品技术的保密性
附图说明
[0036] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0037] 图1是本申请第一实施例提供的一种视频数据共享方法的示意流程图
[0038] 图2是本申请第一实施例提供的一种视频数据共享方法的另一示意流程图;
[0039] 图3是本申请第一实施例提供的一种视频数据共享方法的又一示意流程图;
[0040] 图4是本申请第二实施例提供的一种视频数据共享方法的示意流程图;
[0041] 图5是本申请第二实施例提供的一种视频数据共享方法中S203的示意流程图;
[0042] 图6是本申请第三实施例提供的视频数据共享装置的示意图;
[0043] 图7是本申请第三实施例提供的视频数据共享系统的示意图;
[0044] 图8是本申请第四实施例提供的车载设备的示意图。

具体实施方式

[0045] 以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
[0046] 应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
[0047] 还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
[0048] 如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
[0049] 另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0050] 在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
[0051] 请参见图1,图1是本申请第一实施例提供的一种视频数据共享方法的示意流程图。本实施例中主进程与从进程均为车载设备的整机软件内的进程,无论是主进程或者从进程的运行均由车载设备实现,因此,视频数据共享方法的实际执行主体为车载设备,或车载设备内的处理器、微处理器等。为了便于理解该视频数据共享方法中,如何进行视频数据共享以及如何对共享的视频数据进行访问,在本实施例中车载设备执行该视频数据共享方法时,将以主进程和从进程两个视对其执行过程进行描述,以更清楚地表达主进程与从进程之间的交互过程,更便于理解视频数据共享的原理。该视频数据共享方法,包括:
[0052] S101:从进程获取目标视频通道,根据目标视频通道,生成并发送连接请求至主进程。
[0053] 车载设备的整机软件中负责基础功能的进程在本申请实施例中称为主进程,基础功能包括但不限于音视频数据的采集以及编码录像等。
[0054] 车载设备的整机软件中负责其余功能的进程在本申请实施例中称为从进程,其余功能如智能识别、智能分析、环视画面呈现等,上述功能可以是由不同企业之间通过技术合作集成到整机软件中的。
[0055] 在本实施例中,对目标视频通道可以有如下两种理解:
[0056] 第一种,目标视频通道可以是指若干个视频通道中任意一个视频通道、任意多个视频通道或所有视频通道。一般情况下,布置多少个视频采集设备(即,摄像头),则会有多少个视频通道。
[0057] 第二种,目标视频通道与上述视频通道的概念不同,可以简单理解为,其是一个融合后的视频通道,原本各个视频通道下的视频帧是分开写入对应的缓存块中的,不同视频通道下的视频帧需要分开进行访问获取,此处的融合即是将若干个视频通道下的一个视频帧按照既定顺序写入同一个缓存块中,访问这样的缓存块,称为访问目标视频通道对应的缓存块。因此,此处从进程根据目标视频通道,生成并发送连接请求至主进程,其目的是向主进程指明其想要访问上述缓存块,获取按照既定顺序拼接后的视频帧。
[0058] 在本实施例中,将基于对目标视频通道的第一种理解展开后续步骤的说明,在第二实施例中,将基于对目标视频通道的第二种理解展开步骤的说明。
[0059] 一般会预先约定摄像头与视频通道之间的对应关系,例如:通道0即指前摄像头,通道1是指后摄像头。本实施例中,从进程先确定其欲获取哪一摄像头(或哪几个摄像头)采集的视频数据,再根据摄像头与视频通道之间的对应关系,得到该目标视频通道。
[0060] 从进程根据该目标视频通道,生成并发送连接请求至主进程。
[0061] S102:主进程响应于连接请求,获取目标视频通道,并至少获取目标视频通道对应的视频访问句柄,将目标视频通道对应的视频访问句柄发送至从进程。
[0062] 主进程响应于连接请求,解析该连接请求获取目标视频通道。
[0063] 主进程根据目标视频通道,至少获取对应的视频访问句柄,该视频访问句柄在V4L2框架下也可称之为video句柄,可以将其理解为文件描述符,通过视频访问句柄,就可以访问视频相关的功能,主进程也可以通过每个视频通道对应的视频访问句柄设置视频通道对应的缓存块的数量。
[0064] 具体地,主进程获取到该目标视频通道对应的视频访问句柄后,通过Linux共享的方式发送至从进程。
[0065] S102主进程响应于连接请求之前,包括:
[0066] 主进程接收各个视频通道下的视频数据,将各个视频通道下的视频数据分别写入至各个视频通道对应的缓存块中;其中,视频通道下的视频数据由视频通道下的视频帧组成。
[0067] 主进程会接收采集得到的各个视频通道下的视频数据,并将各个视频通道下的视频数据分别写入至各个视频通道对应的缓存块中。本实施例中,视频通道至少包括目标视频通道。
[0068] 每个视频通道对应的缓存块的数量是由整机软件所支持的功能决定的,所支持功能的不同,缓存块的数量也会有变化,V4L2框架下支持为每个视频通道设置对应的缓存块的数量,内核会维护一条队列,存放的就是缓存块。
[0069] S102主进程响应于连接请求之后,包括:
[0070] 主进程响应于连接成功指令,开辟各个视频通道对应的共享内存,将各个视频通道下的视频帧对应的视频帧描述信息分别写入至对应的共享内存中。
[0071] 连接成功后,主进程会开辟各个视频通道对应的共享内存,将各个视频通道下的视频帧对应的视频帧描述信息分别写入至对应的共享内存中,供从进程读取。
[0072] 在一个可选的实施方式中,视频帧对应的视频帧描述信息至少包括内存地址偏移信息,还可以包括如下:数据起始地址、帧宽、帧高、帧长度、DMA句柄、图像格式以及采集时间戳等。
[0073] 如下为视频帧描述信息的一个可选的数据结构:
[0074] struct DataElem{
[0075] uint8_t*data;/*YUV数据起始地址*/
[0076] int32_t width;/*帧宽*/
[0077] int32_t height;/*帧高*/
[0078] int32_t length;/*帧长度*/
[0079] int32_t fd;/*v4l2 DMA句柄*/
[0080] int32_t videoLoss;/*是否videoloss帧*/
[0081] int32_t offset;/*内存偏移*/
[0082] uint64_t pts;/**时间戳,单位:微妙**/
[0083] int32_t fmt;/*图像格式*/
[0084] }。
[0085] 视频访问句柄(即,video句柄)是可供访问软件操作的。
[0086] DMA句柄是可供硬件单元操作的,例如:进行视频数据拷贝。DMA句柄可以基于视频访问句柄得到。
[0087] 在一个可选的实施方式中,S102中除了将目标视频通道对应的视频访问句柄发送至从进程,还会获取共享内存句柄、视频通道的数量,每个视频通道对应的缓存块的数量,将上述数据一同发送至从进程。
[0088] S103:从进程接收目标视频通道对应的视频访问句柄,并从目标视频通道对应的共享内存中,获取目标视频通道下的视频帧对应的视频帧描述信息。
[0089] 具体地,从进程接收目标视频通道对应的视频访问句柄,并通过共享内存句柄从目标视频通道对应的共享内存中,读取目标视频通道下的视频帧对应的视频帧描述信息。
[0090] S104:从进程根据目标视频通道对应的视频访问句柄和目标视频通道下的视频帧对应的视频帧描述信息,至少得到目标视频通道下的视频帧对应的虚拟访问地址,通过目标视频通道下的视频帧对应的虚拟访问地址,访问目标视频通道对应的缓存块中的视频帧。
[0091] 由前述可知,视频帧对应的视频帧描述信息至少包括内存地址偏移信息。S104中,从进程根据目标视频通道对应的视频访问句柄、内存地址偏移信息以及预设的地址映射方法,可以得到目标视频通道下的视频帧对应的虚拟访问地址。
[0092] 可以确定的是,不同从进程预访问目标视频通道对应的缓存块中的视频帧,其所得到的虚拟访问地址是不同的。
[0093] 其中,预设的地址映射方法可以是指Linux的API中的mmap方法。
[0094] 本实施例中,从进程通过不同的虚拟访问地址,访问目标视频通道对应的缓存块中的视频帧,彼此互不影响各自的视频帧访问过程。
[0095] 为了进一步地管理从进程对于视频帧的访问,请参阅图2,图2是本申请第一实施例提供的一种视频数据共享方法的另一示意流程图,该方法还包括:
[0096] S105:若从进程访问目标视频通道对应的缓存块中的视频帧,则从进程触发增加视频帧对应的视频帧描述信息的引用计数值。
[0097] S106:若从进程停止访问目标视频通道对应的缓存块中的视频帧,则从进程触发减少视频帧对应的视频帧描述信息的引用计数值。
[0098] 本实施例中,进行了引用计数的维护,若从进程访问目标视频通道对应的缓存块中的视频帧,则从进程触发增加视频帧对应的视频帧描述信息的引用计数值,若从进程停止访问目标视频通道对应的缓存块中的视频帧,则从进程触发减少视频帧对应的视频帧描述信息的引用计数值。
[0099] 也就是说,通过引用计数值可以清楚便捷地了解当前访问视频帧的从进程的数量。
[0100] 在一个可选的实施方式中,视频帧对应的视频帧描述信息以队列形式存储在目标视频通道对应的共享内存中,该方法还包括:
[0101] S107:若目标视频通道对应的共享内存中所存储的视频帧描述信息超过预设的数量时,主进程根据预设的释放优先级规则,释放目标视频通道对应的共享内存中视频帧描述信息;其中,预设的释放优先级规则从高至低为队列头部引用计数值为零的视频帧描述信息、队列尾部引用计数值为零的视频帧描述信息和等待进入队列的视频帧描述信息。
[0102] 本实施例中,当目标视频通道对应的共享内存已满时,主进程根据预设的释放优先级规则,释放目标视频通道对应的共享内存中视频帧描述信息。
[0103] 具体地,预设的释放优先级规则从高至低为队列头部引用计数值为零的视频帧描述信息、队列尾部引用计数值为零的视频帧描述信息和等待进入队列的视频帧描述信息。本实施例中,会优先释放掉优先级更高的视频帧描述信息,相应地,视频帧对应的缓存可以供重新擦写。
[0104] 请参阅图3,图3是本申请第一实施例提供的一种视频数据共享方法的又一示意流程图,该方法还包括:
[0105] S108:主进程响应于从进程发送的释放请求,获取目标视频帧和目标视频帧对应的视频帧描述信息的引用计数值。
[0106] S109:若目标视频帧对应的视频帧描述信息的引用计数值为零,则主进程释放目标视频帧对应的缓存。
[0107] 视频帧可能存在互斥使用需求,例如:环视拼接过程中,可能需要在视频画面上添加标定框,以突出显示某些物体、人体等,这样便会修改到视频帧,那么,其他进程在访问该视频帧时,由于视频帧的修改则可能导致算法执行的异常,为此,从进程若希望互斥使用视频帧,可以向主进程发送释放请求,指明希望互斥使用的视频帧,即,指明目标视频帧,那么,主进程响应于从进程发送的释放请求,获取目标视频帧和目标视频帧对应的视频帧描述信息的引用计数值,若目标视频帧对应的视频帧描述信息的引用计数值为零,则主进程释放目标视频帧对应的缓存。
[0108] 显而易见地,若目标视频帧对应的视频帧描述信息的引用计数值不为零,则当前从进程是无法对该目标视频帧进行修改的。
[0109] 本申请实施例中,各个从进程均可以通过与主进程进行连接,基于主进程共享的视频访问句柄以及共享内存中存储的视频帧描述信息,访问缓存块中的视频帧,具体地,从进程会先根据目标视频通道,生成并发送连接请求至从进程,主进程响应于连接请求,获取到该目标视频通道,并至少获取该目标视频通道对应的视频访问句柄,将目标视频通道对应的视频访问句柄发送至从进程,可以理解的是,任意个从进程请求连接,主进程均会发送对应的视频访问句柄至从进程,从进程获取到目标视频通道对应的视频访问句柄后,其还需要从目标视频通道对应的共享内存中,获取目标视频通道下的视频帧对应的视频帧描述信息,再根据目标视频通道对应的视频访问句柄和目标视频通道下的视频帧对应的视频帧描述信息,至少得到目标视频通道下的视频帧对应的虚拟访问地址,进而便能够通过目标视频通道下的视频帧对应的虚拟访问地址,访问目标视频通道对应的缓存块中的视频帧。上述方法中各个从进程可以通过不同的虚拟访问地址访问同一个视频帧,从而实现了视频数据共享于多个从进程之间,解决了多进程难以一同访问视频数据的技术问题,相较于将所有功能集中在一个进程内实现而言,多个从进程也降低了功能模块之间的耦合性,某一个从进程执行出现问题时,也不会影响其他从进程实现其对应的功能,进而在满足视频共享需求的情况下,也增强了车载产品的稳定性,兼顾了产品技术的保密性。
[0110] 请参阅图4,图4是本申请第二实施例提供的一种视频数据共享方法的示意流程图,该方法包括:
[0111] S201:从进程获取目标视频通道,根据目标视频通道,生成并发送连接请求至主进程。
[0112] S202:主进程接收各个视频通道下的视频数据;其中,视频通道下的视频数据由视频通道下的视频帧组成。
[0113] S203:主进程对各个视频通道下的视频帧添加时间戳,根据各个视频通道下的视频帧以及各个视频通道下的视频帧对应的时间戳,构造视频帧包裹;其中,一个视频帧包裹中包括每个视频通道下的一个视频帧。
[0114] S204:每构造一个视频帧包裹,主进程根据视频帧包裹和预设的环视画面拼接顺序,得到拼接后的视频帧,并将拼接后的视频帧写入目标视频通道对应的缓存块上;目标视频通道对应的缓存块为从缓存池中取出的缓存块。
[0115] S205:主进程响应于连接请求,获取目标视频通道,并至少获取目标视频通道对应的视频访问句柄,将目标视频通道对应的视频访问句柄发送至从进程。
[0116] S206:从进程接收目标视频通道对应的视频访问句柄,并从目标视频通道对应的共享内存中,获取目标视频通道下的视频帧对应的视频帧描述信息。
[0117] S207:从进程根据目标视频通道对应的视频访问句柄和目标视频通道下的视频帧对应的视频帧描述信息,至少得到目标视频通道下的视频帧对应的虚拟访问地址,通过目标视频通道下的视频帧对应的虚拟访问地址,访问目标视频通道对应的缓存块中的视频帧。
[0118] 步骤S201、步骤S205~步骤S207可以参考第一实施例中S101~S104的说明。主要将针对S202~S204进行说明,存在区别的地方也会指出。
[0119] 关于步骤S201,本实施例中的目标视频通道可以简单理解为是一个融合后的视频通道,如前所述,原本各个视频通道下的视频帧是分开写入对应的缓存块中的,不同视频通道下的视频帧需要分开进行访问获取,本实施例中的融合即是将若干个视频通道下的一个视频帧按照既定顺序写入同一个缓存块中,访问这样的缓存块,称为访问目标视频通道对应的缓存块。本实施例中,从进程根据目标视频通道,生成并发送连接请求至主进程,其目的是向主进程指明其想要访问上述缓存块,获取按照既定顺序拼接后的视频帧。
[0120] 关于步骤S202~S203,主进程接收各个视频通道下的视频数据,主进程对各个视频通道下的视频帧添加时间戳。
[0121] 其中,该时间戳可以为视频帧的采集时间戳。
[0122] 之后,主进程根据各个视频通道下的视频帧以及各个视频通道下的视频帧对应的时间戳,构造视频帧包裹。
[0123] 其中,一个视频帧包裹中包括每个视频通道下的一个视频帧。假设有4个视频通道,则一个视频帧包裹中包括4个视频帧。
[0124] 在一个可选的实施方式中,请参阅图5,图5是本申请第二实施例提供的一种视频数据共享方法中S203的示意流程图,S203中根据各个视频通道下的视频帧以及各个视频通道下的视频帧对应的时间戳,构造视频帧包裹,包括:
[0125] S2031:主进程根据各个视频通道下的视频帧对应的时间戳,确定参照视频帧和参照视频帧对应的时间戳。
[0126] S2032:主进程获取各个视频通道下的视频帧对应的时间戳与参照视频帧对应的时间戳之间的时间间隔。
[0127] S2033:若时间间隔不小于预设的时间间隔阈值,主进程丢弃对应的视频帧,等待对应的视频帧所在视频通道的下一个视频帧,重复上述步骤直至所有时间间隔均小于预设的时间间隔阈值,得到视频帧包裹。
[0128] 关于步骤S2031,主进程根据各个视频通道下的视频帧对应的时间戳,得到时间戳的中位数,并确定与该中位数最接近的时间戳对应的视频帧为参照视频帧,进而也就确定了参照视频帧对应的时间戳。
[0129] 关于步骤S2032,主进程分别计算各个视频通道下的视频帧对应的时间戳与参照视频帧对应的时间戳之间的时间间隔。
[0130] 关于步骤S2033,若时间间隔不小于预设的时间间隔阈值,主进程丢弃对应的视频帧。该预设的时间间隔阈值为T,可选的,若帧率为25帧/秒,帧间隔为1秒/25=40毫秒,那么,T一般应小于帧间隔的一半,即,T一般应小于20毫秒。
[0131] 丢弃对应的视频帧后,等待对应的视频帧所在视频通道的下一个视频帧,例如:若丢弃了视频通道0下的视频帧,等待视频通道0下的下一个视频帧,之后,重复上述S2031至S2033的步骤,直至所有时间间隔均小于预设的时间间隔阈值,得到视频帧包裹。
[0132] 关于步骤S204,每构造一个视频帧包裹,主进程就会从缓存池中取出一个缓存块,本实施例中一个缓存块足够容纳各个视频通道下的一个视频帧。
[0133] 主进程根据视频帧包裹和预设的环视画面拼接顺序,得到拼接后的视频帧,并将拼接后的视频帧写入该缓存块中,也可以理解为拷贝到目标视频通道对应的缓存块上。
[0134] 关于步骤S205,主进程响应于连接请求,获取目标视频通道,并至少获取目标视频通道对应的视频访问句柄,将目标视频通道对应的视频访问句柄发送至从进程。
[0135] S205之后,主进程响应于连接成功指令,开辟目标视频通道对应的共享内存,将拼接后的视频帧对应的视频帧描述信息写入至目标视频通道对应的共享内存中。
[0136] 此处,关于开辟共享内存,实现视频数据共享的过程与第一实施例是相同的。
[0137] 不同的是,第一实施例中共享的某一个视频通道下的视频数据或某几个视频通道下的视频数据。
[0138] 而第二实施例中共享的是拼接后的视频帧,也可以理解为共享的是按照预设的环视画面拼接顺序拷贝到目标视频通道对应的缓存块上的视频帧。
[0139] 如果在第一实施例中实现环视拼接,从进程则需要分别访问某几个视频通道下的视频数据,之后再将其按照预设的环视画面拼接顺序拷贝到一块缓存上,再之后才能将其渲染呈现至用户。
[0140] 而在第二实施例中,从进程直接访问目标视频通道对应的缓存块即可,就能够得到拼接后的视频帧,将其渲染呈现至用户。
[0141] 还需要说明的是,关于S105至S109的相关步骤,均也可以在本实施例中S201~S207的基础上实现,实现方式和实现目的均相同,故,在此不进行复述。
[0142] 在本实施例中,在进行视频数据共享前先构造视频帧包裹,根据视频帧包裹和预设的环视画面拼接顺序,得到拼接后的视频帧,并将拼接后的视频帧写入目标视频通道对应的缓存块上,从而使得从进程根据虚拟访问地址访问该缓存块时,可以取出拼接后的视频帧渲染至屏幕上呈现给用户。由于无法保证所有摄像头同时输出视频帧,以及视频数据共享过程中可能出现的视频帧不同步的问题,因此,在环视拼接的应用场景下,视频数据共享前先构造视频帧包裹,能够有效避免环视拼接中画面不连贯的现象,并且,将视频帧包裹内的视频帧按照预设的环视画面拼接顺序拷贝到同一个缓存块上,呈现前只需访问该缓存块,即可快速实现画面的渲染,也能避免从进程自行拷贝所产生的时间抖动问题,提高环视拼接的画面呈现效果。
[0143] 应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
[0144] 请参见图6,图6是本申请第三实施例提供的视频数据共享装置的示意图。包括的各模块用于执行图1对应的实施例中的各步骤。具体请参阅图1对应的实施例中的相关描述。为了便于说明,仅示出了与本实施例相关的部分。参见图6,视频数据共享装置6包括:
[0145] 获取模块61,用于获取目标视频通道,根据目标视频通道,生成并发送连接请求至主进程;
[0146] 响应模块62,用于响应于连接请求,获取目标视频通道,并至少获取目标视频通道对应的视频访问句柄,将目标视频通道对应的视频访问句柄发送至从进程;
[0147] 共享模块63,用于接收目标视频通道对应的视频访问句柄,并从目标视频通道对应的共享内存中,获取目标视频通道下的视频帧对应的视频帧描述信息;
[0148] 访问模块64,用于从进程根据目标视频通道对应的视频访问句柄和目标视频通道下的视频帧对应的视频帧描述信息,至少得到目标视频通道下的视频帧对应的虚拟访问地址,通过目标视频通道下的视频帧对应的虚拟访问地址,访问目标视频通道对应的缓存块中的视频帧。
[0149] 进一步地,该装置6,还包括:第一写入模块,用于接收各个视频通道下的视频数据,将各个视频通道下的视频数据分别写入至各个视频通道对应的缓存块中;其中,视频通道下的视频数据由视频通道下的视频帧组成;其中,视频通道至少包括目标视频通道。
[0150] 进一步地,该装置6,还包括:第一连接模块,用于响应于连接成功指令,开辟各个视频通道对应的共享内存,将各个视频通道下的视频帧对应的视频帧描述信息分别写入至对应的共享内存中。
[0151] 进一步地,该装置6,还包括:接收模块,用于接收各个视频通道下的视频数据;其中,视频通道下的视频数据由视频通道下的视频帧组成;
[0152] 构造模块,用于对各个视频通道下的视频帧添加时间戳,根据各个视频通道下的视频帧以及各个视频通道下的视频帧对应的时间戳,构造视频帧包裹;其中,一个视频帧包裹中包括每个视频通道下的一个视频帧;
[0153] 第二写入模块,用于每构造一个视频帧包裹,根据视频帧包裹和预设的环视画面拼接顺序,得到拼接后的视频帧,并将拼接后的视频帧写入目标视频通道对应的缓存块上;目标视频通道对应的缓存块为从缓存池中取出的缓存块。
[0154] 进一步地,该装置6,还包括:第二连接模块,用于响应于连接成功指令,开辟目标视频通道对应的共享内存,将拼接后的视频帧对应的视频帧描述信息写入至目标视频通道对应的共享内存中。
[0155] 进一步地,构造模块,具体用于:根据各个视频通道下的视频帧对应的时间戳,确定参照视频帧和参照视频帧对应的时间戳;获取各个视频通道下的视频帧对应的时间戳与参照视频帧对应的时间戳之间的时间间隔;若时间间隔不小于预设的时间间隔阈值,丢弃对应的视频帧,等待对应的视频帧所在视频通道的下一个视频帧,重复上述步骤直至所有时间间隔均小于预设的时间间隔阈值,得到视频帧包裹。
[0156] 进一步地,该装置6,还包括:第一计数模块,用于若从进程访问目标视频通道对应的缓存块中的视频帧,触发增加视频帧对应的视频帧描述信息的引用计数值;第二计数模块,用于若从进程停止访问目标视频通道对应的缓存块中的视频帧,则触发减少视频帧对应的视频帧描述信息的引用计数值。
[0157] 进一步地,该装置6,还包括:第一释放模块,用于若目标视频通道对应的共享内存中所存储的视频帧描述信息超过预设的数量时,根据预设的释放优先级规则,释放目标视频通道对应的共享内存中视频帧描述信息;其中,预设的释放优先级规则从高至低为队列头部引用计数值为零的视频帧描述信息、队列尾部引用计数值为零的视频帧描述信息和等待进入队列的视频帧描述信息。
[0158] 进一步地,该装置6,还包括:释放响应模块,用于响应于从进程发送的释放请求,获取目标视频帧和目标视频帧对应的视频帧描述信息的引用计数值;
[0159] 第二释放模块,用于若目标视频帧对应的视频帧描述信息的引用计数值为零,则释放目标视频帧对应的缓存。
[0160] 需要说明的是,上述模块之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
[0161] 请参见图7,图7是本申请第三实施例提供的视频数据共享系统的示意图,视频采集设备71和车载设备72;视频采集设备71用于采集各个视频通道下的视频数据,将各个视频通道下的视频数据发送至车载设备72中;
[0162] 车载设备72上装载有整机软件721,整机软件721的功能由主进程7211和从进程7212实现,车载设备通过主进程7211和从进程7212实现如第一实施例和/或第二实施例所述的视频数据共享方法。
[0163] 由于本系统与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
[0164] 请参见图8,图8是本申请第四实施例提供的车载设备的示意图。如图8所示,该实施例的车载设备8包括:处理器80、存储器81以及存储在所述存储器81中并可在所述处理器80上运行的计算机程序82,例如视频数据共享程序。所述处理器80执行所述计算机程序82时实现上述各个视频数据共享方法实施例中的步骤,例如图1所示的步骤S101至S104。或者,所述处理器80执行所述计算机程序82时实现上述各装置实施例中各模块/单元的功能,例如图6所示获取模块61至访问模块64的功能。
[0165] 示例性的,所述计算机程序82可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器81中,并由所述处理器80执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序82在所述车载设备8中的执行过程。例如,所述计算机程序82可以被分割成获取模块、响应模块、共享模块和访问模块,各模块具体功能如下:
[0166] 获取模块,用于获取目标视频通道,根据目标视频通道,生成并发送连接请求至主进程;
[0167] 响应模块,用于响应于连接请求,获取目标视频通道,并至少获取目标视频通道对应的视频访问句柄,将目标视频通道对应的视频访问句柄发送至从进程;
[0168] 共享模块,用于接收目标视频通道对应的视频访问句柄,并从目标视频通道对应的共享内存中,获取目标视频通道下的视频帧对应的视频帧描述信息;
[0169] 访问模块,用于从进程根据目标视频通道对应的视频访问句柄和目标视频通道下的视频帧对应的视频帧描述信息,至少得到目标视频通道下的视频帧对应的虚拟访问地址,通过目标视频通道下的视频帧对应的虚拟访问地址,访问目标视频通道对应的缓存块中的视频帧。
[0170] 所述车载设备8可包括,但不仅限于,处理器80、存储器81。本领域技术人员可以理解,图8仅仅是车载设备8的示例,并不构成对车载设备8的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述车载设备8还可以包括输入输出设备、网络接入设备、总线等。
[0171] 所称处理器80可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程阵列(Field‑Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0172] 所述存储器81可以是所述车载设备8的内部存储单元,例如车载设备8的硬盘或内存。所述存储器81也可以是所述车载设备8的外部存储设备,例如所述车载设备8上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述车载设备8还可以既包括所述车载设备8的内部存储单元也包括外部存储设备。所述存储器81用于存储所述计算机程序以及所述车载设备8所需的其他程序和数据。所述存储器81还可以用于暂时地存储已经输出或者将要输出的数据。
[0173] 需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
[0174] 本申请实施例还提供了一种网络设备,该网络设备包括:至少一个处理器、存储器以及存储在所述存储器中并可在所述至少一个处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意各个方法实施例中的步骤。
[0175] 本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。
[0176] 本申请实施例提供了一种计算机程序产品,当计算机程序产品在移动终端上运行时,使得移动终端执行时实现可实现上述各个方法实施例中的步骤。
[0177] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
[0178] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0179] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
[0180] 在本申请所提供的实施例中,应该理解到,所揭露的装置/网络设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/网络设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
[0181] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0182] 以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
QQ群二维码
意见反馈