CN104967770B - 视频拍摄方法及装置 - Google Patents
视频拍摄方法及装置 Download PDFInfo
- Publication number
- CN104967770B CN104967770B CN201410201598.0A CN201410201598A CN104967770B CN 104967770 B CN104967770 B CN 104967770B CN 201410201598 A CN201410201598 A CN 201410201598A CN 104967770 B CN104967770 B CN 104967770B
- Authority
- CN
- China
- Prior art keywords
- data
- video
- video data
- frame data
- cached
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N9/00—Details of colour television systems
- H04N9/79—Processing of colour television signals in connection with recording
- H04N9/80—Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback
- H04N9/804—Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback involving pulse code modulation of the colour picture signal components
- H04N9/8042—Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback involving pulse code modulation of the colour picture signal components involving data reduction
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B27/00—Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
- G11B27/02—Editing, e.g. varying the order of information signals recorded on, or reproduced from, record carriers
- G11B27/031—Electronic editing of digitised analogue information signals, e.g. audio or video signals
- G11B27/034—Electronic editing of digitised analogue information signals, e.g. audio or video signals on discs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/76—Television signal recording
- H04N5/765—Interface circuits between an apparatus for recording and another apparatus
- H04N5/77—Interface circuits between an apparatus for recording and another apparatus between a recording apparatus and a television camera
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/76—Television signal recording
- H04N5/765—Interface circuits between an apparatus for recording and another apparatus
- H04N5/77—Interface circuits between an apparatus for recording and another apparatus between a recording apparatus and a television camera
- H04N5/772—Interface circuits between an apparatus for recording and another apparatus between a recording apparatus and a television camera the recording apparatus and the television camera being placed in the same enclosure
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/443—OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明实施例公开了一种视频拍摄方法及装置,属于多媒体处理领域。所述方法包括:获取拍摄到的视频数据;将所述视频数据缓存到内存分配不受限制的native层;根据所述native层中缓存的所述视频数据编码得到视频文件。本发明实施例解决了图像数据被缓存在Java层时,会频繁触发垃圾回收机制和发生内存溢出现象的问题;达到了不需要触发垃圾回收机制,也不会发生内存溢出现象的效果。
Description
技术领域
本发明实施例涉及多媒体处理领域,特别涉及一种视频拍摄方法及装置。
背景技术
短视频分享是目前在诸如智能手机、平板电脑和多媒体播放器等移动终端上非常流行的一种功能。用户可以通过智能手机拍摄简短的几秒视频来分享给好友,使得短视频能够像微博一样来传播信息。
在采用Android系统的移动终端上,短视频分享App(Application,应用程序)可以调用系统内置的相关函数接口来拍摄短视频。例如,短视频分享App调用系统内置的PreviewCallback接口,该PreviewCallback接口在摄像头每次拍摄到一帧预览图像时,自动调用onPreviewFrame回调函数向短视频分享App返回当前图像帧数据。短视频分享App将每帧图像帧数据缓存在Java层,然后按顺序将每帧图像帧数据编码为短视频。
在实现本发明实施例的过程中,发明人发现背景技术至少存在以下问题:Andorid系统中属于Java层的每个应用仅能够使用有限的几十MB内存,而上述图像帧数据被缓存在Java层时,由于图像帧数据的数据量较大,会频繁触发Java层在内存不足时的垃圾回收(gc)机制,甚至发生内存溢出(oom,Out Of Memory)。
发明内容
为了解决图像数据被缓存在Java层时,会频繁触发垃圾回收机制和发生内存溢出现象的问题,本发明实施例提供了一种视频拍摄方法及装置。所述技术方案如下:
第一方面,提供了一种视频拍摄方法,所述方法包括:
获取拍摄到的视频数据;
将所述视频数据缓存到内存分配不受限制的native层;
根据所述native层中缓存的所述视频数据编码得到视频文件。
第二方面,提供了一种视频拍摄装置,所述装置包括:
数据采集模块,用于获取拍摄到的视频数据;
数据缓存模块,用于将所述视频数据缓存到内存分配不受限制的native层;
数据编码模块,用于根据所述native层中缓存的所述视频数据编码得到视频文件。
本发明实施例提供的技术方案带来的有益效果是:
通过获取拍摄到的视频数据,将视频数据缓存到内存分配不受限制的native层,根据native层中缓存的视频数据编码得到视频文件;解决了图像数据被缓存在Java层时,会频繁触发垃圾回收机制和发生内存溢出现象的问题;达到了不需要触发垃圾回收机制,也不会发生内存溢出现象的效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例提供的视频拍摄方法的方法流程图;
图2是本发明另一实施例提供的视频拍摄方法的方法流程图;
图3是本发明另一实施例提供的视频拍摄方法的方法流程图
图4是本发明一个实施例提供的视频拍摄装置的结构示意图;
图5是本发明另一实施例提供的视频拍摄装置的结构示意图;
图6是本发明一个实施例提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
请参考图1,其示出了本发明一个实施例提供的视频拍摄方法的方法流程图。该视频拍摄方法应用于电子设备中,特别是采用Android系统的电子设备,该视频拍摄方法包括:
步骤102,获取拍摄到的视频数据;
步骤104,将视频数据缓存到内存分配不受限制的native层;
步骤106,根据native层中缓存的视频数据编码得到视频文件。
综上所述,本实施例提供的视频拍摄方法,通过获取拍摄到的视频数据,将视频数据缓存到内存分配不受限制的native层,根据native层中缓存的视频数据编码得到视频文件;解决了图像数据被缓存在Java层时,会频繁触发垃圾回收机制和发生内存溢出现象的问题;达到了不需要触发垃圾回收机制,也不会发生内存溢出现象的效果。
请参考图2,其示出了本发明另一实施例提供的视频拍摄方法的方法流程图,该视频拍摄方法应用于电子设备中,特别是采用Android系统的电子设备,该视频拍摄方法包括:
步骤201,获取拍摄到的视频数据;
电子设备在接收到用户触发的开始信号后,获取拍摄到的视频数据。视频数据通常包括图像帧(frame)数据和音频帧(sample)数据。若拍摄无声视频,则视频数据可以只包括图像帧数据,但本文中主要以视频数据同时包括图像帧数据和音频帧数据来举例说明。
电子设备获取图像帧数据的过程包括:电子设备调用Andorid系统提供的PreviewCallback接口,该PreviewCallback接口在摄像头每次拍摄到一帧图像帧数据时,自动调用onPreviewFrame回调函数返回当前图像帧数据。
电子设备获取音频帧数据的过程包括:电子设备调用Andorid系统提供的AudioRecord接口,该AudioRecord接口在麦克风每次采集到音频帧数据时,自动调用onPreiodicNotification回调函数返回当前音频帧数据。
另外,电子设备在接收到开始信号后,也即本次录制开始时,电子设备还新建一个与本次拍摄时间段对应的视频文件(此时为空文件),并调用FFmpeg(开源免费跨平台的音视频流方案)写该视频文件的文件头。
步骤202,将视频数据缓存到内存分配不受限制的native层;
电子设备在获取到图像帧数据时,将该图像帧数据缓存到内存分配不受限制的native层,native层是C代码运行的层,理论上可以使用电子设备所支持的全部可用物理内存,而不受限制。同理,电子设备在获取到音频帧数据时,将该音频帧数据也缓存到内存分配不受限制的native层。本步骤可以包括:
1、电子设备将视频数据的帧数据缓存在native层,该视频数据包括图像帧数据和音频帧数据中的前一种或者全部两种;
电子设备获取到一帧图像帧数据或者音频帧数据时,一方面将图像帧数据或音频帧数据的真实帧数据存储在native层中,另一方面将图像帧数据或音频帧数据的相关信息插入到预先在Java层创建的队列中。
2、电子设备将视频数据的相关信息缓存在预先创建在Java层的队列中,该相关信息包括各帧数据在native层中的存储位置和各帧数据所对应的时间。
图像帧数据或音频帧数据的相关信息可以不限于在native层中的存储位置和时间,本实施例仅以一帧数据的相关信息包括该帧数据在native层中的存储位置和该帧数据所对应的时间来举例说明。其中,该帧数据在native层中的存储位置可以用一个指针表示,该指针指向该帧数据在native层中的内存空间。
需要说明的是,图像帧数据的相关信息可以单独缓存在一个队列中,音频帧数据的相关信息可以单独缓存在另一个队列中。
步骤203,启动一个异步线程;
在本实施例中,除了用于缓存图像帧数据和音频帧数据的线程,电子设备还单独启动一个异步线程来完成视频编码。
步骤204,通过异步线程根据native层中缓存的视频数据编码得到视频文件。
电子设备通过异步线程根据native层中缓存的视频数据编码得到视频文件。也即,该异步线程不断从上述队列中读取native层中缓存的图像帧数据和音频帧数据,将读取到的图像帧数据和音频帧数据调用FFmpeg编码至上述步骤201中创建的视频文件中。
本实施例中以视频数据只包括同一时间段拍摄得到的视频数据为例,则电子设备根据队列中缓存的各帧数据各自在native层中的存储位置和各帧数据所对应的时间,从native层中读取各帧数据并顺序编码至同一个视频文件。
综上所述,本实施例提供的视频拍摄方法,通过获取拍摄到的视频数据,将视频数据缓存到内存分配不受限制的native层,根据native层中缓存的视频数据编码得到视频文件;解决了图像数据被缓存在Java层时,会频繁触发垃圾回收机制和发生内存溢出现象的问题;达到了不需要触发垃圾回收机制,也不会发生内存溢出现象的效果。
另一方面,背景技术中将图像帧数据缓存到Java层的线程和进行视频编码的线程通常为同一线程,如果onPreviewFrame回调函数被阻塞,则会导致编码得到的视频文件的帧速降低。而本实施例的视频拍摄方法,通过异步线程来单独进行视频编码,所以不会发生阻塞现象,从而可以提高编码得到的视频文件的帧速。
由于用户在拍摄视频时,还可能会使用断点拍摄。比如,用户要拍摄6秒时长的短视频,那么用户的手指触摸电子设备上显示的录制按钮时,开始录制视频;用户的手指离开电子设备上显示的录制按钮时,暂停录制视频;当用户的手指再次触摸电子设备上显示的录制按钮时,又继续录制视频,直至录满6秒时长的短视频。为了实现该断点拍摄,提供了如下实施例:
请参考图3,其示出了本发明另一实施例提供的视频拍摄方法的方法流程图,该视频拍摄方法应用于电子设备中,特别是采用Android系统的电子设备,该视频拍摄方法包括:
步骤301,获取拍摄到的视频数据;
电子设备在接收到用户触发的开始信号后,获取拍摄到的视频数据。视频数据通常包括图像帧(frame)数据和音频帧(sample)数据。若拍摄无声视频,则视频数据可以只包括图像帧数据,但本文中主要以视频数据同时包括图像帧数据和音频帧数据来举例说明。
电子设备获取图像帧数据的过程包括:电子设备调用Andorid系统提供的PreviewCallback接口,该PreviewCallback接口在摄像头每次拍摄到一帧图像帧数据时,自动调用onPreviewFrame回调函数返回当前图像帧数据。
电子设备获取音频帧数据的过程包括:电子设备调用Andorid系统提供的AudioRecord接口,该AudioRecord接口在麦克风每次采集到音频帧数据时,自动调用onPreiodicNotification回调函数返回当前音频帧数据。
另外,电子设备在每个时间段开始拍摄时,新建与当前时间段对应的视频文件。也即电子设备在断点拍摄的每个时间段开始拍摄时,新建与该时间段对应的视频文件(此时为空文件),并调用FFmpeg(开源免费跨平台的音视频流方案)写该视频文件的文件头。比如,在第1个时间段中拍摄时,新建视频文件1,在第2个时间段中拍摄时,新建视频文件2。
步骤302,将视频数据缓存到内存分配不受限制的native层;
电子设备在获取到图像帧数据时,将该图像帧数据缓存到内存分配不受限制的native层,native层是C代码运行的层,理论上可以使用电子设备所支持的全部可用物理内容,而不受限制。同理,电子设备在获取到音频帧数据时,将该音频帧数据也缓存到内存分配不受限制的native层。本步骤可以包括:
1、电子设备将视频数据的帧数据缓存在native层,该视频数据包括图像帧数据和音频帧数据中的前一种或者全部两种;
2、电子设备将视频数据的相关信息缓存在预先创建在Java层的队列中,该相关信息包括各帧数据在native层中的存储位置和各帧数据所对应的时间。
该相关信息的内容可以不限于存储位置和时间,以图像帧数据为例,每个图像帧数据的相关信息可以包括:该图像帧数据在native层中的存储位置、该图像帧数据的图像格式信息、该图像帧数据的数据量大小、该图像帧数据所对应的时间和该图像帧数据所对应的文件名。其中,该图像帧数据的图像格式信息、该图像帧数据的数据量大小和该图像帧数据所对应的文件名都是可选包括的内容。
其中,该图像帧数据在native层中的存储位置可以用一个指针表示,该指针指向native层中的一块内存空间,该内存空间存储着该图像帧数据。
另外,由于原始拍摄的图像帧数据的图像格式与最终视频文件中的期望格式可能不同,所以电子设备在缓存每帧图像帧数据的相关信息时,还缓存每帧图像帧数据的图像格式信息,图像格式信息包括图像的宽高和角度等。
还由于用户可能采用断点拍摄方式,所以电子设备还将视频数据中各帧数据各自所对应的视频文件名作为视频数据的一项相关信息缓存在队列中。以图像帧数据为例,每个图像帧数据所对应的文件名根据该图像帧数据所属于的拍摄时间段而定,不同时间段拍摄的图像帧数据对应不同的文件名,同一时间段拍摄的图像帧数据对应同一文件名。比如,在第1个时间段中拍摄的图像帧数据,都对应视频文件1,在第2个时间段中拍摄的图像帧数据,都对应视频文件2。同理,电子设备在缓存每帧音频帧数据时,还保存该帧音频帧数据所对应的视频文件名,比如,在第1个时间段中录制的音频帧数据,都对应视频文件1,在第2个时间段中录制的音频帧数据,都对应视频文件2。
比如,以图像帧数据为例,电子设备预先创建一个先进先出的队列,该队列中的每个元素包括(对应文件名,帧数据的指针,帧数据的数据大小,时间,帧数据的宽,帧数据的高),当onPreviewFrame回调函数获取到一帧图像帧数据时,将该图像帧数据的相关信息插入到预先创建的队列中,而该图像帧数据的实际帧数据缓存在native层中。
需要说明的是,图像帧数据的相关信息可以单独缓存在一个队列中,音频帧数据的相关信息可以单独缓存在另一个队列中。
步骤303,启动一个异步线程;
在本实施例中,除了用于缓存图像帧数据和音频帧数据的线程,电子设备还单独启动一个异步线程来完成视频编码。
步骤304,通过异步线程将各个时间段拍摄得到的视频数据分别编码至独立的一个视频文件;
如果视频数据包括不同时间段拍摄得到的视频数据,则电子设备将各个时间段拍摄得到的视频数据分别编码至独立的一个视频文件。也即,该异步线程不断根据各帧数据在队列中的相关信息,读取native层中缓存的图像帧数据和音频帧数据,将读取到的图像帧数据和音频帧数据调用FFmpeg编码至上述步骤301中创建的对应的视频文件中。
在电子设备将各个时间段拍摄得到的视频数据分别编码至独立的一个视频文件的过程中,电子设备根据视频数据中各帧数据各自所对应的视频文件名,将各帧数据顺序编码至对应的视频文件中。也即,若缓存的图像帧数据对应的视频文件名为视频文件1,则电子设备将该图像帧数据编码至视频文件1,若缓存的音频帧数据对应的视频文件名为视频文件2,则电子设备将该音频帧数据编码至视频文件2。其中,相关信息中的时间用于指示各帧数据的编码顺序和时间戳。
需要补充说明的是,如果原始拍摄的图像帧数据的图像格式与最终视频文件中的期望格式不同,则电子设备还在编码前将每帧图像帧数据根据步骤302中保存的图像格式信息仿射变换至期望格式。也即,在步骤302中,电子设备在队列中缓存每帧图像帧数据的相关信息时,预先将每帧图像帧数据的图像格式信息也作为一项相关信息进行缓存;所以电子设备在编码前可以将每帧图像帧数据根据保存的图像格式信息仿射变换至期望格式。
步骤305,将编码得到的至少两个视频文件合并为同一个视频文件。
电子设备将编码得到的至少两个视频文件合并为同一个视频文件,该同一个视频文件将作为最终的视频文件。
综上所述,本实施例提供的视频拍摄方法,通过获取拍摄到的视频数据,将视频数据缓存到内存分配不受限制的native层,根据native层中缓存的视频数据编码得到视频文件;解决了图像数据被缓存在Java层时,会频繁触发垃圾回收机制和发生内存溢出现象的问题;达到了不需要触发垃圾回收机制,也不会发生内存溢出现象的效果。
另一方面,背景技术中将图像帧数据缓存到Java层的线程和进行视频编码的线程通常为同一线程,如果onPreviewFrame回调函数被阻塞,则会导致编码得到的视频文件的帧速降低。而本实施例的视频拍摄方法,通过异步线程来单独进行视频编码,所以不会发生阻塞现象,从而可以提高编码得到的视频文件的帧速。
本实施例提供的视频拍摄方法,还通过在缓存视频数据的同时,还缓存图像帧数据和音频帧数据各自所对应的视频文件名,可以实现在编码时将不同帧数据编码至正确的视频文件中,从而实现了断点拍摄功能。
本实施例提供的视频拍摄方法,还通过在缓存图像帧数据的相关信息的同时,还缓存图像帧数据所对应的图像格式信息,可以实现在编码前将每帧图像帧数据根据图像格式信息仿射变换至期望格式的效果。
请参考图4,其示出了本发明一个实施例提供的视频拍摄装置的结构方框图。该视频拍摄装置可以通过软件、硬件或者两者的结合实现成为电子设备的全部或一部分。该视频拍摄装置包括:数据采集模块420、数据缓存模块440和数据编码模块460。
数据采集模块420,用于获取拍摄到的视频数据;
数据缓存模块440,用于将所述视频数据缓存到内存分配不受限制的native层;
数据编码模块460,用于根据所述native层中缓存的所述视频数据编码得到视频文件。
综上所述,本实施例提供的视频拍摄装置,通过获取拍摄到的视频数据,将视频数据缓存到内存分配不受限制的native层,根据native层中缓存的视频数据编码得到视频文件;解决了图像数据被缓存在Java层时,会频繁触发垃圾回收机制和发生内存溢出现象的问题;达到了不需要触发垃圾回收机制,也不会发生内存溢出现象的效果。
请参考图5,其示出了本发明一个实施例提供的视频拍摄装置的结构方框图。该视频拍摄装置可以通过软件、硬件或者两者的结合实现成为电子设备的全部或一部分。该视频拍摄装置包括:数据采集模块420、数据缓存模块440和数据编码模块460。
数据采集模块420,用于获取拍摄到的视频数据;
数据缓存模块440,用于将所述视频数据缓存到内存分配不受限制的native层;
数据编码模块460,用于根据所述native层中缓存的所述视频数据编码得到视频文件。
所述数据缓存模块440,包括:
数据缓存单元442,用于将所述视频数据的帧数据缓存在所述native层,所述视频数据包括图像帧数据和音频帧数据中的前一种或者全部两种;
信息缓存单元444,用于将所述视频数据的相关信息缓存在预先创建在Java层的队列中,所述相关信息包括各帧数据在所述native层中的存储位置和各帧数据所对应的时间。
所述数据编码模块460,包括:
同一编码单元462,用于若所述视频数据包括同一时间段拍摄得到的视频数据,则根据所述队列中缓存的所述各帧数据各自在所述native层中的存储位置和各帧数据所对应的时间,从所述native层中读取各帧数据并顺序编码至同一个视频文件。
所述数据编码模块460,包括:单独编码单元464和文件合并单元466;
所述单独编码单元464,用于若所述视频数据包括不同时间段拍摄得到的视频数据,则将各个时间段拍摄得到的所述视频数据分别编码至独立的一个视频文件;
所述文件合并单元466,用于将编码得到的至少两个所述视频文件合并为同一个视频文件。
所述装置,还包括:文件新建单元461;
所述文件新建单元461,用于在每个所述时间段开始拍摄时,新建与所述时间段对应的视频文件;
所述信息缓存单元444,还用于将所述视频数据中各帧数据各自所对应的视频文件名作为所述视频数据的一项相关信息缓存在所述队列中;
所述单独编码单元464,用于根据所述视频数据中各帧数据各自所对应的视频文件名,将所述各帧数据编码至对应的视频文件中。
可选地,所述装置,还包括:格式变换单元450;
所述信息缓存单元444,还用于在所述队列中缓存每帧所述图像帧数据的相关信息时,将每帧所述图像帧数据的图像格式信息也作为一项相关信息进行缓存;
所述格式变换单元450,用于在编码前将每帧所述图像帧数据根据所述图像格式信息仿射变换至期望格式。
所述装置,还包括:线程启动模块470;
所述线程启动模块470,用于启动一个异步线程;
所述数据编码模块460,用于通过所述异步线程执行所述根据所述native层中缓存的所述视频数据编码得到视频文件的步骤。
综上所述,本实施例提供的视频拍摄装置,通过获取拍摄到的视频数据,将视频数据缓存到内存分配不受限制的native层,根据native层中缓存的视频数据编码得到视频文件;解决了图像数据被缓存在Java层时,会频繁触发垃圾回收机制和发生内存溢出现象的问题;达到了不需要触发垃圾回收机制,也不会发生内存溢出现象的效果。
另一方面,背景技术中将图像帧数据缓存到Java层的线程和进行视频编码的线程通常为同一线程,如果onPreviewFrame回调函数被阻塞,则会导致编码得到的视频文件的帧速降低。而本实施例的视频拍摄方法,通过异步线程来单独进行视频编码,所以不会发生阻塞现象,从而可以提高编码得到的视频文件的帧速。
本实施例提供的视频拍摄装置,还通过在缓存视频数据的同时,还缓存图像帧数据和音频帧数据各自所对应的视频文件名,可以实现在编码时将不同帧数据编码至正确的视频文件中,从而实现了断点拍摄功能。
本实施例提供的视频拍摄装置,还通过在缓存图像帧数据的同时,还缓存图像帧数据所对应的图像格式信息,可以实现在编码前将每帧图像帧数据根据图像格式信息仿射变换至期望格式的效果。
需要说明的是:上述实施例提供的视频拍摄装置在拍摄视频时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的视频拍摄装置与视频拍摄方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
请参考图6,其示出了本发明一个实施例提供的电子设备的结构示意图。具体来讲:
电子设备600可以包括RF(Radio Frequency,射频)电路610、包括有一个或一个以上计算机可读存储介质的存储器620、输入单元630、显示单元640、传感器650、音频电路660、短距离无线传输模块670、包括有一个或者一个以上处理核心的处理器680、以及电源690等部件。本领域技术人员可以理解,图6中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路610可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器680处理;另外,将涉及上行的数据发送给基站。通常,RF电路610包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,RF电路610还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯系统)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(CodeDivision Multiple Access,码分多址)、WCDMA(Wideband Code Division MultipleAccess,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(ShortMessaging Service,短消息服务)等。
存储器620可用于存储软件程序以及模块,处理器680通过运行存储在存储器620的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器620可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备600的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器620还可以包括存储器控制器,以提供处理器680和输入单元630对存储器620的访问。
输入单元630可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元630可包括图像输入设备631以及其他输入设备632。图像输入设备631可以是摄像头,也可以是光电扫描设备。除了图像输入设备631,输入单元630还可以包括其他输入设备632。具体地,其他输入设备632可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元640可用于显示由用户输入的信息或提供给用户的信息以及电子设备1200的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元640可包括显示面板641,可选的,可以采用LCD(Liquid CrystalDisplay,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板641。
电子设备600还可包括至少一种传感器650,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板641的亮度,接近传感器可在电子设备600移动到耳边时,关闭显示面板641和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于电子设备600还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路660、扬声器661,传声器662可提供用户与电子设备600之间的音频接口。音频电路660可将接收到的音频数据转换后的电信号,传输到扬声器661,由扬声器661转换为声音信号输出;另一方面,传声器662将收集的声音信号转换为电信号,由音频电路660接收后转换为音频数据,再将音频数据输出处理器680处理后,经RF电路610以发送给比如另一电子设备,或者将音频数据输出至存储器620以便进一步处理。音频电路660还可能包括耳塞插孔,以提供外设耳机与电子设备600的通信。
短距离无线传输模块670可以使用WiFi技术,电子设备600通过短距离无线传输模块670可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图6示出了短距离无线传输模块670,但是可以理解的是,其并不属于电子设备600的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器680是电子设备600的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器620内的软件程序和/或模块,以及调用存储在存储器620内的数据,执行电子设备600的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器680可包括一个或多个处理核心;优选的,处理器680可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器680中。
电子设备600还包括给各个部件供电的电源690(比如电池),优选的,电源可以通过电源管理系统与处理器680逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源690还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,电子设备600还可以包括蓝牙模块等,在此不再赘述。
具体在本实施例中,当电子设备600为信息提供电子设备时,信息提供电子设备还包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行。上述一个或者一个以上程序包含用于进行以下操作的指令:
获取拍摄到的视频数据;
将所述视频数据缓存到内存分配不受限制的native层;
根据所述native层中缓存的所述视频数据编码得到视频文件。
可选地,所述将所述视频数据缓存到内存分配不受限制的native层,包括:
将所述视频数据的帧数据缓存在所述native层,所述视频数据包括图像帧数据和音频帧数据中的前一种或者全部两种;
将所述视频数据的相关信息缓存在预先创建在Java层的队列中,所述相关信息包括各帧数据在所述native层中的存储位置和各帧数据所对应的时间。
可选地,所述根据所述native层中缓存的所述视频数据编码得到视频文件,包括:
若所述视频数据包括同一时间段拍摄得到的视频数据,则根据所述队列中缓存的所述各帧数据各自在所述native层中的存储位置和各帧数据所对应的时间,从所述native层中读取各帧数据并顺序编码至同一个视频文件。
可选地,所述根据所述native层中缓存的所述视频数据编码得到视频文件,包括:
若所述视频数据包括不同时间段拍摄得到的视频数据,则将各个时间段拍摄得到的所述视频数据分别编码至独立的一个视频文件;
将编码得到的至少两个所述视频文件合并为同一个视频文件。
可选地,所述方法,还包括:
在每个所述时间段开始拍摄时,新建与所述时间段对应的视频文件;
所述将所述视频数据的相关信息缓存在预先创建在Java层的队列中,包括:
将所述视频数据中各帧数据各自所对应的视频文件名作为所述视频数据的一项相关信息缓存在所述队列中;
所述将各个时间段拍摄得到的视频数据分别编码至独立的一个视频文件,包括:
根据在所述队列中缓存的所述视频数据中各帧数据各自所对应的视频文件名,将所述各帧数据编码至对应的视频文件中。
可选地,所述方法,还包括:
在所述队列中缓存每帧所述图像帧数据的相关信息时,将每帧所述图像帧数据的图像格式信息也作为一项相关信息进行缓存;
在编码前将每帧所述图像帧数据根据所述图像格式信息仿射变换至期望格式。
可选地,所述方法,还包括:
启动一个异步线程;
通过所述异步线程执行所述根据所述native层中缓存的所述视频数据编码得到视频文件的步骤。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种视频拍摄方法,其特征在于,所述方法包括:
获取拍摄到的视频数据;
将所述视频数据缓存到内存分配不受限制的native层;
根据所述native层中缓存的所述视频数据编码得到视频文件,
所述将所述视频数据缓存到内存分配不受限制的native层,包括:
将所述视频数据的帧数据缓存在所述native层,所述视频数据包括图像帧数据和音频帧数据中的前一种或者全部两种;
将所述视频数据的相关信息缓存在预先创建在Java层的队列中,所述相关信息包括各帧数据在所述native层中的存储位置和各帧数据所对应的时间。
2.根据权利要求1所述的方法,其特征在于,所述根据所述native层中缓存的所述视频数据编码得到视频文件,包括:
若所述视频数据包括同一时间段拍摄得到的视频数据,则根据所述队列中缓存的所述各帧数据各自在所述native层中的存储位置和各帧数据所对应的时间,从所述native层中读取各帧数据并顺序编码至同一个视频文件。
3.根据权利要求1所述的方法,其特征在于,所述根据所述native层中缓存的所述视频数据编码得到视频文件,包括:
若所述视频数据包括不同时间段拍摄得到的视频数据,则将各个时间段拍摄得到的所述视频数据分别编码至独立的一个视频文件;
将编码得到的至少两个所述视频文件合并为同一个视频文件。
4.根据权利要求3所述的方法,其特征在于,所述方法,还包括:
在每个所述时间段开始拍摄时,新建与所述时间段对应的视频文件;
所述将所述视频数据的相关信息缓存在预先创建在Java层的队列中,包括:
将所述视频数据中各帧数据各自所对应的视频文件名作为所述视频数据的一项相关信息缓存在所述队列中;
所述将各个时间段拍摄得到的视频数据分别编码至独立的一个视频文件,包括:
根据在所述队列中缓存的所述视频数据中各帧数据各自所对应的视频文件名,将所述各帧数据编码至对应的视频文件中。
5.根据权利要求1至4任一所述的方法,其特征在于,所述方法,还包括:
在所述队列中缓存每帧所述图像帧数据的相关信息时,将每帧所述图像帧数据的图像格式信息也作为一项相关信息进行缓存;
在编码前将每帧所述图像帧数据根据所述图像格式信息仿射变换至期望格式。
6.根据权利要求1至4任一所述的方法,其特征在于,所述方法,还包括:
启动一个异步线程;
通过所述异步线程执行所述根据所述native层中缓存的所述视频数据编码得到视频文件的步骤。
7.一种视频拍摄装置,其特征在于,所述装置包括:
数据采集模块,用于获取拍摄到的视频数据;
数据缓存模块,用于将所述视频数据缓存到内存分配不受限制的native层;
数据编码模块,用于根据所述native层中缓存的所述视频数据编码得到视频文件,
所述数据缓存模块,包括:
数据缓存单元,用于将所述视频数据的帧数据缓存在所述native层,所述视频数据包括图像帧数据和音频帧数据中的前一种或者全部两种;
信息缓存单元,用于将所述视频数据的相关信息缓存在预先创建在Java层的队列中,所述相关信息包括各帧数据在所述native层中的存储位置和各帧数据所对应的时间。
8.根据权利要求7所述的装置,其特征在于,所述数据编码模块,包括:
同一编码单元,用于若所述视频数据包括同一时间段拍摄得到的视频数据,则根据所述队列中缓存的所述各帧数据各自在所述native层中的存储位置和各帧数据所对应的时间,从所述native层中读取各帧数据并顺序编码至同一个视频文件。
9.根据权利要求7所述的装置,其特征在于,所述数据编码模块,包括:单独编码单元和文件合并单元;
所述单独编码单元,用于若所述视频数据包括不同时间段拍摄得到的视频数据,则将各个时间段拍摄得到的所述视频数据分别编码至独立的一个视频文件;
所述文件合并单元,用于将编码得到的至少两个所述视频文件合并为同一个视频文件。
10.根据权利要求9所述的装置,其特征在于,所述装置,还包括:
文件新建单元;
所述文件新建单元,用于在每个所述时间段开始拍摄时,新建与所述时间段对应的视频文件;
所述信息缓存单元,还用于将所述视频数据中各帧数据各自所对应的视频文件名作为所述视频数据的一项相关信息缓存在所述队列中;
所述单独编码单元,用于根据所述视频数据中各帧数据各自所对应的视频文件名,将所述各帧数据编码至对应的视频文件中。
11.根据权利要求7至10任一所述的装置,其特征在于,所述装置,还包括:格式变换单元;
所述信息缓存单元,还用于在所述队列中缓存每帧所述图像帧数据的相关信息时,将每帧所述图像帧数据的图像格式信息也作为一项相关信息进行缓存;
所述格式变换单元,用于在编码前将每帧所述图像帧数据根据所述图像格式信息仿射变换至期望格式。
12.根据权利要求7至10任一所述的装置,其特征在于,所述装置,还包括:
线程启动模块;
所述线程启动模块,用于启动一个异步线程;
所述数据编码模块,用于通过所述异步线程执行所述根据所述native层中缓存的所述视频数据编码得到视频文件的步骤。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410201598.0A CN104967770B (zh) | 2014-05-14 | 2014-05-14 | 视频拍摄方法及装置 |
PCT/CN2015/078870 WO2015172719A1 (en) | 2014-05-14 | 2015-05-13 | Video shooting method and apparatus |
US15/213,659 US10136115B2 (en) | 2014-05-14 | 2016-07-19 | Video shooting method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410201598.0A CN104967770B (zh) | 2014-05-14 | 2014-05-14 | 视频拍摄方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104967770A CN104967770A (zh) | 2015-10-07 |
CN104967770B true CN104967770B (zh) | 2018-07-10 |
Family
ID=54221706
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410201598.0A Active CN104967770B (zh) | 2014-05-14 | 2014-05-14 | 视频拍摄方法及装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10136115B2 (zh) |
CN (1) | CN104967770B (zh) |
WO (1) | WO2015172719A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107341154A (zh) * | 2016-04-29 | 2017-11-10 | 北京京东尚科信息技术有限公司 | 一种数据导出的方法和装置 |
KR101926018B1 (ko) * | 2016-08-12 | 2018-12-06 | 라인 가부시키가이샤 | 동영상 녹화 방법 및 시스템 |
US10884641B2 (en) | 2019-04-16 | 2021-01-05 | Paypal, Inc. | Low latency gateway for an asynchronous orchestration engine using direct memory |
CN112905088B (zh) * | 2021-02-07 | 2022-11-04 | 北京蜂巢世纪科技有限公司 | 视频拍摄的控制方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609302A (zh) * | 2012-01-17 | 2012-07-25 | 中兴通讯股份有限公司 | 一种多媒体应用的并发管理方法和装置 |
CN102789381A (zh) * | 2011-12-31 | 2012-11-21 | 浙江创佳数字技术有限公司 | 一种在安卓系统上实现符合dvb标准的数字电视方法 |
CN103716691A (zh) * | 2012-09-29 | 2014-04-09 | 腾讯科技(深圳)有限公司 | 一种视频采集方法和装置 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7016595B1 (en) * | 1999-05-28 | 2006-03-21 | Nikon Corporation | Television set capable of controlling external device and image storage controlled by television set |
CN1193605C (zh) * | 2000-04-21 | 2005-03-16 | 松下电器产业株式会社 | 数据重放装置 |
US7647418B2 (en) * | 2001-06-19 | 2010-01-12 | Savvis Communications Corporation | Real-time streaming media measurement system and method |
US7657596B2 (en) * | 2002-10-24 | 2010-02-02 | Sun Microsystems, Inc. | Distributed data sharing methods and systems |
US20060069689A1 (en) * | 2004-06-08 | 2006-03-30 | Gregory Karklins | Method for accessing and browsing a PLC provided within a network |
KR100763193B1 (ko) * | 2005-10-13 | 2007-10-04 | 삼성전자주식회사 | Drm 라이센스 제공 방법 및 시스템 |
US20080131086A1 (en) * | 2006-09-01 | 2008-06-05 | Matthijs Hutten | Video content recording apparatus with syntax for video content recording parameters |
JP2009038488A (ja) * | 2007-07-31 | 2009-02-19 | Toshiba Corp | 映像撮影装置 |
JP5530146B2 (ja) * | 2009-09-30 | 2014-06-25 | 富士通テン株式会社 | データ管理装置、データ読取方法及びプログラム |
US9135036B2 (en) * | 2009-12-17 | 2015-09-15 | Broadcom Corporation | Method and system for reducing communication during video processing utilizing merge buffering |
JP5783737B2 (ja) * | 2011-02-02 | 2015-09-24 | キヤノン株式会社 | 撮像装置および動画記録装置の制御方法 |
US20120249853A1 (en) * | 2011-03-28 | 2012-10-04 | Marc Krolczyk | Digital camera for reviewing related images |
US9552376B2 (en) * | 2011-06-09 | 2017-01-24 | MemoryWeb, LLC | Method and apparatus for managing digital files |
JP5979549B2 (ja) * | 2012-03-06 | 2016-08-24 | パナソニックIpマネジメント株式会社 | 信号処理装置 |
US9697629B1 (en) * | 2013-01-22 | 2017-07-04 | Hypori, Inc. | System, method and computer product for user performance and device resolution settings |
US9942718B2 (en) * | 2013-07-03 | 2018-04-10 | Qualcomm Incorporated | Methods and apparatuses for use in providing location parameters to mobile applications |
-
2014
- 2014-05-14 CN CN201410201598.0A patent/CN104967770B/zh active Active
-
2015
- 2015-05-13 WO PCT/CN2015/078870 patent/WO2015172719A1/en active Application Filing
-
2016
- 2016-07-19 US US15/213,659 patent/US10136115B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102789381A (zh) * | 2011-12-31 | 2012-11-21 | 浙江创佳数字技术有限公司 | 一种在安卓系统上实现符合dvb标准的数字电视方法 |
CN102609302A (zh) * | 2012-01-17 | 2012-07-25 | 中兴通讯股份有限公司 | 一种多媒体应用的并发管理方法和装置 |
CN103716691A (zh) * | 2012-09-29 | 2014-04-09 | 腾讯科技(深圳)有限公司 | 一种视频采集方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US10136115B2 (en) | 2018-11-20 |
US20160330423A1 (en) | 2016-11-10 |
CN104967770A (zh) | 2015-10-07 |
WO2015172719A1 (en) | 2015-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106412662B (zh) | 时间戳分配方法及装置 | |
JP6186443B2 (ja) | 録音方法、再生方法、装置、端末、システム、プログラム及び記録媒体 | |
CN104853081B (zh) | 断点拍摄方法、装置及移动终端 | |
CN104811787A (zh) | 游戏视频录制方法及装置 | |
CN104519404B (zh) | 图像互换格式文件的播放方法及装置 | |
CN104967865B (zh) | 视频预览方法和装置 | |
CN104469143A (zh) | 视频分享方法及装置 | |
CN107454416A (zh) | 视频流发送方法和装置 | |
CN105338368A (zh) | 一种视频的直播流转点播数据的方法、装置及系统 | |
CN106973321B (zh) | 确定视频卡顿的方法及装置 | |
CN103699309B (zh) | 一种同步视频的录制方法、装置及移动终端 | |
CN104036536B (zh) | 一种定格动画的生成方法和装置 | |
CN103280232B (zh) | 音频记录方法、装置及终端设备 | |
CN104394481A (zh) | 视频播放方法及装置 | |
CN103686246B (zh) | 传输流视频选时播放方法、装置、设备及系统 | |
CN104967770B (zh) | 视频拍摄方法及装置 | |
CN109151494A (zh) | 多媒体数据传输方法、多媒体采集设备及服务器 | |
CN103269374A (zh) | 录音同步方法、装置和设备 | |
JP2020515932A (ja) | 指紋を取り込むための方法および関連製品 | |
CN105187692A (zh) | 视频拍摄方法及装置 | |
CN107018448A (zh) | 数据处理方法及装置 | |
CN105094513A (zh) | 用户头像设置方法、装置及电子设备 | |
CN103399911A (zh) | 基于浏览器客户端的访问处理方法、装置及终端设备 | |
CN104122981A (zh) | 应用于移动终端的拍照方法、拍照装置及移动终端 | |
CN104853193B (zh) | 视频压缩方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |