视频截图的获取方法、装置、设备及存储介质

文档序号:1415849 发布日期:2020-03-10 浏览:6次 >En<

阅读说明:本技术 视频截图的获取方法、装置、设备及存储介质 (Method, device and equipment for acquiring video screenshot and storage medium ) 是由 雷露 于 2018-08-31 设计创作,主要内容包括:本发明实施例公开了一种视频截图的获取方法、装置、设备及存储介质。该方法包括:接收到截图指令时,获取视频流缓存队列中的目标帧数据;将所述目标帧数据转换为RGB数据;根据所述RGB数据获得视频截图。本发明实施例提供的视频截图的获取方法,通过将视频流缓存队列中的目标帧数据转化为RGB数据来获得视频截图,使得获取到的截图质量不受智能终端像素或者当前播放视频的像素的影响,可以提高视频截图的分辨率,从而提高截图的质量。(The embodiment of the invention discloses a method, a device, equipment and a storage medium for acquiring a video screenshot. The method comprises the following steps: when a screenshot command is received, acquiring target frame data in a video stream cache queue; converting the target frame data into RGB data; and obtaining a video screenshot according to the RGB data. According to the method for acquiring the video screenshot, the video screenshot is acquired by converting the target frame data in the video stream cache queue into the RGB data, so that the acquired screenshot quality is not influenced by the pixels of the intelligent terminal or the pixels of the currently played video, the resolution of the video screenshot can be improved, and the screenshot quality is improved.)

视频截图的获取方法、装置、设备及存储介质

技术领域

本发明实施例涉及视频技术技术领域,尤其涉及一种视频截图的获取方法、装置、设备及存储介质。

背景技术

随着多媒体技术的快速发展,智能终端(如智能手机、平板电脑)已经成为人们生活工作中不可或缺的工具之一。用户在观看视频过程中如果看到优美的画面或者喜爱的场景时,希望通过截图保存下来。

现有技术中,智能终端或者视频播放软件具有截图功能,但是截图的流程在智能终端本地进行,受智能终端像素或者当前播放视频的像素的影响,使得截取到图片的分辨率较低,影响图片质量。

发明内容

本发明实施例提供一种视频截图的获取方法、装置、设备及存储介质,可以提高视频截图的分辨率,从而提高截图的质量。

第一方面,本发明实施例提供了一种视频截图的获取方法,该方法包括:

接收到截图指令时,获取视频流缓存队列中的目标帧数据;

将所述目标帧数据转换为RGB数据;

根据所述RGB数据获得视频截图。

进一步地,将所述目标帧数据转换为RGB数据,包括:

将所述目标帧数据转换为YUV数据;

将所述YUV数据转换为RGB数据。

进一步地,将所述目标帧数据转换为YUV数据,包括:

采用设定颜色编码方法将所述目标帧数据转换为YUV数据;

将所述YUV数据转换为RGB数据,包括:

采用设定转化算法将所述YUV数据转换为RGB数据。

进一步地,获取视频流缓存队列中的目标帧数据,包括:

获取当前最早进入视频流缓存队列中的帧数据,确定为目标帧数据。

进一步地,获取视频流缓存队列中的目标帧数据,包括:

获取截图指令的时间戳;

根据所述时间戳获取视频流缓存队列中的目标帧数据。

进一步地,根据所述RGB数据获得视频截图,包括:

将所述RGB数据封装成位图文件;

对所述位图文件进行渲染获得视频截图。

进一步地,获取视频流缓存队列中的目标帧数据,包括:

在native层,获取VideoQueue中的最新一帧AVFrame数据;

将所述目标帧数据转换为RGB数据,包括:

在java层,将所述AVFrame数据转换为RGB数据;

根据所述RGB数据获得视频截图,包括:

在java层,将所述RGB数据封装为Bitmap文件,并对所述Bitmap文件进行渲染获得视频截图。

第二方面,本发明实施例还提供了一种视频截图的获取装置,该装置包括:

目标帧数据获取模块,用于接收到截图指令时,获取视频流缓存队列中的目标帧数据;

RGB数据转换模块,用于将所述目标帧数据转换为RGB数据;

视频截图获取模块,用于根据所述RGB数据获得视频截图。:

第三方面,本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本发明实施例所述的视频截图的获取方法。

第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例所述的视频截图的获取方法。

本发明实施例,接收到截图指令时,首先获取视频流缓存队列中的目标帧数据,然后将所述目标帧数据转换为RGB数据,最后根据所述RGB数据获得视频截图。本发明实施例提供的视频截图的获取方法,通过将视频流缓存队列中的目标帧数据转化为RGB数据来获得视频截图,使得获取到的截图质量不受智能终端像素或者当前播放视频的像素的影响,可以提高视频截图的分辨率,从而提高截图的质量。

附图说明

图1是本发明实施例一中的一种视频截图的获取方法的流程图;

图2是本发明实施例一中的另一种视频截图的获取方法的流程图;

图3是本发明实施例二中的一种视频截图的获取装置的结构示意图;

图4是本发明实施例三中的一种移动设备的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1为本发明实施例一提供的一种视频截图的获取方法的流程图,本实施例可适用于对视频进行截图的情况,该方法可以由视频截图的获取装置来执行,该装置可由硬件和/或软件组成,并一般可集成在电脑、服务器以及所有包含视频截图的获取功能的终端中。如图1所示,该方法具体包括如下步骤:

步骤110,接收到截图指令时,获取视频流缓存队列中的目标帧数据。

其中,截图指令可以是用户通过终端设备上的相关按键输入的,或者终端设备在识别到预设的手势后产生的。视频流可以是直播视频流或者点播视频流。终端设备在通过视频播放器播放视频时,按照时间戳读取视频文件中的视频流,并对读取的视频流进行解码形成帧数据,帧数据被存入视频流缓存队列中,视频播放器再从视频流缓存队列中读取帧数据,对帧数据进行进一步的处理形成视频画面并在显示界面显示,从而实现对视频的播放。

其中,目标帧数据可以是当前最早进入视频流缓存队列中的帧数据或者与截图指令的时间戳相对应的帧数据。

本实施例中,用户在观看视频的过程中,当看到视频中出现感兴趣且想要保存下来的画面时,向终端设备输入截图指令。终端设备在接收到截图指令时,根据截图指令读取视频流缓存队列,从视频流缓存队列中获取到目标帧数据。

可选的,获取视频流缓存队列中的目标帧数据,可通过下述方式实施:获取当前最早进入视频流缓存队列中的帧数据,确定为目标帧数据。

其中,队列遵循先进先出的规则,最早进入视频流缓存队列中的帧数据对应的视频帧为即将在显示界面进行播放的视频帧,即当前视频帧队列中排在最前的帧数据。具体的,终端设备在接收到截图指令时,获取当前视频流缓存队列中排在最前的帧数据,以作为目标帧数据。用户在看到感兴趣的视频画面并想要截图时,想要获取与看到的画面最接近的截图,将当前视频流缓存队列中排在最前的帧数据作为目标帧数据,可以提高视频截图的准确性。

可选的,获取视频流缓存队列中的目标帧数据,可通过下述方式实施:获取截图指令的时间戳;根据时间戳获取视频流缓存队列中的目标帧数据。

其中,截图指令的时间戳可以是当前播放视频的播放进度对应的时间点,例如:用户输入截图指令时对应的视频播放至4分30秒20,那么4分30秒20就是截图指令的时间戳。视频流中的帧数据都携带时间戳,在获得截图指令的时间戳后,在视频流缓存队列中获取与该时间戳最近的帧数据,确定为目标帧数据。本实施例中,根据截图指令的时间戳确定目标帧数据,可以提高视频截图的准确性。

步骤120,将目标帧数据转换为RGB数据。

其中,RGB数据为携带了红绿蓝(Red Green Blue,RGB)颜色信息的数据,从RGB数据中可以获取到视频帧中每个像素点的颜色信息。

可选的,将目标帧数据转换为RGB数据,可通过下述方式实施:将目标帧数据转换为YUV数据;将YUV数据转换为RGB数据。

其中,YUV数据中的“Y”表示明亮度、“U”和“V”表示色度、浓度。可选的,将目标帧数据转换为YUV数据,可通过下述方式实施:采用设定颜色编码方法将目标帧数据转换为YUV数据。

其中,设定颜色编码方法可以是开源计算机视觉库(opencv)中的fmp()函数。具体的,在获得目标帧数据后,调用fmp()函数,将目标帧数据转化为YUV数据。

可选的,将YUV数据转换为RGB数据,可通过下述方式实施:采用设定转化算法将YUV数据转换为RGB数据。

其中,设定转化算法可以是是计算机开源视觉库中的格式转化算法。具体的,在获得YUV数据后,采用设定转化算法将YUV数据转化为RGB数据。

步骤130,根据RGB数据获得视频截图。

其中,视频截图为由目标帧数据形成的视频帧。

可选的,根据RGB数据获得视频截图,可通过下述方式实施:将RGB数据封装成位图文件;对位图文件进行渲染获得视频截图。

其中,位图文件可以是Bitmap类型的文件。具体的,在获得RGB数据后,对RGB数据进行封装,获得Bitmap文件,然后对Bitmap文件进行渲染获得视图截图。

可选的,图2为本发明实施例一提供的另一种视频截图的获取方法的流程图。如图2所示,该方法包括如下步骤:

步骤210,在native层,获取VideoQueue中的最早一帧AVFrame数据。

其中,其中,native层用于实现ijkplayer的核心功能。AVFrame数据为结构体数据。终端设备对视频流进行解码后获得AVFrame数据,并将AVFrame数据存入VideoQueue中。本应用场景下,当接收到截图指令后,采用shot_screen方法获取VideoQueue中的最早一帧AVFrame数据。

步骤220,在java层,将AVFrame数据转换为RGB数据。

java层与native层之间通过jni层实现代码间的调用。具体的,在获得AVFrame数据后,首先判断AVFrame数据的format是否是RGB格式的数据,如果不是,则将AVFrame数据转换为RGB数据。示例性的,可以调用sws_convert方法将AVFrame数据转换为RGB数据。如果是RGB格式的,则直接执行步骤230。

步骤230,在java层,将RGB数据封装为Bitmap文件,并对Bitmap文件进行渲染获得视频截图。

其中,Bitmap文件可以理解为安卓中的一个图片,可以显示在界面上,也可以保存为文件的形式。当需要显示界面上时,需要将Bitmap文件进行渲染,从而形成视频截图。

本实施例的技术方案,接收到截图指令时,首先获取视频流缓存队列中的目标帧数据,然后将所述目标帧数据转换为RGB数据,最后根据所述RGB数据获得视频截图。本发明实施例提供的视频截图的获取方法,通过将视频流缓存队列中的目标帧数据转化为RGB数据来获得视频截图,使得获取到的截图质量不受智能终端像素或者当前播放视频的像素的影响,可以提高视频截图的分辨率,从而提高截图的质量。

实施例二

图3为本发明实施例二提供的一种视频截图的获取装置的结构示意图。如图3所示,该装置包括:目标帧数据获取模块310,RGB数据转换模块320和视频截图获取模块330。

目标帧数据获取模块310,用于接收到截图指令时,获取视频流缓存队列中的目标帧数据;

RGB数据转换模块320,用于将所述目标帧数据转换为RGB数据;

视频截图获取模块330,用于根据所述RGB数据获得视频截图。

可选的,RGB数据转换模块320,还用于:

将所述目标帧数据转换为YUV数据;

将所述YUV数据转换为RGB数据。

可选的,RGB数据转换模块320,还用于:

采用设定颜色编码方法将所述目标帧数据转换为YUV数据;

采用设定转化算法将所述YUV数据转换为RGB数据。

可选的,目标帧数据获取模块310,还用于:

获取当前最早进入视频流缓存队列中的帧数据,确定为目标帧数据。

可选的,目标帧数据获取模块310,还用于:

获取截图指令的时间戳;

根据所述时间戳获取视频流缓存队列中的目标帧数据。

可选的,视频截图获取模块330,还用于:

将所述RGB数据封装成位图文件;

对所述位图文件进行渲染获得视频截图。

可选的,目标帧数据获取模块310,还用于:

采用shot_screen方法获取VideoQueue中的最早一帧AVFrame数据;

还用于,RGB数据转换模块320,还用于:

调用sws_convert方法将所述AVFrame数据转换为RGB数据;

视频截图获取模块330,还用于:

将所述RGB数据封装为Bitmap文件,并对所述Bitmap文件进行渲染获得视频截图。

上述装置可执行本发明前述所有实施例所提供的方法,具备执行上述方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明前述所有实施例所提供的方法。

实施例三

图4为本发明实施例三提供的一种移动设备的结构示意图,如图4所示,本实施例提供的一种移动设备,包括:处理器41和存储器42。该移动设备中的处理器可以是一个或多个,图4中以一个处理器41为例,所述移动设备中的处理器41和存储器42可以通过总线或其他方式连接,图4中以通过总线连接为例。

本实施例中移动设备的处理器41中集成了上述实施例提供的视频截图的获取装置。此外,该移动设备中的存储器42作为一种计算机可读存储介质,可用于存储一个或多个程序,所述程序可以是软件程序、计算机可执行程序以及模块,如本发明实施例中视频截图的获取方法对应的程序指令/模块。处理器41通过运行存储在存储器42中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述方法实施例中视频截图的获取方法。

存储器42可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器42可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器42可进一步包括相对于处理器41远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

处理器41通过运行存储在存储器42中的程序,从而执行各种功能应用以及数据处理,实现例本发明实施例提供的视频截图的获取方法。

实施例四

本发明实施例的计算机存储介质,其上存储有计算机程序,该程序被数据备份装置执行时实现如本发明实施例提供的视频截图的获取方法。

计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

10页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:内容分发系统、处理方法以及存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类