屏幕视频获取方法及装置与流程

文档序号:18940650发布日期:2019-10-23 01:07阅读:398来源:国知局
屏幕视频获取方法及装置与流程

本发明涉及终端技术领域,特别涉及一种屏幕视频获取方法及装置。



背景技术:

目前,在终端检测、远程控制或教学分享等诸多场景中,都需要通过录制终端屏幕显示的画面来获取屏幕视频,以通过屏幕视频分析终端的使用情况或展示终端的操作流程等。其中,屏幕视频是由屏幕的多个显示画面组成的视频,比如由终端的多个操作画面组成的操作流程视频等。

相关技术中,主要是在终端中安装具有屏幕录制功能的第三方应用,通过该第三方应用来获取屏幕视频。具体地,终端在安装了该第三方应用之后,当检测到用户对该第三方应用的启动操作时,可以通过该第三方应用调用系统自带的截图工具,通过该截图工具对屏幕的显示画面进行截图,同时还可以调用系统自带的图像处理工具,通过该图像处理工具将截图得到的屏幕图像转换成视频,以得到该终端的屏幕视频。

由于将屏幕图像转换成视频的操作是在待录制显示画面的终端中进行的,因此转换后的视频也需要存储在终端本地,这将占用终端的大量存储空间,当终端存储空间有限时,将无法获取较长时间的屏幕视频。而且由于屏幕视频数据的获取和生成都是在终端中处理实现的,因此还将占用终端的大量运算资源,可能会造成终端卡顿,影响用户的正常使用。



技术实现要素:

本发明实施例提供了一种屏幕视频获取方法及装置,可以用于解决相关技术中存在的占用终端大量存储空间和运算资源的问题。所述技术方案如下:

一方面,提供了一种屏幕视频获取方法,所述方法包括:

建立与第二终端之间的通信连接;

通过所述通信连接,从所述第二终端连续获取多个屏幕图像,所述多个屏幕图像是所述第二终端对屏幕的显示画面进行截图得到;

对连续获取的所述多个屏幕图像进行视频编码,得到所述第二终端的屏幕视频。

一方面,提供了一种屏幕视频获取装置,所述装置包括:

通信模块,用于建立与第二终端之间的通信连接;

获取模块,用于通过所述通信连接,从所述第二终端连续获取多个屏幕图像,所述多个屏幕图像是所述第二终端对屏幕的显示画面进行截图得到;

转换模块,用于将连续获取的所述多个屏幕图像进行视频编码,得到所述第二终端的屏幕视频。

一方面,提供了一种终端,其特征在于,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由所述处理器加载并执行以实现上述屏幕视频获取方法。

一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由处理器加载并执行以实现上述屏幕视频获取方法。

本发明实施例提供的技术方案带来的有益效果是:

本发明实施例中,对于待录制显示画面的第二终端来说,可以由第一终端通过与第二终端建立通信连接,连续获取第二终端的对自身屏幕进行截图得到的多个屏幕图像,然后对连续获取的多个屏幕图像进行视频编码,得到第二终端的屏幕视频,也即是,第二终端的屏幕视频可以由第一终端获取。由于将屏幕图像转换成视频的操作是在第一终端中实现的,且转换之后的视频将会存储在第一终端中,因此避免了对第二终端的存储空间和运算资源的占用,解决了无法录制较长时间的屏幕视频,以及第二终端可能会出现卡顿的问题。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1a是本发明实施例提供的一种屏幕视频获取系统示意图;

图1b是本发明实施例提供的另一种屏幕视频获取系统示意图;

图1c是本发明实施例提供的又一种屏幕视频获取系统示意图;

图1d是本发明实施例提供的一种屏幕视频获取方法的流程图;

图2是本发明实施例提供的另一种屏幕视频获取方法的流程图;

图3是本发明实施例提供的一种屏幕视频获取装置的结构示意图;

图4是本发明实施例提供的一种终端400的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

在对本发明实施例进行详细地解释说明之前,先对本发明实施例的系统架构进行说明。

图1a是本发明实施例提供的一种屏幕视频获取系统示意图,如图1a所示,该系统包括第一终端10和第二终端20,且第一终端10和第二终端20之间可以通过建立的通信连接进行通信。

其中,第一终端10为屏幕视频的获取端,第二终端20为屏幕视频的数据源,也即是,本发明实施例中,第二终端20的屏幕视频可以由第一终端10来获取。实际应用中,第一终端10和第二终端20可以为手机、平板电脑或者pc(personalcomputer,个人计算机)等。比如,第一终端10为手机,第二终端20为pc,由pc获取手机的屏幕视频。

具体地,当需要获取第二终端20的屏幕视频时,第一终端10可以建立与第二终端20之间的通信连接,通过该通信连接,从第二终端20连续获取第二终端20对自身屏幕的显示画面进行截图得到多个屏幕图像,并对连续获取的多个屏幕图像进行视频编码,得到第二终端20的屏幕视频。

实际应用中,第一终端10可以通过有线网络或无线网络,建立与第二终端20之间的通信连接。其中,有线网络可以为通过usb(universalserialbus,通用串行总线)等线路连接的网络,无线网络可以包括无线局域网或无线广域网。以无线局域网为例,该无线局域网可以为wifi(wireless-fidelity,无线保真)网络或蓝牙网络等。

进一步地,参见图1b,第一终端10具有视频转换功能11,第二终端20具有截图功能21。在第一终端10获取第二终端20的屏幕视频的过程中,第二终端20可以通过截图功能21对自身屏幕的显示画面进行截图,得到多个屏幕图像,第一终端10可以通过视频转换功能11,对连续获取的多个屏幕图像进行视频编码,得到屏幕视频。实际应用中,视频转换功能11和截图功能21均可以通过程序、插件或代码等形式实现。

进一步地,参见图1b,第一终端10还可以包括第一通信服务12和逻辑服务13,第二终端20还可以包括第二通信服务22。

其中,视频转换功能11、第一通信服务12和逻辑服务13之间可以通过第一终端10内部的通信总线或通信协议进行通信,比如该通信协议可以为tcp(transmissioncontrolprotocol,传输控制协议)。截图功能21和第二通信服务之间也可以通过第二终端20内部的通信总线或通信协议进行通信。

第一通信服务12,用于在第一终端10与第二终端20建立通信连接之后,与第二终端20中的第二通信服务22进行通信,以通过第一通信服务12与第二通信服务22之间的通信,实现第一终端10与第二终端20之间的通信。

第二通信服务22,用于接收截图功能11输出的屏幕图像,并将接收到的屏幕图像发送给第一通信服务12。

逻辑服务13为第一终端10实现获取屏幕视频功能的控制中心,可以通过第一通信服务12和第二终端服务22之间的通信,控制截图功能21的启动或停止,控制屏幕图像的读取或分发,以及控制视频转换功能11实现屏幕图像到视频的转换、视频文件的处理等。在一个实施例中,逻辑服务13可以通过外部脚本的方式控制视频转换功能11的运行。

以第一终端10为pc,第二终端20为android(安卓)系统的手机为例,在一个实施例中,该第一终端10中的视频转换功能11可以为ffmpeg(fastforwardmovingpicturesexpertsgroup,快速动态图像专家组),第一通信服务12可以为adbserver,逻辑服务13可以为逻辑server,第二终端20中的截图功能21可以为minicap,第二通信服务22可以为adbd。

其中,ffmpeg是一种用于对音视频的各种功能开发实现的开源项目,支持将图像转换为视频,以及视频分段和合成等技术。minicap是开源项目stf(smartphonetestfarm,手机测试农场)中的一个模块,用于对设备的屏幕进行截图。adbserver是pc中的通信工具,adbd是手机中的通信工具,adbserver和adbd用于与其他设备中的进程进行通信。

例如,参见图1c所示的屏幕视频获取系统,该系统包括第一终端10和第二终端20。其中,第一终端10为pc,第二终端20为android系统的手机,第一终端10与第二终端20之间可以通过usb或wifi建立通信连接。而且,第一终端10安装有adbserver、逻辑server和ffmpeg,第二终端20安装有adbd和minicap。

实际应用中,第一终端10可以分别运行adbserver的进程、逻辑server的进程以及ffmpeg的进程,且这3个进程之间可以通过tcp连接通信;第二终端20分别可以运行adbd的进程和minicap的进程,且这2个进程之间也可以通过tcp连接通信。

接下来将对本发明实施例的应用场景进行介绍。

本发明实施例提供的屏幕视频获取方法适用于需要对第二终端的屏幕所显示的画面进行录制,以得到第二终端的屏幕视频的场景中。实际应用中,在很多应用场景中都具有获取第二终端的屏幕视频的需求,获取的屏幕视频可以应用于下述使用场景:

1)利用第二终端的屏幕视频,回溯用户在第二终端上的操作流程,进而查看使用过程中的关键信息,使得某些bug的复现更加容易。

2)利用第二终端的屏幕视频,记录用户在第二终端上的操作流程,以防止用户在第二终端上的恶意操作,或者当用户在第二终端上进行恶意操作时,将第二终端的屏幕视频作为证据使用。

3)利用第二终端的屏幕视频,进行远程教学或分享。

需要说明的是,本发明实施例仅是将获取的屏幕视频应用于上述三种使用场景中为例进行说明,而实际应用中,获取的屏幕视频还可以应用于其他使用场景中。

实际应用中,可以在终端检测、远程控制或教学分享等应用场景中,获取第二终端的屏幕视频,并将获取的屏幕视频应用于上述使用场景。接下来将分别以远程控制和教学分享这两种应用场景为例进行介绍。

1)远程控制。

实际应用中,用户往往可以通过远程控制设备远程控制第二终端,以完成对第二终端的开发、调试或测试等工作。在远程控制第二终端的过程中,远程控制设备和第二终端都具有对第二终端屏幕的显示画面进行录制的需求,而且一般都需要录制较长时间,且录制过程中不能影响第二终端的正常使用。

其中,对于第二终端来说,获取第二终端的屏幕视频,可以用于后续回溯用户的操作过程;对于远程控制设备来说,获取第二终端的屏幕视频,可以用于记录用户的操作过程,进而防止恶意用户的恶意操作。

而且,相关技术中,远程控制设备获取第二终端的屏幕视频的流程通常为:由第二终端对自身屏幕的显示画面进行录制,得到屏幕视频,再将得到的屏幕视频发送给远程控制设备。

2)教学分享。

用户在使用第二终端的过程中,可以操作第二终端对自身屏幕的显示画面进行录制,得到屏幕视频,然后再将得到的屏幕视频制作成教学视频发布在教学分享平台上。

接下来将对本发明实施例提供的屏幕视频获取方法进行详细介绍。

图1d是本发明实施例提供的一种屏幕视频获取方法的流程图,该方法应用于上述图1a、图1b或图1c所示的系统中。参见图1d,该方法包括如下步骤:

步骤101:第一终端建立与第二终端之间的通信连接。

其中,第二终端为需要对屏幕的显示画面进行录制的终端,即屏幕视频的数据源;第一终端为第二终端的屏幕视频的获取端,即第二终端的屏幕视频是由第一终端来获取。

本发明实施例中,第一终端在获取第二终端的屏幕视频之前,需要预先建立与第二终端之间的通信连接。具体地,第一终端可以通过有线网络或无线网络,与第二终端建立通信连接。其中,有线网络可以为通过usb等线路连接的网络,无线网络可以包括无线局域网或无线广域网,无线局域网可以为wifi网络或蓝牙网络等。

实际应用中,第一终端和第二终端可以为手机、平板电脑或者pc等,本发明实施例中,将以第一终端为手机,第二终端为pc为例进行说明。例如,当用户需要获取手机的屏幕视频时,可以预先将pc与手机通过usb或者wifi等进行连接,以便pc与手机之间能够进行通信。

进一步地,在与第二终端建立通信连接之后,第一终端还可以在接收到针对第二终端的屏幕视频获取指令时,通过建立的通信连接,向第二终端发送启动指令,该启动指令用于指示第二终端将多个屏幕画面发送给第一终端,该多个屏幕画面是第一终端对自身屏幕的显示画面进行截图得到的。

也即是,该启动指令可以指示第一终端开始对自身屏幕的显示画面进行截图,并将截图得到的多个屏幕图像发送给第一终端,以便第一终端能够获取到第二终端的多个屏幕图像,并基于获取的多个屏幕图像生成屏幕视频。

其中,该屏幕视频获取指令用于指示第一终端获取第二终端的屏幕视频,且该屏幕视频获取指令可以由用户在第一终端上触发。例如,第一终端建立与第二终端之间的通信连接之后,可以显示针对第二终端的屏幕视频获取界面,该屏幕视频获取界面可以包括开始选项,用户可以通过点击该开始选项触发该屏幕视频获取指令。

进一步地,该启动指令还可以指示第二终端通过截图功能获取多个屏幕图像,并将该多个屏幕图像发送给第一终端。

其中,该截图功能是指用于实现对第二终端的屏幕的显示画面进行截图,得到多个屏幕图像的功能。实际应用中,该截图功能可以通过程序、插件或代码等形式实现,例如,以该截图功能为插件为例,该截图功能可以为minicap。实际实现时,该启动指令可以携带该截图功能的标识,以便通过该截图功能的标识指示第二终端通过该截图功能获取多个屏幕图像。

进一步地,该启动指令还可以指示第二终端每当通过该截图功能得到一个截图图像时,将该截图图像压缩成目标格式图像,并将压缩的目标格式图像作为屏幕图像,通过通信连接发送给第一终端。

其中,该目标格式图像是指数据量小于截图图像的图像,例如,该目标格式图像可以为jpeg(jointphotographicexpertsgroup,联合图像专家小组)格式的图像。通过指示第二终端将截图图像压缩成数据量更小的目标格式图像的图像,可以节约屏幕图像的存储空间,提高屏幕图像的传输效率。

进一步地,该启动指令还可以指示第二终端按照预设截图策略,连续对自身屏幕的显示画面进行截图。其中,该预设截图策略可以包括第一截图策略或第二截图策略,第一截图策略是指每隔第二预设时长对自身屏幕的显示画面进行截图的截图策略,第二截图策略是指每当检测到自身屏幕的显示画面发生改变时,对改变后的显示画面进行截图的截图策略。当然,该预设截图策略也可以为其他截图策略,本发明实施例对此不做限定。

其中,第一截图策略能够截取按照时间顺序连续显示的画面,且操作简单,易于实现。第二截图策略能够截取不断变化的显示画面,且能够避免当显示画面长时间不变时,对相同的显示画面进行多次截图,从而节省处理资源。

进一步地,该启动指令还可以指示第二终端何时停止对自身屏幕的显示画面进行截图。例如,该启动指令还可以携带截图停止时间或截图定时时长,以便通过截图停止时间或截图定时时长指示第二终端何时停止截图。

进一步地,在向第二终端发送启动指令之前,第一终端还可以通过该通信连接向第二终端发送控制指令,该控制指令用于指示第二终端调用该截图功能。

需要说明的是,当该截图功能为截图程序、截图插件或截图代码时,调用该截图功能是指安装该截图程序、截图插件或截图代码。

具体地,第一终端可以先检测第二终端是否具有该截图功能,当检测到第二终端不具有该截图功能时,再向该第二终端发送该控制指令。例如,以该截图功能为截图插件为例,在第一终端建立与第二终端的通信连接之后,可以检测第二终端是否安装了该截图插件,当检测到未安装该截图插件时,可以向第二终端发送控制指令,以通过该控制指令指示第二终端安装该截图插件。

实际应用中,第一终端通过控制指示第二终端安装该截图插件可以包括以下两种方式:1,第一终端向第二终端发送控制指令,该控制指令携带该截图插件的安装文件,第二终端接收到该控制指令之后,可以通过运行该安装文件安装该截图插件。2,第一终端向第二终端发送控制指令,该控制指令用于指示第二终端从网络上下载该截图插件的安装文件,并通过运行该安装文件安装该截图插件。

步骤102:第二终端对屏幕的显示画面进行截图,得到多个屏幕图像。

在与第一终端建立通信连接之后,第二终端可以对自身屏幕的显示画面进行截图,并将截图得到的多个屏幕图像通过该通信连接发送给第一终端。

具体地,第二终端可以在接收到第一终端发送的启动指令时,根据该启动指令开始对自身屏幕的显示画面进行截图,并将截图得到的屏幕图像通过该通信连接发送给第一终端。

进一步地,第二终端可以根据该启动指令,按照预设截图策略连续对自身屏幕的显示画面进行截图,并将连续得到的多个屏幕图像发送给第一终端,使得连续得到的多个屏幕图像能够展示第二终端的使用过程。

其中,该多个屏幕图像可以用于表征第二终端的屏幕每隔第二预设时长显示的画面,也可以用于表征第二终端的屏幕显示画面的变化,本发明实施例对此不做限定。也即是,第二终端可以按照上述第一截图策略或第二截图策略进行截图,相应地,第二终端按照预设截图策略,连续对自身屏幕的显示画面进行截图的操作可以包括以下两种实现方式:

第一种实现方式:第二终端每隔第二预设时长对自身屏幕的显示画面进行截图。

其中,该预设时长可以预先设置,且可以由第二终端预先设置,也可以由第一终端和第二终端协商设置。例如,该预设时长可以为1s、5s或10s等。

采用第一种实现方式进行截图,连续截图得到的多个屏幕图像就是屏幕每隔预设时长显示的一帧画面,这样就可以通过连续截图得到的多个屏幕图像顺序展示第二终端的使用过程。

第二种实现方式:第二终端每当检测到自身屏幕的显示画面发生改变时,对发生改变后的显示画面进行截图。

第二终端在运行过程中,可以检测自身屏幕的显示画面是否发生了改变,每当检测到发生了改变时,对屏幕的显示画面进行截图,如此可以截取得到屏幕连续显示且内容不同的多个显示画面。而且,屏幕的显示画面发生改变通常都是由用户的操作引发的,因此,采用第二种方式连续获取的多个屏幕图像能够展示用户的操作流程。

实际应用中,第二终端可以通过屏幕接口或底层的系统事件,来检测屏幕的显示画面是否发生改变,当然也可以通过其他方式进行检测,本发明实施例对此不做限定。

进一步地,第二终端还可以根据该启动指令,通过截图功能连续对屏幕的显示画面进行截图。

其中,该截图功能可以通过程序、插件或代码等形式实现,而且,该截图功能可以为系统原生的截图功能,也可以为第三方供应商提供的第三方截图功能,比如,该第三方截图功能可以为第三方截图程序或第三方截图插件等。

实际应用中,由于第三方截图功能具有截图效率高和兼容性高等优点,因此本发明实施例优先使用第三方截图功能。进一步地,该第三方截图功能还可以为开源的截图功能,开源是指开放源代码,开源的截图功能能够进一步提高截图效率。

进一步地,第二终端在通过该截图功能进行截图时,还可以在每当通过该截图功能得到一个截图图像时,将该截图图像压缩成目标格式图像,并将该目标格式图像作为屏幕图像,通过该通信连接发送给第一终端。

具体地,该第二终端可以通过该截图功能将该截图图像压缩成目标格式图像,也可以通过其他方式将该截图图像压缩成目标格式图像,本发明实施例对此不做限定。

例如,该第二终端可以通过安装的第三方截图插件,将该截图图像压缩成目标格式图像。示例的,当第二终端为android系统的终端时,该第二终端安装的第三方截图插件可以为minicap。minicap是stf的一个模块,负责从android设备中截取屏幕的显示画面,并通过图像压缩算法对截图图像进行压缩,以将截图图像转换成jpeg格式的图像。

实际应用中,第二终端可以在每当截图得到一个屏幕图像时,就将该屏幕图像发送给第一终端,也可以在截图得到预设数目的屏幕图像时,再将该预设数目的屏幕图像一起发送给第一终端,当然也可以采用其他方式进行发送,本发明实施例对此不做限定。

步骤103:第一终端通过该通信连接,从第二终端连续获取多个屏幕图像。

具体地,第一终端可以通过建立的通信连接,连续接收第二终端发送的多个屏幕图像,且这多个屏幕图像是第二终端对自身屏幕的显示画面连续进行截图得到。

其中,连续接收第二终端发送的多个屏幕图像的操作可以包括:接收第二终端每隔第一预设时长发送的屏幕图像,或者接收第二终端在检测到自身屏幕的显示画面发生变化时发送的屏幕图像。其中,该第一预设时长和上述第二预设时长可以相同也可以不同,本发明实施例对此不做限定。

进一步地,参见图1b,第一终端与第二终端建立通信连接之后,第一终端中的第一通信服务可以与第二终端中的第二通信服务进行通信,并可以通过第一通信服务与第二通信服务之间的通信,从第二终端连续获取屏幕图像。

实际应用中,第一通信服务和第二通信服务可以为adbserver或adbd等,例如,当第一终端为pc、第二终端手机时,第一通信服务可以为adbserver,第二通信服务可以为adbd。adbserver是pc中的通信工具,adbd是手机中的通信工具,用于与其他设备中的进程进行通信。

需要说明的是,本发明实施例仅是以第一终端在从第二终端连续获取多个屏幕图像之前,先执行建立与第二终端之间的通信连接的步骤为例进行说明,而实际应用中,当在从第二终端连续获取多个屏幕图像之前,第一终端与第二终端已经建立了通信连接时,还可以不执行上述步骤101,直接基于已经建立的通信连接从第二终端获取屏幕图像。

步骤104:第一终端对连续获取的多个屏幕图像进行视频编码,得到第二终端的屏幕视频。

通过对连续获取的多个屏幕图像进行视频编码,即可将该多个屏幕图像转换成屏幕视频,而且,还可以将转换的屏幕视频存储在第一终端中。

其中,该屏幕视频可以用于远程教学或分享、回溯用户的操作流程或者防止用户的恶意操作等等。例如,用户可以将第一终端转换得到的屏幕视频上传到网络或云端,以供其他用户观看或下载。

具体地,第一终端在从第二终端连续获取多个屏幕图像的过程中,当获取到第一个屏幕图像时,可以先对第一个屏幕图像进行视频编码,以将第一个屏幕图像转换为视频,后续每当获取到一个屏幕图像时,可以继续对获取到的屏幕图像进行视频编码,以将获取到的屏幕图像添加到该视频中,如此即可实现将连续获取的多个屏幕图像转换成屏幕视频。

进一步地,第一终端还可以在接收到获取屏幕视频的停止指令,或者当前时间到达预先设定的停止时间时,或者检测到第二终端的屏幕所显示的画面长时间未发生改变时,停止从第二终端获取屏幕图像以及视频编码,并将当前将已转换得到的视频作为最终的屏幕视频。

实际应用中,从第二终端获取屏幕图像的进程和对获取的屏幕图像进行视频编码的进程可以同步进行,转换过程中,第二终端的屏幕视频对应的视频文件的数据量将会逐渐增大,当停止转换时,第二终端的屏幕视频也就制作完成。

进一步地,该第一终端可以还通过视频转换功能,对连续获取的多个屏幕图像进行视频编码,得到第二终端的屏幕视频。

其中,该视频转换功能可以通过程序、插件或代码等形式实现,而且,该视频转换功能可以为系统原生的视频转换功能,也可以为第三方供应商提供的第三方视频转换功能,本发明实施例对此不做限定。

进一步地,该第三方视频转换功能可以为开源的视频转换功能,通过开源的视频转换功能进行视频转换,可以提高视频转换效率。在一个实施例中,该第三方视频转换功能可以为ffmpeg。

另外,当第二终端为具有横竖屏模式的智能终端时,第二终端在使用过程中还可能会进行横竖屏转换,这种情况下,从第二终端连续获取的屏幕图像可能既包括横屏模式下截取的屏幕图像,也包括竖屏模式下截取的屏幕图像,当连续获取的两个屏幕图像的横竖屏模式不同时,如果按照相同的方式将这两个屏幕图像添加到转换的视频中,将可能会造成视频画面的拉伸。

例如,如果当前已转换的视频均是根据竖屏模式的屏幕图像转换的视频,当再次获取到一个横屏模式的屏幕图像时,如果仍按照竖屏模式的处理方式将该横屏模式的屏幕图像添加到视频中,则需要先将该横屏模式的屏幕图像的高度进行拉伸,以使拉伸后的高度与竖屏模式的屏幕图像的高度相同,之后,再将拉伸后的横屏模式的屏幕图像添加到视频中,这样显然会造成视频画面的拉伸,影响视频的显示效果。

为了避免视频转换过程中视频画面的拉伸,本发明实施例中,对连续获取的多个屏幕图像进行视频编码,得到第二终端的屏幕视频的操作可以包括:按照第一图像规格,对连续获取的横屏模式的屏幕图像进行视频编码,得到横屏分段视频,第一图像规格是基于横屏模式的屏幕图像的高度和宽度确定得到;按照第二图像规格,对连续获取的竖屏模式的屏幕图像进行视频编码,得到竖屏分段视频,第二图像规格是基于所述竖屏模式的屏幕图像的高度和宽度确定得到;将横屏分段视频和竖屏分段视频进行合成,得到该屏幕视频。

也即是,可以将连续获取的同一种横竖屏模式的屏幕图像转换为一个分段视频中,将不同横竖屏模式的屏幕图像转换为不同的分段视频中,然后再将不同的分段视频进行合成,得到最终的屏幕视频。通过将不同横竖屏模式的屏幕图像按照不同的图像规格,转换到不同的分段视频中,然后再进行合成,可以避免采用相同的处理方式进行转换时出现的视频画面拉伸的问题。

进一步地,第二终端可以还通过逻辑服务对整个获取屏幕视频的过程进行控制。例如,第二终端可以包括逻辑服务和视频转换功能,逻辑服务可以通过外部脚本的方式,控制视频转换功能的运行。

在一个实施例中,以该视频转换功能为ffmpeg为例,逻辑服务启动ffmpeg的关键代码可以如下所示:

$ffmpeg$args-vwarning-n-r25-itcp://0.0.0.0:$listen_port?listen=1-c:vlibx264$output_file

上述关键代码是逻辑服务动态生成的,主要包含ffmpeg的位置、运行中的参数、监听的本地端口、输出的视频文件位置和采用的压缩算法等。

具体地,$ffmpeg用于指示ffmpeg的路径位置,能够指定可执行文件;$args是逻辑服务预先设置的参数列表,用于自定义转换的参数;$listen_port是服务端的监听端口;libx264是采用的压缩算法;$output_file是输出视频文件的位置。

需要说明的是,在逻辑服务和视频转换功能交互过程中,本发明实施例仅是以逻辑服务通过外部脚本的方式来控制视频转换功能为例进行说明,这种控制方式易于维护,但实际应用中,也可以去掉外部脚本,直接集成逻辑服务和视频转换功能的进程,本发明实施例对此不做限定。

本发明实施例中,对于待录制显示画面的第二终端来说,可以由第一终端通过与第二终端建立通信连接,连续获取第二终端的对自身屏幕进行截图得到的多个屏幕图像,然后对连续获取的多个屏幕图像进行视频编码,得到第二终端的屏幕视频,也即是,第二终端的屏幕视频可以由第一终端获取。由于将屏幕图像转换成视频的操作是在第一终端中实现的,且转换之后的视频将会存储在第一终端中,因此避免了对第二终端的存储空间和运算资源的占用,解决了无法录制较长时间的屏幕视频,以及第二终端可能会出现卡顿的问题,提供了一种稳定高效的屏幕视频获取方法,在长时间、大视频文件的屏幕视频获取场景中具有较为明显的优势。

接下来将以图1d所示的屏幕视频获取系统为例,对本发明实施例提供的屏幕视频获取方法进行说明。图2是本发明实施例提供的另一种屏幕视频获取方法的流程图,如图2所示,该方法包括:

步骤201:第一终端的逻辑server接收针对第二终端的屏幕视频获取指令。

步骤202:逻辑server根据该屏幕视频获取指令,控制第一终端检查第一终端和第二终端的设备环境。如果检查通过,执行步骤203;如果检查未通过,执行步骤211。

具体地,第一终端可以通过检查第一终端和第二终端之间是否成功建立通信连接,第一终端是否安装了ffmpeg,第二终端是否安装了minicap等,确定检查是否通过。例如,可以在确定第一终端和第二终端之间成功建立了通信连接,第一终端安装了ffmpeg,第二终端安装了minicap时,确定检查通过。

步骤203:逻辑server建立与adbserver之间的tcp连接。

步骤204:逻辑server通过adbserver,启动第二终端的minicap进程。当启动成功时,执行步骤205。

具体地,逻辑server可以通过adbserver与第二终端的adbd之间的通道,向第二终端的minicap发送启动指令,以通过该启动指令启动minicap进程。

minicap进程用于对第二终端屏幕的显示画面进行截图,并可以将截图得到的屏幕图像,通过adbd和adbserver之间的通道发送给逻辑server。

步骤205:检测minicap进程是否启动成功。如果启动成功,执行步骤206,如果启动失败,执行步骤211。

步骤206:逻辑server启动第一终端的ffmpeg进程。

当minicap进程启动成功时,逻辑server可以继续启动ffmpeg进程。具体地,逻辑server可以通过外部脚本启动ffmpeg进程。

当然,在另一实施例中,逻辑server还可以同时启动第二终端的minicap进程和第一终端的ffmpeg进程,本发明实施例对此不做限定。

步骤207:逻辑server建立与ffmpeg进程之间的tcp连接。

步骤208:逻辑server读取minicap进程输出的屏幕图像。

步骤209:逻辑server将读取的屏幕图像发送给ffmpeg进程,以通过ffmpeg进程将屏幕图像转换成视频,进而得到第二终端的屏幕视频。

步骤210:逻辑server将屏幕视频对应的视频文件存储在第一终端。

步骤211:结束。

需要说明的是,图2实施例仅是以图1d所示的屏幕视频获取系统为例,对本发明实施例提供的屏幕视频获取方法进行说明,但图2实施例并不构成对本发明实施例提供的屏幕视频获取方法的限定。

图3是本发明实施例提供的一种屏幕视频获取装置的结构示意图,如图3所示,该装置包括通信模块301,获取模块302和转换模块303。

通信模块301,用于建立与第二终端之间的通信连接;

获取模块302,用于通过建立的通信连接,从该第二终端连续获取多个屏幕图像,该多个屏幕图像是该第二终端对屏幕的显示画面进行截图得到;

转换模块303,用于对连续获取的该多个屏幕图像进行视频编码,得到该第二终端的屏幕视频。

可选地,该装置还包括:

发送模块,用于当接收到针对该第二终端的屏幕视频获取指令时,通过该通信连接,向该第二终端发送启动指令,该启动指令用于指示该第二终端将该多个屏幕图像发送给该第一终端;

该获取模块,还用于通过该通信连接,连续接收该第二终端发送的该多个屏幕图像。

可选地,该获取模块302具体用于:

接收该第二终端每隔第一预设时长发送的屏幕图像;

或,

接收该第二终端在检测到该屏幕的显示画面发生变化时发送的屏幕图像。

可选地,该启动指令用于指示该第二终端通过截图功能获取该多个屏幕图像,将该多个屏幕图像发送给该第一终端。

可选地,该启动指令还用于指示该第二终端每当通过该截图功能得到一个截图图像时,将该截图图像压缩成目标格式图像,并将该目标格式图像作为屏幕图像,通过该通信连接发送给该第一终端。

可选地,该发送模块还用于:

在向该第二终端发送该启动指令之前,通过该通信连接,向该第二终端发送控制指令,该控制指令用于指示该第二终端调用该截图功能。

可选地,该预设截图策略包括第一截图策略或第二截图策略,该第一截图策略是指每隔预设时长对该屏幕的显示画面进行截图的截图策略,该第二截图策略是指每当检测到该屏幕的显示画面发生改变时,对改变后的显示画面进行截图的截图策略。

可选地,该多个屏幕图像用于表征该屏幕每隔第二预设时长显示的画面,或者用于表征该屏幕显示画面的变化。

可选地,该转换模块303包括:

第一转换单元,用于按照第一图像规格,对连续获取的横屏模式的屏幕图像进行视频编码,得到横屏分段视频,该第一图像规格是基于该横屏模式的屏幕图像的高度和宽度确定得到;

第二转换单元,用于按照第二图像规格,对连续获取的竖屏模式的屏幕图像进行视频编码,得到竖屏分段视频,该第二图像规格是基于该竖屏模式的屏幕图像的高度和宽度确定得到;

合成单元,用于将该横屏分段视频和该竖屏分段视频进行合成,得到该屏幕视频。

本发明实施例中,对于待录制显示画面的第二终端来说,可以由第一终端通过与第二终端建立通信连接,连续获取第二终端的对自身屏幕进行截图得到的多个屏幕图像,然后对连续获取的多个屏幕图像进行视频编码,得到第二终端的屏幕视频,也即是,第二终端的屏幕视频可以由第一终端获取。由于将屏幕图像转换成视频的操作是在第一终端中实现的,且转换之后的视频将会存储在第一终端中,因此避免了对第二终端的存储空间和运算资源的占用,解决了无法录制较长时间的屏幕视频,以及第二终端可能会出现卡顿的问题。

需要说明的是:上述实施例提供的屏幕视频获取装置在获取屏幕视频时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的屏幕视频获取装置与屏幕视频获取方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图4是本发明实施例提供的一种终端400的结构示意图。该终端400可以是上述图1d或图2实施例所述的第一终端或第二终端,具体地,该终端可以是:智能手机、平板电脑、mp3播放器(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端400还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。

通常,终端400包括有:处理器401和存储器402。

处理器401可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器401可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器401也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(centralprocessingunit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器401可以在集成有gpu(graphicsprocessingunit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器401还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。

存储器402可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器402还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器402中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器401所执行以实现本申请中方法实施例提供的屏幕视频获取方法。

在一些实施例中,终端400还可选包括有:外围设备接口403和至少一个外围设备。处理器401、存储器402和外围设备接口403之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口403相连。具体地,外围设备包括:射频电路404、触摸显示屏405、摄像头406、音频电路407、定位组件408和电源409中的至少一种。

外围设备接口403可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器401和存储器402。在一些实施例中,处理器401、存储器402和外围设备接口403被集成在同一芯片或电路板上;在一些其他实施例中,处理器401、存储器402和外围设备接口403中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。

射频电路404用于接收和发射rf(radiofrequency,射频)信号,也称电磁信号。射频电路404通过电磁信号与通信网络以及其他通信设备进行通信。射频电路404将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路404包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路404可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2g、3g、4g及5g)、无线局域网和/或wifi(wirelessfidelity,无线保真)网络。在一些实施例中,射频电路404还可以包括nfc(nearfieldcommunication,近距离无线通信)有关的电路,本申请对此不加以限定。

显示屏405用于显示ui(userinterface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏405是触摸显示屏时,显示屏405还具有采集在显示屏405的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器401进行处理。此时,显示屏405还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏405可以为一个,设置终端400的前面板;在另一些实施例中,显示屏405可以为至少两个,分别设置在终端400的不同表面或呈折叠设计;在再一些实施例中,显示屏405可以是柔性显示屏,设置在终端400的弯曲表面上或折叠面上。甚至,显示屏405还可以设置成非矩形的不规则图形,也即异形屏。显示屏405可以采用lcd(liquidcrystaldisplay,液晶显示屏)、oled(organiclight-emittingdiode,有机发光二极管)等材质制备。

摄像头组件406用于采集图像或视频。可选地,摄像头组件406包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及vr(virtualreality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件406还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。

音频电路407可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器401进行处理,或者输入至射频电路404以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端400的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器401或射频电路404的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路407还可以包括耳机插孔。

定位组件408用于定位终端400的当前地理位置,以实现导航或lbs(locationbasedservice,基于位置的服务)。定位组件408可以是基于美国的gps(globalpositioningsystem,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。

电源409用于为终端400中的各个组件进行供电。电源409可以是交流电、直流电、一次性电池或可充电电池。当电源409包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。

在一些实施例中,终端400还包括有一个或多个传感器410。该一个或多个传感器410包括但不限于:加速度传感器411、陀螺仪传感器412、压力传感器413、指纹传感器414、光学传感器415以及接近传感器416。

加速度传感器411可以检测以终端400建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器411可以用于检测重力加速度在三个坐标轴上的分量。处理器401可以根据加速度传感器411采集的重力加速度信号,控制触摸显示屏405以横向视图或纵向视图进行用户界面的显示。加速度传感器411还可以用于游戏或者用户的运动数据的采集。

陀螺仪传感器412可以检测终端400的机体方向及转动角度,陀螺仪传感器412可以与加速度传感器411协同采集用户对终端400的3d动作。处理器401根据陀螺仪传感器412采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变ui)、拍摄时的图像稳定、游戏控制以及惯性导航。

压力传感器413可以设置在终端400的侧边框和/或触摸显示屏405的下层。当压力传感器413设置在终端400的侧边框时,可以检测用户对终端400的握持信号,由处理器401根据压力传感器413采集的握持信号进行左右手识别或快捷操作。当压力传感器413设置在触摸显示屏405的下层时,由处理器401根据用户对触摸显示屏405的压力操作,实现对ui界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。

指纹传感器414用于采集用户的指纹,由处理器401根据指纹传感器414采集到的指纹识别用户的身份,或者,由指纹传感器414根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器401授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器414可以被设置终端400的正面、背面或侧面。当终端400上设置有物理按键或厂商logo时,指纹传感器414可以与物理按键或厂商logo集成在一起。

光学传感器415用于采集环境光强度。在一个实施例中,处理器401可以根据光学传感器415采集的环境光强度,控制触摸显示屏405的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏405的显示亮度;当环境光强度较低时,调低触摸显示屏405的显示亮度。在另一个实施例中,处理器401还可以根据光学传感器415采集的环境光强度,动态调整摄像头组件406的拍摄参数。

接近传感器416,也称距离传感器,通常设置在终端400的前面板。接近传感器416用于采集用户与终端400的正面之间的距离。在一个实施例中,当接近传感器416检测到用户与终端400的正面之间的距离逐渐变小时,由处理器401控制触摸显示屏405从亮屏状态切换为息屏状态;当接近传感器416检测到用户与终端400的正面之间的距离逐渐变大时,由处理器401控制触摸显示屏405从息屏状态切换为亮屏状态。

本领域技术人员可以理解,图4中示出的结构并不构成对终端400的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。

在另一实施例中,还提供了一种终端,该终端包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由所述处理器加载并执行以实现上述图1d或图2实施例所述的屏幕视频获取方法。

在另一实施例中,还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由处理器加载并执行以实现上述图1d或图2实施例所述的屏幕视频获取方法。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1