本文作者:kaifamei

视频采集方法、装置、电子设备及可读存储介质与流程

更新时间:2025-12-19 16:29:57 0条评论

视频采集方法、装置、电子设备及可读存储介质与流程



1.本技术涉及数据处理技术领域,具体而言,本技术涉及一种视频采集方法、装置、电子设备及可读存储介质。


背景技术:

2.v4l2(video for linux2)称作linux视频设备驱动,是linux操作系统上实现视频采集的通用框架。现在绝大多数开源程序,例如webrtc、opencv等,在设计之初一般默认其对摄像头等视频设备的访问都是通过v4l2驱动对应的v4l2接口。
3.但是,目前一些操作系统并不支持v4l2接口,这些操作系统各自都提供一套独有的本地接口供程序访问视频设备。当把支持v4l2接口的程序移植到这些不支持v4l2接口的操作系统上时,这些程序访问视频设备都需要和本地接口进行适配,此类适配的过程一般需要将该程序定义的访问视频设备和处理视频数据的相关接口函数修改为对应的本地接口函数。
4.每个程序对视频设备的访问,定义的接口函数和程序流程基本都是不同的,这就导致每移植一个新的程序到不支持v4l2接口的操作系统时,该新的程序几乎都需要重复进行这种适配,工作量大且繁琐。


技术实现要素:

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.接收模块,用于接收目标程序发送的第一访问请求,第一访问请求用于指示通过第一目标接口访问视频设备,第一目标接口为基于第二操作系统的接口;
43.更新模块,用于将第一访问请求更新为第二访问请求,第二访问请求用于指示通过第二目标接口访问视频设备,第二目标接口为基于第一操作系统的接口;
44.访问结果获得模块,用于根据第二访问请求获得目标程序可处理的第一目标访问结果。
45.根据本技术实施例的第三方面,提供了一种电子设备,该电子设备包括存储器、处理器及存储在存储器上的计算机程序,处理器执行程序时实现如第一方面所提供的方法的步骤。
46.根据本技术实施例的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所提供的方法的步骤。
47.根据本技术实施例的第五方面,提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中,当计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行实现如第一方面所提供的方法的步骤。
48.本技术实施例提供的技术方案带来的有益效果是:在第一操作系统中执行目标程序,目标程序基于第二操作系统开发;接收目标程序发送的第一访问请求,第一访问请求用于指示通过第一目标接口访问视频设备,第一目标接口为基于第二操作系统的接口;将第一访问请求更新为第二访问请求,第二访问请求用于指示通过第二目标接口访问视频设备,第二目标接口为基于第一操作系统的接口;根据第二访问请求获得目标程序可处理的第一目标访问结果。本技术实施例无需修改目标程序原有的访问视频设备所定义的函数和流程即可实现目标程序访问视频设备,使得目标程序可以平滑移植到第一操作系统,移植的改动较小,提高了移植的效率,降低了移植的难度。
附图说明
49.为了更清楚地说明本技术实施例中的技术方案,下面将对本技术实施例描述中所需要使用的附图作简单地介绍。
50.图1为本技术实施例提供的一种视频采集方法的流程示意图;
51.图2为本技术实施例提供的通过一个环形队列来同步协调生产者线程和消费者线程的写入和读取的示意图;
52.图3为本技术实施例提供的一种视频采集装置的结构示意图;
53.图4为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
54.下面结合本技术中的附图描述本技术的实施例。应理解,下面结合附图所阐述的实施方式,是用于解释本技术实施例的技术方案的示例性描述,对本技术实施例的技术方案不构成限制。
55.本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本技术实施例所使用的术语“包括”以及“包含”是指相应特征可以实现为所呈现的特征、信息、数据、步骤、操作、元件和/或组件,但不排除实现为本技术领域所支持其他特征、信息、数据、步骤、操作、元件、组件和/或它们的组合等。应该理解,当我们称一个元件被“连接”或“耦接”到另一元件时,该一个元件可以直接连接或耦接到另一元件,也可以指该一个元件和另一元件通过中间元件建立连接关系。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的术语“和/或”指示该术语所限定的项目中的至少一个,例如“a和/或b”可以实现为“a”,或者实现为“b”,或者实现为“a和b”。
56.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
57.下面对本技术涉及的术语及相关技术进行说明:
58.v4l2是video4linux2的简称,为linux中关于视频设备的内核驱动,包括视频输入(如摄像头采集视频数据)、视频输出(如vga输出等)以及视频编解码等数据流管理功能。
59.下面通过对几个示例性实施方式的描述,对本技术实施例的技术方案以及本技术的技术方案产生的技术效果进行说明。需要指出的是,下述实施方式之间可以相互参考、借鉴或结合,对于不同实施方式中相同的术语、相似的特征以及相似的实施步骤等,不再重复描述。
60.本技术实施例中提供了一种视频采集的方法,如图1所示,该方法包括:
61.步骤s101,在第一操作系统中执行目标程序,目标程序基于第二操作系统开发。
62.本技术实施例第一操作系统是不支持v4l2驱动的操作系统,例如一些国产操作系统,第一操作系统提供一套独有的本地接口供应用程序访问视频设备。
63.本技术实施例第二操作系统是支持v4l2驱动的操作系统,例如linux操作系统,在第二操作系统编译的程序通过v4l2驱动对应的v4l2接口访问视频设备。
64.本技术实施例目标程序可以是对视频设备有访问需求的任意程序,例如webrtc、opencv程序等开源程序,也可以是常见的相机应用程序、视频应用程序等。该视频设备可以是任意的可以采集视频的设备,例如摄像头。
65.由于目标程序是基于第二操作系统开发的,在第二操作系统编译的程序通过v4l2驱动对应的v4l2接口访问视频设备,因此目标程序通过v4l2接口访问视频设备。
66.本技术实施例发生于目标程序由第二操作系统移植至第一操作系统之后,在第一操作系统中执行该目标程序。
67.步骤s102,接收目标程序发送的第一访问请求,第一访问请求用于指示通过第一目标接口访问视频设备,第一目标接口为基于第二操作系统的接口。
68.本技术实施例目标程序在需要访问视频设备时,会发送第一访问请求,第一访问请求用于指示通过第一目标接口访问视频设备,第一目标接口为基于第二操作系统的接口,即第一目标接口属于v4l2接口,目标程序意图通过第一目标接口来访问运行第二操作系统的终端中的视频设备。
69.步骤s103,将第一访问请求更新为第二访问请求,第二访问请求用于指示通过第二目标接口访问视频设备,第二目标接口为基于第一操作系统的接口,即第一操作系统提供的一套访问视频设备的接口,这套接口一般是第一操作系统独有的,有时也称为本地接口。
70.第一访问请求用于指示通过第一目标接口访问视频设备,然而目标程序是在第一操作系统中被执行,第一操作系统并不支持第一目标接口访问视频设备,因此目标程序在第一操作系统中被执行时无法直接通过第一目标接口访问视频设备。
71.本技术实施例在接收到第一访问请求后,将第一访问请求转换为第二访问请求,第二访问请求用于指示通过第二目标接口访问视频设备,第二目标接口为基于第一操作系统的接口,可通过第二目标接口访问视频设备,因此,需将第一访问请求更新为第二访问请求。
72.步骤s104,根据第二访问请求获得目标程序可处理的第一目标访问结果。
73.由于第二访问请求指示通过第二目标接口访问视频设备,第一操作系统支持第二目标接口,因此,可先根据第二访问请求获得第一处理结果,第一操作系统可对第一处理结果进行后续处理,再将第一处理结果转换为第二处理结果,基于第二操作系统开发的目标程序后续可对第二处理结果进行后续处理,可将第二处理结果作为目标程序可处理的第一目标访问结果,使得目标程序后续可以对第一目标访问结果进行处理。
74.本技术实施例在第一操作系统中执行目标程序,目标程序基于第二操作系统开发;接收目标程序发送的第一访问请求,第一访问请求用于指示通过第一目标接口访问视频设备,第一目标接口为基于第二操作系统的接口;将第一访问请求更新为第二访问请求,第二访问请求用于指示通过第二目标接口访问视频设备,第二目标接口为基于第一操作系统的接口;根据第二访问请求获得目标程序可处理的第一目标访问结果。本技术实施例无需修改目标程序原有的访问视频设备所定义的函数和流程即可实现目标程序访问视频设备,使得目标程序可以平滑移植到第一操作系统,移植的改动较小,提高了移植的效率,降低了移植的难度。
75.本技术实施例中提供了一种可能的实现方式,将第一访问请求更新为第二访问请求,包括:
76.对第一访问请求进行解析,得到第一目标接口的标识和第一目标参数;第一目标参数是第一目标接口对应的接口函数可处理的参数;
77.将第一目标接口的标识转换为第二目标接口的标识;
78.将第一目标参数转换为第二目标参数,第二目标参数是第二目标接口对应的接口函数可处理的参数;
79.将第二目标接口的标识和第二目标参数进行封装,得到第二访问请求。
80.本技术实施例在将第一访问请求更新为第二访问请求的过程中,先对该第一访问请求进行解析,得到第一目标接口的标识和第一目标参数,根据第一目标接口的标识可确定第一目标接口;第一目标参数是第一目标接口对应的接口函数可处理的参数。
81.本技术实施例可根据第一目标接口的标识和第一目标参数确定第一访问请求的访问类型,通常情况访问类型包括以下至少一种:打开类型、启动预览类型、获取图像类型、停止预览类型、关闭类型等。
82.其中,打开类型用于指示打开视频设备;启动预览类型用于指示预览视频设备采集的视频帧图像;获取图像类型用于指示获视频设备采集的视频帧图像;停止预览类型用于指示停止预览视频设备采集的视频帧图像;关闭类型用于指示关闭视频设备。
83.目标程序通过v4l2接口访问视频设备,v4l2接口用来访问视频设备的核心接口有
三个,分别是open接口、close接口以及ioctl接口,即第一目标接口可以是任意的上述v4l2接口。
84.其中,open接口为打开类型,用于指示打开视频设备,为实现打开视频设备需要调用open接口,open接口对应的接口函数的参数为字符串,如:“/dev/video1”、“/dev/video2”,参数“/dev/video1”表征打开第一个视频设备,“/dev/video2”表征打开第二视频设备;close接口为关闭类型,用于指示关闭视频设备,为实现关闭视频设备需要调用的close接口;ioctl接口可能属于启动预览类型,也可能属于获取图像类型,也可能属于停止预览类型,需进一步根据ioctl接口对应的接口函数可处理的参数来确定访问类型。具体的,若参数为是“vidioc_streamon”,表征启动预览类型,即预览视频设备采集的视频帧图像;若参数为是“vidioc_dqbuf”,表征获取图像类型,即获取视频设备采集的视频帧图像;若参数为是“vidioc_streamoff”,表征停止预览类型,即停止预览视频设备采集的视频帧图像。
85.另外,v4l2接口还包括一些其他的辅助接口,例如select接口以及mmap接口等,select接口用于确定一个或多个套接字的状态,mmap接口用于指示将一个文件或者其它对象映射进内存。
86.本技术实施例在确定第一目标接口的标识和第一目标参数后,将第一目标接口的标识转换为第二目标接口的标识,将第一目标参数转换为第二目标参数,第二目标参数是第二目标接口对应的接口函数可处理的参数。
87.具体而言,假设第一操作系统提供相机接口的功能模块是droidmedia,打开类型的接口为connect接口,其对应的接口函数为droidmediacamera*droid_media_camera_connect(intcamera_number)函数,该接口函数的参数相机的整型id。
88.若第一目标接口的标识是open接口的标识,第一目标参数是“/dev/video1”,则需将open接口的标识转换为相应的第二目标接口connect接口的标识,将第一目标参数“/dev/video1”转换为第二目标参数“1”。
89.第一操作系统提供的关闭类型的接口为disconnect接口,其对应的接口函数为void droid_media_camera_disconnect(droidmediacamera*camera),参数camera是打开视频设备时的返回值,为droidmediacamera指针类型。若第一目标接口函数的标识是close接口的标识,第一目标参数是打开视频设备时的返回值(该返回值可根据文件描述符fd查询),则需将第一目标接口close接口的标识转换为相应的第二目标接口disconnect接口的标识,通过fd查询打开视频设备时的返回值,将该返回值作为第一目标参数,并将该第一目标参数转换为相应的droidmediacamera指针类型的第二目标参数。
90.第一操作系统启动预览类型的接口为start_preview,其对应的接口函数为bool droid_media_camera_start_preview(droidmediacamera*camera),在调用这个函数之前需要注册帧回调函数,用来接收从视频设备采集的图像,帧回调函数为:droid_media_camera_set_callbacks,注册帧回调函数的接口为帧回调接口。在帧回调函数的实现中,每收到一帧视频帧图像,获得该视频帧图像的地址和长度,把视频帧图像写入环形缓冲区,如:mringbufqueue.push(framedata,datalen)。
91.第一操作系统中获取图像类型的接口为mringbufqueue接口,其对应的接口函数为mringbufqueue.pop(framedata,datalen);停止预览类型的接口为stop_preview接口,
其对应的接口函数为void droid_media_camera_stop_preview(droidmediacamera*camera),参数camera是打开视频设备时的返回值,可根据fd查询。
92.每个第一目标接口一般都有与该第一目标接口的访问类型相同或相近的第二目标接口,本技术实施例在将第一目标接口的标识转换为第二目标接口的标识,将第一目标参数转换为第二目标参数后,将第二目标接口的标识和第二目标参数进行封装,得到第二访问请求,通过该第二访问请求能够使得目标程序在第一操作系统中访问视频设备。
93.本技术实施例中提供了一种可能的实现方式,根据第二访问请求获得目标程序可处理的第一目标访问结果,包括:
94.根据第二访问请求中的第二目标接口的标识,确定第二目标接口,并调用第二目标接口对应的接口函数对第二目标参数进行处理,得到第一处理结果;
95.将第一处理结果转换为第二处理结果;
96.将第二处理结果作为目标程序可处理的第一目标访问结果。
97.本技术实施例第二访问请求中包括第二目标接口的标识和第二目标参数,可根据第二目标接口的标识确定第二目标接口,调用第二目标接口对应的接口函数对第二目标参数进行处理,得到第一处理结果,即本技术实施例实质上还是调用第二目标接口函数,并没有调用第一目标接口函数。
98.本技术实施例第一操作系统后续可对第一处理结果进行处理,然由于目标程序是基于第二操作系统开发的,目标程序后续无法对第一处理结果进行处理,因此,还需将第一处理结果转换为第二处理结果,第二处理结果基于第二操作系统,目标程序后续才可对第二处理结果进行处理,将第二处理结果作为目标程序可处理的第一目标访问结果。
99.本技术实施例中提供了一种可能的实现方式,将第一目标接口的标识转换为第二目标接口的标识,包括:
100.根据预先建立的第一映射关系,确定与第一目标接口的标识对应的第二目标接口的标识;
101.第一映射关系为第一候选接口的标识和与第一候选接口的访问类型相同或相近的第二候选接口的标识之间的映射关系;第一候选接口和第二候选接口基于不同的操作系统。
102.本技术实施例建立了第一候选接口对应的接口的标识和与第一候选接口的访问类型相同或相近的第二候选接口的标识之间的第一映射关系,具体而言,例如建立了open接口(基于第一操作系统的接口)的标识和connect接口(基于第二操作系统的接口)之间的第一映射关系,二者的访问类型是相同的,都是打开类型,同样可建立其他访问类型的第一候选接口的标识和相应的第二候选接口的标识之间的第一映射关系,本技术实施例在此不再一一举例。
103.将第一目标参数转换为第二目标参数,包括:
104.根据预先建立的第二映射关系,确定第一目标参数对应的第二目标参数;
105.第二映射关系为第一候选接口对应的接口函数可处理的第一候选参数和相应的访问类型相同或相近的第二候选接口对应的接口函数可处理的、与第一候选参数含义相同或相近的第二候选参数之间的映射关系。
106.本技术实施例除了建立第一映射关系,还建立了第一候选接口对应的接口函数可
处理的第一候选参数和相应的访问类型相同或相近的第二候选接口对应的接口函数可处理的、与第一候选参数含义相同或相近的第二候选参数之间的映射关系,具体而言,假设第一候选接口为open接口,open接口对应的接口函数(即open函数)可处理的第一候选参数为“/dev/videox”,其中,x为正整数,表征第x个视频设备;第一操作系统中与open函数的访问类型相同或相近的第二候选接口为connect接口,对应的接口函数为droidmediacamera*droid_media_camera_connect(intcamera_number),该第二候选接口对应的接口函数可处理的与第一候选参数“/dev/videox”表达含义相同的第二候选参数为“x”,其中,x为正整数,表征第x个视频设备。
107.本技术实施例中提供了一种可能的实现方式,将第一处理结果转换为第二处理结果,包括:
108.根据预先建立的第三映射关系,确定第一处理结果对应的第二处理结果;
109.第三映射关系为第一候选结果和第二候选结果之间的映射关系;
110.第一候选结果为调用第一候选接口的接口函数对第一候选参数进行处理得到的结果;第二候选结果为调用与第一候选接口函的访问类型相同或相近的第二候选接口的接口函数对与第一候选参数存在第二映射关系的第二候选参数进行处理得到的结果。
111.本技术实施例还建立了第三映射关系,第三映射关系为第一候选结果和第二候选结果之间的映射关系;第一候选结果为调用第一候选接口对应的接口函数对第一候选参数进行处理得到的结果。
112.本技术实施例将第一处理结果转换为第二处理结果,具体的,可根据预先建立的第三映射关系,确定第一处理结果对应的第二处理结果。
113.本技术实施例中提供了一种可能的实现方式,第一访问请求或第二访问请求包括以下至少一种访问类型:打开类型;启动预览类型;获取图像类型;停止预览类型;关闭类型。
114.其中,打开类型用于指示打开视频设备;
115.启动预览类型用于预览视频设备采集的视频帧图像;
116.获取图像类型用于指示获取视频设备采集的视频帧图像;
117.停止预览类型用于指示停止预览视频设备采集的视频帧图像;
118.关闭类型用于指示关闭视频设备。
119.在前述实施例中已经对各访问类型进行解释,本技术实施例在此不再进行赘述。
120.本技术实施例中提供了一种可能的实现方式,若第一访问请求的访问类型为启动预览类型,则调用第二目标接口对应的接口函数对第二目标参数进行处理之前,还包括:
121.注册帧回调函数;帧回调函数用于指示接收从视频设备采集的视频帧图像;
122.运行帧回调函数,从视频设备获取视频帧图像,并将视频帧图像存储于缓冲区;缓冲区包括环形队列。
123.本技术实施例对于第一操作系统而言,在调用启动预览类型对应的接口函数之前,还可以注册帧回调函数,帧回调函数用于指示接收从视频设备采集的视频帧图像。在运行该帧回调函数时,会从视频设备获取视频帧图像,获取每帧视频帧图像的地址和长度,将每帧视频帧图像写入缓冲区,该缓冲区可以为环形队列,环形队列可以保证无阻塞,实现写入无需等待从而保证写入的实时性。
124.视频帧图像或视频数据流来自基于第一操作系统的第一候选接口,通常在启动预览后,通过帧回调函数以一定的帧率将视频帧图像发送给访问该第一候选接口的程序,本技术实施例目标程序是基于第二操作系统开发的,目标程序无法直接注册帧回调函数,因此,在启动预览时,在第一操作系统中由第一操作系统自身或相关程序为目标程序注册帧回调函数。
125.视频帧图像的写入和读取由两个不同的线程执行,生产者线程将视频帧图像写入缓冲区,该缓冲区可以是环形队列,生产者线程是视频帧图像的提供者,即第一候选接口是提供者;消费者线程从缓冲区中读取视频帧图像,消费者线程是使用视频帧图像的消费者,即目标程序是消费者
126.如图2所示,其示例性示出了通过一个环形队列来同步协调生产者线程和消费者线程的写入和读取的示意图,生产者线程不断的第一候选接口获得视频帧图像,将视频帧图像作为视频数据写入环形队列;而消费者线程在需要时将视频数据读出。in和out是环形队列的缓冲区索引,in是写入缓冲区的索引,out是读出缓冲区的索引,当两者相等时,环形队列为空,还没有视频数据被写入,初始化阶段将两者设置为相等。
127.当生产者线程写入一帧数据后,索引in加1,生产者无需关心消费者是否读出或什么时候读出,它可以不断的写入视频数据,索引in的变化如下:
[0128][0129]
消费者线程在需要时读出数据,索引out加1。如果读入时发现in与out相等,消费者线程需要等待,直到有新视频数据写入时再继续读入。
[0130]
本技术实施例提供了一种视频采集装置,应用于第一终端,第一终端运行第一操作系统,如图3所示,该视频采集装置30可以包括:
[0131]
执行模块310,用于在第一操作系统中执行目标程序,目标程序基于第二操作系统开发;
[0132]
接收模块320,用于接收目标程序发送的第一访问请求,第一访问请求用于指示通过第一目标接口访问视频设备,第一目标接口为基于第二操作系统的接口;
[0133]
更新模块330,用于将第一访问请求更新为第二访问请求,第二访问请求用于指示通过第二目标接口访问视频设备,第二目标接口为基于第一操作系统的接口;
[0134]
访问结果获得模块340,用于根据第二访问请求获得目标程序可处理的第一目标访问结果。
[0135]
本技术实施例通过在第一操作系统中执行目标程序,目标程序基于第二操作系统开发;接收目标程序发送的第一访问请求,第一访问请求用于指示通过第一目标接口访问视频设备,第一目标接口为基于第二操作系统的接口;将第一访问请求更新为第二访问请求,第二访问请求用于指示通过第二目标接口访问视频设备,第二目标接口为基于第一操作系统的接口;根据第二访问请求获得目标程序可处理的第一目标访问结果。本技术实施例无需修改目标程序原有的访问视频设备所定义的函数和流程即可使得目标程序访问视
频设备,实现目标程序可以平滑移植到第一操作系统,移植的改动较小,提高了移植的效率,降低了移植的难度。
[0136]
本技术实施例中提供了一种可能的实现方式,更新模块包括:
[0137]
解析子模块,用于对第一访问请求进行解析,得到第一目标接口的标识和第一目标参数;第一目标参数是第一目标接口对应的接口函数可处理的参数;
[0138]
第一转换子模块,用于将第一目标接口的标识转换为第二目标接口的标识;
[0139]
第二转换子模块,用于将第一目标参数转换为第二目标参数,第二目标参数是第二目标接口对应的接口函数可处理的参数;
[0140]
封装子模块,用于将第二目标接口的标识和第二目标参数进行封装,得到第二访问请求。
[0141]
本技术实施例中提供了一种可能的实现方式,访问结果获得模块包括:
[0142]
第一处理结果获得子模块,用于根据第二访问请求中的第二目标接口的标识,并调用第二目标接口对应的接口函数对第二目标参数进行处理,得到第一处理结果;
[0143]
第三转换子模块,用于将第一处理结果转换为第二处理结果;
[0144]
将第二处理结果作为目标程序可处理的第一目标访问结果。
[0145]
本技术实施例中提供了一种可能的实现方式,第一转换子模块具体用于根据预先建立的第一映射关系,确定与第一目标接口的标识对应的第二目标接口的标识;
[0146]
第一映射关系为第一候选接口的标识和与第一候选接口的访问类型相同或相近的第二候选接口的标识之间的映射关系;第一候选接口和第二候选接口基于不同的操作系统;
[0147]
第二转换子模块具体用于根据预先建立的第二映射关系,确定第一目标参数对应的第二目标参数;
[0148]
第二映射关系为第一候选接口对应的接口函数可处理的第一候选参数和相应的访问类型相同或相近的第二候选接口对应的接口函数可处理的、与第一候选参数含义相同或相近的第二候选参数之间的映射关系。
[0149]
本技术实施例中提供了一种可能的实现方式,第三转换子模块具体用于根据预先建立的第三映射关系,确定第一处理结果对应的第二处理结果;
[0150]
第三映射关系为第一候选结果和第二候选结果之间的映射关系;
[0151]
第一候选结果为调用第一候选接口的接口函数对第一候选参数进行处理得到的结果;第二候选结果为调用与第一候选接口函的访问类型相同或相近的第二候选接口的接口函数对与第一候选参数存在第二映射关系的第二候选参数进行处理得到的结果。
[0152]
本技术实施例中提供了一种可能的实现方式,第一访问请求或第二访问请求包括以下至少一种访问类型:
[0153]
打开类型;启动预览类型;获取图像类型;停止预览类型;关闭类型;
[0154]
其中,打开类型用于指示打开视频设备;
[0155]
启动预览类型用于指示预览视频设备采集的视频帧图像;
[0156]
获取图像类型用于指示从缓冲区获取视频设备采集的视频帧图像;
[0157]
停止预览类型用于指示停止预览视频设备采集的视频帧图像;
[0158]
关闭类型用于指示关闭视频设备。
programmable read only memory,电可擦可编程只读存储器)、cd-rom(compact disc read only memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质、其他磁存储设备、或者能够用于携带或存储计算机程序并能够由计算机读取的任何其他介质,在此不做限定。
[0168]
存储器4003用于存储执行本技术实施例的计算机程序,并由处理器4001来控制执行。处理器4001用于执行存储器4003中存储的计算机程序,以实现前述方法实施例所示的步骤。
[0169]
其中,电子设备包可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、pda(个人数字助理)、pad(平板电脑)、pmp(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字tv、台式计算机等等的固定终端。图4所示的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
[0170]
本技术实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。与现有技术相比可实现:在第一操作系统中执行目标程序,目标程序基于第二操作系统开发;接收目标程序发送的第一访问请求,第一访问请求用于指示通过第一目标接口访问视频设备,第一目标接口为基于第二操作系统的接口;将第一访问请求更新为第二访问请求,第二访问请求用于指示通过第二目标接口访问视频设备,第二目标接口为基于第一操作系统的接口;根据第二访问请求获得目标程序可处理的第一目标访问结果。本技术实施例无需修改目标程序原有的访问视频设备所定义的函数和流程即可使得目标程序访问视频设备,实现目标程序可以平滑移植到第一操作系统,移植的改动较小,提高了移植的效率,降低了移植的难度。
[0171]
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。
[0172]
本技术实施例还提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。与现有技术相比可实现:在第一操作系统中执行目标程序,目标程序基于第二操作系统开发;接收目标程序发送的第一访问
请求,第一访问请求用于指示通过第一目标接口访问视频设备,第一目标接口为基于第二操作系统的接口;将第一访问请求更新为第二访问请求,第二访问请求用于指示通过第二目标接口访问视频设备,第二目标接口为基于第一操作系统的接口;根据第二访问请求获得目标程序可处理的第一目标访问结果。本技术实施例无需修改目标程序原有的访问视频设备所定义的函数和流程即可使得目标程序访问视频设备,实现目标程序可以平滑移植到第一操作系统,移植的改动较小,提高了移植的效率,降低了移植的难度。
[0173]
本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”、“1”、“2”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除图示或文字描述以外的顺序实施。
[0174]
应该理解的是,虽然本技术实施例的流程图中通过箭头指示各个操作步骤,但是这些步骤的实施顺序并不受限于箭头所指示的顺序。除非本文中有明确的说明,否则在本技术实施例的一些实施场景中,各流程图中的实施步骤可以按照需求以其他的顺序执行。此外,各流程图中的部分或全部步骤基于实际的实施场景,可以包括多个子步骤或者多个阶段。这些子步骤或者阶段中的部分或全部可以在同一时刻被执行,这些子步骤或者阶段中的每个子步骤或者阶段也可以分别在不同的时刻被执行。在执行时刻不同的场景下,这些子步骤或者阶段的执行顺序可以根据需求灵活配置,本技术实施例对此不限制。
[0175]
以上仅是本技术部分实施场景的可选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术的方案技术构思的前提下,采用基于本技术技术思想的其他类似实施手段,同样属于本技术实施例的保护范畴。


文章投稿或转载声明

本文链接:http://www.wtabcd.cn/zhuanli/patent-8-1029-0.html

来源:专利查询检索下载-实用文体写作网版权所有,转载请保留出处。本站文章发布于 2022-11-27 21:26:35

发表评论

验证码:
用户名: 密码: 匿名发表
评论列表 (有 条评论
2人围观
参与讨论