CN113014996A - 视频生成方法及装置 - Google Patents

视频生成方法及装置 Download PDF

Info

Publication number
CN113014996A
CN113014996A CN202110187980.0A CN202110187980A CN113014996A CN 113014996 A CN113014996 A CN 113014996A CN 202110187980 A CN202110187980 A CN 202110187980A CN 113014996 A CN113014996 A CN 113014996A
Authority
CN
China
Prior art keywords
screen
video
picture
terminal equipment
picture frame
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.)
Granted
Application number
CN202110187980.0A
Other languages
English (en)
Other versions
CN113014996B (zh
Inventor
马飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Bilibili Technology Co Ltd
Original Assignee
Shanghai Bilibili Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Bilibili Technology Co Ltd filed Critical Shanghai Bilibili Technology Co Ltd
Priority to CN202110187980.0A priority Critical patent/CN113014996B/zh
Publication of CN113014996A publication Critical patent/CN113014996A/zh
Application granted granted Critical
Publication of CN113014996B publication Critical patent/CN113014996B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • H04N21/4334Recording operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44008Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics in the video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/472End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
    • H04N21/4728End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for selecting a Region Of Interest [ROI], e.g. for requesting a higher resolution version of a selected region

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Television Signal Processing For Recording (AREA)

Abstract

本说明书提供视频生成方法及装置,其中所述视频生成方法包括:接收第一调用请求,对所述第一调用请求进行解析获得所述第一调用请求中携带的设备标识;根据所述设备标识向对应的终端设备推送图片获取工具,并且通过所述图片获取工具获取所述终端设备的屏幕相关参数以及屏幕图片帧序列;根据所述屏幕相关参数以及预设编码格式,基于所述屏幕图片帧序列生成所述预设编码格式的视频。根据本说明书的视频生成方法实现跨平台利用同一套接口实现双端录制,可以同时对Android设备和IOS设备进行录屏,实现并行录屏。

Description

视频生成方法及装置
技术领域
本说明书涉及计算机技术领域,特别涉及视频生成方法及装置。
背景技术
自动化录屏是指将终端设备播放的内容或操作过程录制成视频的过程,其使用逐渐普遍。
现有的自动化录屏利用Android和IOS各自平台的框架去实现,使用成本较高。对于Android和IOS自动化录屏均存在一些缺点,对于Android:通过adb命令screenrecord实现,缺点是兼容性不好,某些设备无法录制;对于IOS:AVFoundation苹果在OS X Yosemite和IOS 8中加入的录屏功能,在QuickTime Player中可以直接对连接的IOS设备录制视频,效果非常好无卡顿,帧数达40-60每秒,缺点是同一时间只能对一台设备录屏。
发明内容
有鉴于此,本说明书实施例提供了一种视频生成方法。本说明书同时涉及一种视频生成装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种视频生成方法,包括:
接收第一调用请求,对所述第一调用请求进行解析获得所述第一调用请求中携带的设备标识;
根据所述设备标识向对应的终端设备推送图片获取工具,并且通过所述图片获取工具获取所述终端设备的屏幕相关参数以及屏幕图片帧序列;
根据所述屏幕相关参数以及预设编码格式,基于所述屏幕图片帧序列生成所述预设编码格式的视频。
可选地,视频生成方法还包括:
获取所述终端设备的当前每秒帧率;
相应地,根据所述屏幕相关参数以及预设编码格式,基于所述屏幕图片帧序列生成所述预设编码格式的视频,包括:
根据所述屏幕相关参数以及预设编码格式和所述当前每秒帧率,基于所述屏幕图片帧序列生成所述预设编码格式的视频。
可选地,通过所述图片获取工具获取所述终端设备的屏幕相关参数以及屏幕图片帧序列包括:
通过所述图片获取工具获取所述终端设备的屏幕相关参数,并且截取多个屏幕图片帧;
确定每个屏幕图片帧对应的旋转角度;
根据所述旋转角度修改对应屏幕图片帧的属性,获得屏幕图片帧序列。
可选地,根据所述旋转角度修改对应屏幕图片帧的属性包括:
将所述旋转角度添加至对应屏幕图片帧的图片对象的头字段。
可选地,将所述旋转角度添加至对应屏幕图片帧的图片对象的头字段之前,还包括:
修改所述图片对象的头字段长度。
可选地,在通过所述图片获取工具获取所述终端设备的屏幕相关参数以及屏幕图片帧序列之后,还包括:
针对数据结构有误的屏幕相关参数,对数据结构进行重新封装,获得重新封装后的屏幕相关参数;
将数据结构有误的屏幕相关参数替换为重新封装后的屏幕相关参数。
可选地,所述第一调用请求中还携带文件输出路径,所述方法还包括:
响应于第二调用请求,将所述视频存储至所述文件输出路径,其中,所述第二调用请求中携带所述设备标识。
可选地,将所述视频存储至所述文件输出路径包括:
在将所述视频转码成目标编码格式的视频的情况下,将所述目标编码格式的视频存储至所述文件输出路径。
可选地,根据所述设备标识向对应的终端设备推送图片获取工具包括:
根据所述设备标识获取设备信息,确定所述终端设备是否可用;
在所述终端设备可用的情况下,向所述终端设备推送图片获取工具。
可选地,向所述终端设备推送图片获取工具包括:
在所述终端设备为Android类型的终端设备的情况下,根据所述终端设备的系统版本向所述终端设备推送不同CPU架构的图片获取工具;和/或
在所述终端设备为IOS类型的终端设备的情况下,向所述终端设备推送应用于IOS的图片获取工具。
可选地,视频生成方法还包括:
判断所述文件输出路径是否存在,并且在不存在的情况下,创建与所述文件输出路径对应的文件夹。
根据本说明书实施例的第二方面,提供了一种视频生成装置,包括:
接收模块,被配置为接收第一调用请求,对所述第一调用请求进行解析获得所述第一调用请求中携带的设备标识;
第一获取模块,被配置为根据所述设备标识向对应的终端设备推送图片获取工具,并且通过所述图片获取工具获取所述终端设备的屏幕相关参数以及屏幕图片帧序列;
生成模块,被配置为根据所述屏幕相关参数以及预设编码格式,基于所述屏幕图片帧序列生成所述预设编码格式的视频。
根据本说明书实施例的第三方面,提供了一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,以实现下述方法:
接收第一调用请求,对所述第一调用请求进行解析获得所述第一调用请求中携带的设备标识;
根据所述设备标识向对应的终端设备推送图片获取工具,并且通过所述图片获取工具获取所述终端设备的屏幕相关参数以及屏幕图片帧序列;
根据所述屏幕相关参数以及预设编码格式,基于所述屏幕图片帧序列生成所述预设编码格式的视频。
根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现所述视频生成方法的步骤。
本说明书提供的视频生成方法,根据终端设备的调用请求中携带的设备标识向终端设备推送对应的图片获取工具,并且通过该图片获取工具获取终端设备的屏幕相关参数以及屏幕图片帧序列,根据屏幕相关参数以及预设编码格式,基于所述屏幕图片帧序列生成所述预设编码格式的视频。
根据本说明书的视频生成方法实现跨平台利用同一套接口实现双端录制,可以同时对Android设备和IOS设备进行录屏,实现并行录屏。
附图说明
图1示出了本说明书一实施例提供的一种视频生成方法的流程图;
图2示出了本说明书一实施例提供的一种视频生成方法的应用场景的示意图;
图3A示出了本说明书一实施例提供的一种视频生成方法的API设计的示意图;
图3B示出了本说明书一实施例提供的一种视频生成方法的应用场景的示意图;
图4示出了本说明书一实施例提供的一种视频生成方法的处理流程图;
图5示出了本说明书一实施例提供的一种视频生成装置的结构示意图;
图6示出了本说明书一实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
OpenCV:全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库;
Minicap:开源项目STF(Smartphone Test Farm)中的一个工具,负责屏幕显示;
VideoWriter:OpenCV中的一个类,打开VideoWriter,设置文件流,进行视频数据的处理。
在本说明书中,提供了一种视频生成方法,本说明书同时涉及一种视频生成装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
图1示出了根据本说明书一实施例提供的一种视频生成方法的流程图,具体包括步骤102至106。
步骤102:接收第一调用请求,对所述第一调用请求进行解析获得所述第一调用请求中携带的设备标识。
如图2所示,录屏服务部署在宿主机,宿主机挂载Android设备和IOS设备,在Android设备和IOS设备侧通过调用录屏服务的开启录屏和结束录屏API来实现双端的屏幕录制。图2中以示例方式示出1个Android设备和1个IOS设备,不作为对本申请的限制,宿主机可以挂载多个Android设备和多个IOS设备。Android设备和IOS设备统称为终端设备,终端设备例如通过CI脚本调用开启录屏API和结束录屏API。在一种实施例中,开启录屏API和结束录屏API的形式为REST API,这种形式的API比较友好,当然也可以使用其他形式的API。
终端设备通过API调用接口的方式传入设备标识(ID),即可开始录屏。第一调用请求是开启录屏API。如图3A所示,开启录屏API中的参数可以包括设备标识(ID)和文件输出路径,接收到开启录屏API实现开始录屏,在接收到结束录屏API的情况下结束录屏,将录制好的视频输出至文件输出路径。在一种实施例中,如图3A所示,结束录屏API的参数仅包括设备标识例如设备序列号serial。例如,图3A示出了一种接口示例,开启录屏API为http://localhost:7888/api/device/startRecord,结束录屏API为http://localhost:7888/api/device/stop Record,该接口仅为示例,不作为对本申请的限制。
步骤104:根据所述设备标识向对应的终端设备推送图片获取工具,并且通过所述图片获取工具获取所述终端设备的屏幕相关参数以及屏幕图片帧序列。
Android设备和IOS设备对应不同的图片获取工具,在图片获取工具为Android设备的情况下,图片获取工具为minicap,在图片获取工具为IOS设备的情况下,图片获取工具为ios_minicap,minicap属于STF框架的一个工具,通过截屏接口不停地截屏并通过socket接口实时发送,可以得到屏幕图片帧序列。屏幕相关参数是与终端设备的屏幕相关的各种参数中的一种或多种,例如,屏幕相关参数可以包括屏幕尺寸,可选地,屏幕相关参数可以包括屏幕尺寸、屏幕分辨率。在使用Minicap作为图片获取工具的情况下,获取屏幕相关参数例如屏幕尺寸、屏幕分辨率,并且截取终端设备的屏幕图片帧,形成屏幕图片帧序列,下文对此具体说明。
在一实施例中,根据所述设备标识向对应的终端设备推送图片获取工具通过以下实现:
根据所述设备标识获取设备信息,确定所述终端设备是否可用;
在所述终端设备可用的情况下,向所述终端设备推送图片获取工具。
上述实施例中,根据设备标识判断设备为Android设备还是IOS设备,例如根据设备序列号中的型号核准号码判断终端设备是否为“苹果”公司对应型号,若是,判断终端设备为IOS设备,若否,判断为Android设备,即根据开启录屏API中的设备标识确定终端设备为Android还是IOS设备。对于不同类型的设备,需要采用不同的指令获取设备信息,对于Android设备可以采用adb_devices获取设备信息,在设备信息为device状态的情况下,终端设备可用,向其推送Android对应的minicap,对于IOS设备可以采用Idevice_id-1,获取设备信息,在确定终端设备可用的情况下,向终端设备推送IOS对应的minicap即ios_minicap。
在本申请的一种实施例中,向所述终端设备推送图片获取工具可以通过以下实现:
在所述终端设备为Android类型的终端设备的情况下,根据所述终端设备的系统版本向所述终端设备推送不同CPU架构的图片获取工具;和/或
在所述终端设备为IOS类型的终端设备的情况下,向所述终端设备推送应用于IOS的图片获取工具。
在终端设备为Android类型的情况下,minicap对于不同CPU架构会具有不同的版本文件,STF提供的minicap文件根据CPU分为例如四种,分别针对不同架构。根据终端设备的系统版本向其推送不同CPU架构的图片获取工具。
具体地,minicap工具是用NDK开发的,属于Android的底层开发,该工具分为两个部分,一个是动态连接库.so文件,一个是minicap可执行文件。但不是通用的,因为CPU架构的不同分为不同的版本文件,STF提供的minicap文件根据CPU的应用程序二进制接口ABI分为如下4种:arm64-v8a、armeabi-v7a,x86,x86_64架构。而minicap.so文件在这个基础上还要分为不同的软件开发工具(sdk)版本。
将对应的ABI和minicap可执行文件和动态链接库.so文件传输到终端设备的指定目录。然后获取到终端设备对应的sdk版本,并将sdk版本共享库拷贝到该设备指定目录。软件开发工具广义上指辅助开发某一类软件的相关文档、范例和工具的集合。软件开发工具包是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件的开发工具的集合。它可以简单的为某个程序设计语言提供应用程序接口API的一些文件,但也可能包括能与某种嵌入式系统通讯的复杂的硬件。一般的工具包括用于调试和其他用途的实用工具。sdk还经常包括示例代码、支持性的技术注解或者其他的为基本参考资料澄清疑点的支持文档。通过运行sdk来运行可执行文件和动态链接库.so文件,调用minicap服务并且将minicap端口转发,即可通过minicap端口与终端设备建立连接。
在一种实施例中,通过所述图片获取工具获取所述终端设备的屏幕相关参数以及屏幕图片帧序列包括:
通过所述图片获取工具获取所述终端设备的屏幕相关参数,并且截取多个屏幕图片帧;
确定每个屏幕图片帧对应的旋转角度;
根据所述旋转角度修改对应屏幕图片帧的属性,获得屏幕图片帧序列。
Minicap获取终端设备的屏幕尺寸或者获取终端设备的屏幕尺寸及屏幕分辨率,截取的屏幕图片帧的数量与终端设备的每秒帧率相关。录屏过程中用户可能对终端设备进行旋转,例如从竖向录屏切换到横向录屏。在截取到屏幕图片帧时,确定每个屏幕图片帧的旋转角度。
旋转角度与录屏之前终端设备的屏幕方向以及录屏过程中终端设备的屏幕方向相关,例如,录屏之前终端设备的屏幕方向为竖向,录制过程中变为横向,且为逆时针旋转,则在变为横向的情况下截取的屏幕图片帧的旋转角度可以确定为90度,若为顺时针旋转,则在变为横向的情况下截取的屏幕图片帧的旋转角度可以确定为270度。根据所述旋转角度修改对应屏幕图片帧的属性可以通过以下实现:将旋转角度添加至对应屏幕图片帧的图片对象的头字段。在一实施例中,将所述旋转角度添加至对应屏幕图片帧的图片对象的头字段之前,还包括:修改所述图片对象的头字段长度。
由于原生minicap无法识别图片的旋转角度,都会对屏幕图片帧按照竖屏形式显示,一旦录屏过程中用户对终端设备进行了旋转,就会导致屏幕方向为横向的情况下截取的屏幕图片帧在显示时被错误拉伸。因此在本实施例中,获取到屏幕图片帧的旋转角度,根据旋转角度修改具有旋转角度的屏幕图片帧的属性,重新设置。
在一种实施例中,在通过所述图片获取工具获取所述终端设备的屏幕相关参数以及屏幕图片帧序列之后,还包括:
针对数据结构有误的屏幕相关参数,对数据结构进行重新封装,获得重新封装后的屏幕相关参数;
将数据结构有误的屏幕相关参数替换为重新封装后的屏幕相关参数。
对于部分终端设备机型调用minicap_try_get_display_info、try_get_framebuffer_display_info失败,获取到的屏幕尺寸等参数的数据格式有误,对于数据格式有误的终端设备用原生adb命令重新获取这些参数,并且将输出的数据结构做二次解析重新封装后再输出。例如,一些终端设备由于机型兼容性问题没法获得正常的参数数据,对于一些机型的参数数据有误的数据结构,根据该错误结构解读出对应的关键字,重新封装为与其他参数数据无误的机型一样的数据结构。之后将数据结构有误的屏幕相关参数替换为重新封装后的屏幕相关参数,在后续过程中利用替换后的屏幕相关参数合成视频。
步骤106:根据所述屏幕相关参数以及预设编码格式,基于所述屏幕图片帧序列生成所述预设编码格式的视频。
可以通过Opencv中的VideoWriter类来实现基于屏幕图片帧序列生成预设编码格式的视频。利用上述屏幕尺寸、屏幕分辨率以及预设编码格式,将屏幕图片帧序列生成为预设编码格式的视频。具体地,利用VideoWriter设置文件流,进行视频数据的处理。
根据本说明书的视频生成方法实现跨平台利用同一套接口实现双端录制,可以同时对Android设备和IOS设备进行录屏,实现并行录屏。
除上述屏幕相关参数和预设编码格式之外,还根据预设每秒帧率(FPS)来生成预设编码格式的视频,每秒帧率可以是预设的,也可以是动态获取的。上述设置文件流是指设置视频的分辨率、编码格式、每秒帧率、文件路径以及文件名。在一实施例中,通过Opencv中的Video Capture获取终端设备的当前每秒帧率,根据屏幕相关参数以及预设编码格式和当前每秒帧率,基于屏幕图片帧序列生成所述预设编码格式的视频。如果按照默认的预设每秒帧率进行录屏,不同终端设备或不同运行情况下可能出现加速或减慢的情况,终端设备的当前每秒帧率是变化的,因此动态获取FPS,动态设置合成视频的帧率,实现适应不同终端设备或不同运行情况的录屏。
在生成预设编码格式的视频的过程中,响应于第二调用请求,将所述视频存储至所述文件输出路径,其中,所述第二调用请求中携带所述设备标识。
第二调用请求为通过调用结束录屏API输入的请求,响应于第二调用请求,对生成的视频进行存储,存储至第一调用请求中携带的文件输出路径。在一种实施例中,在存储视频之前,预先判断文件输出路径是否存在,并且在不存在的情况下,创建与该文件输出路径对应的文件夹。
在一种实施例中,将所述视频存储至所述文件输出路径可以通过以下实现:
在将所述视频转码成目标编码格式的视频的情况下,将所述目标编码格式的视频存储至所述文件输出路径。
在一些情况下,需要录制业务上指定的编码格式,比如H264编码的MP4文件,但是OpenCV无法直接录制该编码格式的MP4文件。通过OpenCV的VideoWriter_fourcc方法指定XVID编码录制成avi文件,即avi文件为上述预设编码格式,之后通过FFmpeg转码成H264编码的MP4,即H264编码的MP4格式为上述目标编码格式。本领域技术人员理解,预设编码格式和目标编码格式可以采用很多格式,上述avi和H264编码的MP4仅为示例,不作为对本申请的限制。
下面结合图3B,以本说明书提供的视频生成方法在不同系统的笔记本的应用为例,对所述视频生成方法进行进一步说明。如图3B所示,录屏服务部署在宿主机,宿主机挂载Windows设备和Mac设备,在Windows设备和Mac设备侧通过调用录屏服务的开启录屏和结束录屏API来实现双端的屏幕录制。图3B中以示例方式示出1个Windows设备和1个Mac设备,不作为对本申请的限制,宿主机可以挂载多个Windows设备和多个Mac设备。Windows设备和Mac设备统称为终端设备,终端设备例如通过CI脚本调用开启录屏API和结束录屏API。在一种实施例中,开启录屏API和结束录屏API的形式为REST API,这种形式的API比较友好,当然也可以使用其他形式的API。
终端设备通过API调用接口的方式传入设备标识(ID)和文件输出路径,即可开始录屏。接收到开启录屏API后,对开启录屏API进行解析获得其中携带的设备标识。接收到开启录屏API实现开始录屏,根据所述设备标识向对应的终端设备推送图片获取工具,并且通过图片获取工具获取所述终端设备的屏幕相关参数以及屏幕图片帧序列。根据所述屏幕相关参数以及预设编码格式,基于所述屏幕图片帧序列生成所述预设编码格式的视频。在接收到结束录屏API的情况下结束录屏,将录制好的视频输出至文件输出路径。
下述结合附图4,对所述视频生成方法进行进一步说明。其中,图4示出了本说明书一实施例提供的一种视频生成方法的处理流程图,具体包括以下步骤:
步骤402:接收开启录屏API调用请求,对开启录屏API调用请求进行解析获得终端设备的设备序列号和文件输出路径。
录屏服务部署在宿主机,宿主机挂载Android设备例如Galaxy Note和IOS设备iphone,在Android设备和IOS设备侧通过调用录屏服务的开启录屏和结束录屏API来实现双端的屏幕录制。图3A示出了一种接口示例,开始录屏API为http://localhost:7888/api/device/startRecord,其中参数包括设备序列号和文件输出路径。
步骤404:根据设备序列号判断终端设备为Android设备还是IOS设备。
例如根据设备序列号中的型号核准号码判断终端设备是否为“苹果”公司对应型号,若是,判断终端设备为IOS设备,若否,判断为Android设备,当然也可以获取设备信息来判断终端设备为Android设备还是IOS设备。若判断终端设备为IOS设备,则在步骤406中采用Idevice_id-1获取设备信息,判断设备是否可用。若判断终端设备为Android设备,则在步骤408中采用adb_devices获取设备信息,判断设备是否可用。若无可用设备,则返回步骤402。若设备信息为device状态,确定有可用设备且设备为IOS设备,则进行至步骤410,推送IOS_minicap,若确定有可用设备且设备为Android设备,则进行至步骤412,根据系统版本向终端设备推送不同CPU架构的minicap。
在终端设备为Android类型的情况下,minicap对于不同CPU架构会具有不同的版本文件,STF提供的minicap文件根据CPU分为例如四种,分别针对不同架构。根据终端设备的系统版本向其推送不同CPU架构的图片获取工具。在终端设备为IOS类型的情况下,推送IOS-minicap。在终端设备不可用的情况下不推送minicap,返回至步骤402。
步骤414:通过minicap获取设备的屏幕尺寸、屏幕分辨率,并且截取多个屏幕图片帧。
可选地,在步骤414之前还可以判断minicap是否可用,在minicap可用的情况下启动minicap进行至步骤414,在minicap不可用的情况下对minicap进行修复,之后返回判断是否可用。
若步骤414中获取的屏幕尺寸、屏幕分辨率中数据结构有误的情况下,进行至步骤416,对数据结构进行重新封装,获得重新封装后的屏幕相关参数。
对于一些机型的参数数据有误的数据结构,根据该错误结构解读出对应的关键字,重新封装为与其他参数数据无误的机型一样的数据结构,之后将数据结构有误的屏幕相关参数替换为重新封装后的屏幕相关参数。
步骤418:确定每个屏幕图片帧对应的旋转角度,将旋转角度添加至图片对象的头字段,获得屏幕图片帧序列。
将所述旋转角度添加至对应屏幕图片帧的图片对象的头字段之前,修改所述图片对象的头字段长度。
步骤420:判断文件输出路径是否存在。
在存在的情况下进行至步骤422,在步骤422中通过VideoCapture获取终端设备的每秒帧率,在不存在的情况下进行至步骤424:新建文件夹。
步骤426:通过VideoWriter根据屏幕尺寸、屏幕分辨率、每秒帧率、预设编码格式将屏幕图片帧序列生成为预设编码格式的视频。
步骤428:在接收到停止录屏API调用请求时,设置event为true,通过FFmpeg将视频转码为MP4格式的视频。
在一些情况下,需要录制业务上指定的编码格式,比如本实施例中的H264编码的MP4文件,但是OpenCV无法直接录制该编码格式的MP4文件。通过OpenCV的VideoWriter_fourcc方法指定XVID编码录制成avi文件,即avi文件为上述预设编码格式,之后通过FFmpeg转码成H264编码的MP4。
步骤430:将MP4格式的视频输出至文件输出路径。
输出至用户输入的文件输出路径后,用户可以在该文件输出路径查看录制好的视频,对视频进行观看、编辑、分享等。
根据本说明书的视频生成方法实现跨平台利用同一套接口实现双端录制,可以同时对Android设备和IOS设备进行录屏,实现并行录屏。通过使用OpenCV实现屏幕录制,除解决机型兼容问题、多机并行之外,还解决屏幕分辨率、编码格式的问题。
与上述方法实施例相对应,本说明书还提供了视频生成装置实施例,图5示出了本说明书一实施例提供的一种视频生成装置的结构示意图。如图5所示,该装置包括:
接收模块502,被配置为接收第一调用请求,对所述第一调用请求进行解析获得所述第一调用请求中携带的设备标识;
第一获取模块504,被配置为根据所述设备标识向对应的终端设备推送图片获取工具,并且通过所述图片获取工具获取所述终端设备的屏幕相关参数以及屏幕图片帧序列;
生成模块506,被配置为根据所述屏幕相关参数以及预设编码格式,基于所述屏幕图片帧序列生成所述预设编码格式的视频。
根据本说明书的视频生成方法实现跨平台利用同一套接口实现双端录制,可以同时对Android设备和IOS设备进行录屏,实现并行录屏。
可选地,视频生成装置还包括:
第二获取模块,被配置为获取所述终端设备的当前每秒帧率;
相应地,所述生成模块还被配置为:
根据所述屏幕相关参数以及预设编码格式和所述当前每秒帧率,基于所述屏幕图片帧序列生成所述预设编码格式的视频。
可选地,所述第一获取模块包括:
获取单元,被配置为通过所述图片获取工具获取所述终端设备的屏幕相关参数,并且截取多个屏幕图片帧;
确定单元,被配置为确定每个屏幕图片帧对应的旋转角度;
修改单元,被配置为根据所述旋转角度修改对应屏幕图片帧的属性,获得屏幕图片帧序列。
可选地,所述修改单元还被配置为:
将所述旋转角度添加至对应屏幕图片帧的图片对象的头字段。
可选地,所述修改单元还被配置为:
修改所述图片对象的头字段长度。
可选地,所述视频生成装置还包括:
封装单元,被配置为针对数据结构有误的屏幕相关参数,对数据结构进行重新封装,获得重新封装后的屏幕相关参数;
替换单元,被配置为将数据结构有误的屏幕相关参数替换为重新封装后的屏幕相关参数。
可选地,所述第一调用请求中还携带文件输出路径,所述装置还包括:
存储模块,被配置为响应于第二调用请求,将所述视频存储至所述文件输出路径,其中,所述第二调用请求中携带所述设备标识。
可选地,所述存储模块还被配置为:
在将所述视频转码成目标编码格式的视频的情况下,将所述目标编码格式的视频存储至所述文件输出路径。
可选地,所述第一获取模块还被配置为:
根据所述设备标识获取设备信息,确定所述终端设备是否可用;
在所述终端设备可用的情况下,向所述终端设备推送图片获取工具。
可选地,所述第一获取模块还被配置为:
在所述终端设备为Android类型的终端设备的情况下,根据所述终端设备的系统版本向所述终端设备推送不同CPU架构的图片获取工具;和/或
在所述终端设备为IOS类型的终端设备的情况下,向所述终端设备推送应用于IOS的图片获取工具。
可选地,视频生成装置还包括:
创建模块,被配置为判断所述文件输出路径是否存在,并且在不存在的情况下,创建与所述文件输出路径对应的文件夹。
上述为本实施例的一种视频生成装置的示意性方案。需要说明的是,该视频生成装置的技术方案与上述的视频生成方法的技术方案属于同一构思,视频生成装置的技术方案未详细描述的细节内容,均可以参见上述视频生成方法的技术方案的描述。
图6示出了根据本说明书一实施例提供的一种计算设备600的结构框图。该计算设备600的部件包括但不限于存储器610和处理器620。处理器620与存储器610通过总线630相连接,数据库650用于保存数据。
计算设备600还包括接入设备640,接入设备640使得计算设备600能够经由一个或多个网络660通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备640可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备600的上述部件以及图6中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图6所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备600可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备600还可以是移动式或静止式的服务器。
其中,处理器620用于执行如下计算机可执行指令:
接收第一调用请求,对所述第一调用请求进行解析获得所述第一调用请求中携带的设备标识;
根据所述设备标识向对应的终端设备推送图片获取工具,并且通过所述图片获取工具获取所述终端设备的屏幕相关参数以及屏幕图片帧序列;
根据所述屏幕相关参数以及预设编码格式,基于所述屏幕图片帧序列生成所述预设编码格式的视频。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的视频生成方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述视频生成方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时以用于:
接收第一调用请求,对所述第一调用请求进行解析获得所述第一调用请求中携带的设备标识;
根据所述设备标识向对应的终端设备推送图片获取工具,并且通过所述图片获取工具获取所述终端设备的屏幕相关参数以及屏幕图片帧序列;
根据所述屏幕相关参数以及预设编码格式,基于所述屏幕图片帧序列生成所述预设编码格式的视频。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的视频生成方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述视频生成方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书并不受所描述的动作顺序的限制,因为依据本说明书,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。

Claims (14)

1.一种视频生成方法,其特征在于,包括:
接收第一调用请求,对所述第一调用请求进行解析获得所述第一调用请求中携带的设备标识;
根据所述设备标识向对应的终端设备推送图片获取工具,并且通过所述图片获取工具获取所述终端设备的屏幕相关参数以及屏幕图片帧序列;
根据所述屏幕相关参数以及预设编码格式,基于所述屏幕图片帧序列生成所述预设编码格式的视频。
2.根据权利要求1所述的视频生成方法,其特征在于,还包括:
获取所述终端设备的当前每秒帧率;
相应地,根据所述屏幕相关参数以及预设编码格式,基于所述屏幕图片帧序列生成所述预设编码格式的视频,包括:
根据所述屏幕相关参数以及预设编码格式和所述当前每秒帧率,基于所述屏幕图片帧序列生成所述预设编码格式的视频。
3.根据权利要求1或2所述的视频生成方法,其特征在于,通过所述图片获取工具获取所述终端设备的屏幕相关参数以及屏幕图片帧序列包括:
通过所述图片获取工具获取所述终端设备的屏幕相关参数,并且截取多个屏幕图片帧;
确定每个屏幕图片帧对应的旋转角度;
根据所述旋转角度修改对应屏幕图片帧的属性,获得屏幕图片帧序列。
4.根据权利要求3所述的视频生成方法,其特征在于,根据所述旋转角度修改对应屏幕图片帧的属性包括:
将所述旋转角度添加至对应屏幕图片帧的图片对象的头字段。
5.根据权利要求4所述的视频生成方法,其特征在于,将所述旋转角度添加至对应屏幕图片帧的图片对象的头字段之前,还包括:
修改所述图片对象的头字段长度。
6.根据权利要求1或2所述的视频生成方法,其特征在于,在通过所述图片获取工具获取所述终端设备的屏幕相关参数以及屏幕图片帧序列之后,还包括:
针对数据结构有误的屏幕相关参数,对数据结构进行重新封装,获得重新封装后的屏幕相关参数;
将数据结构有误的屏幕相关参数替换为重新封装后的屏幕相关参数。
7.根据权利要求1或2所述的视频生成方法,其特征在于,所述第一调用请求中还携带文件输出路径,所述方法还包括:
响应于第二调用请求,将所述视频存储至所述文件输出路径,其中,所述第二调用请求中携带所述设备标识。
8.根据权利要求7所述的视频生成方法,其特征在于,将所述视频存储至所述文件输出路径包括:
在将所述视频转码成目标编码格式的视频的情况下,将所述目标编码格式的视频存储至所述文件输出路径。
9.根据权利要求1或2所述的视频生成方法,其特征在于,根据所述设备标识向对应的终端设备推送图片获取工具包括:
根据所述设备标识获取设备信息,确定所述终端设备是否可用;
在所述终端设备可用的情况下,向所述终端设备推送图片获取工具。
10.根据权利要求9所述的视频生成方法,其特征在于,向所述终端设备推送图片获取工具包括:
在所述终端设备为Android类型的终端设备的情况下,根据所述终端设备的系统版本向所述终端设备推送不同CPU架构的图片获取工具;和/或
在所述终端设备为IOS类型的终端设备的情况下,向所述终端设备推送应用于IOS的图片获取工具。
11.根据权利要求7所述的视频生成方法,其特征在于,还包括:
判断所述文件输出路径是否存在,并且在不存在的情况下,创建与所述文件输出路径对应的文件夹。
12.一种视频生成装置,其特征在于,包括:
接收模块,被配置为接收第一调用请求,对所述第一调用请求进行解析获得所述第一调用请求中携带的设备标识;
第一获取模块,被配置为根据所述设备标识向对应的终端设备推送图片获取工具,并且通过所述图片获取工具获取所述终端设备的屏幕相关参数以及屏幕图片帧序列;
生成模块,被配置为根据所述屏幕相关参数以及预设编码格式,基于所述屏幕图片帧序列生成所述预设编码格式的视频。
13.一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,以实现下述方法:
接收第一调用请求,对所述第一调用请求进行解析获得所述第一调用请求中携带的设备标识;
根据所述设备标识向对应的终端设备推送图片获取工具,并且通过所述图片获取工具获取所述终端设备的屏幕相关参数以及屏幕图片帧序列;
根据所述屏幕相关参数以及预设编码格式,基于所述屏幕图片帧序列生成所述预设编码格式的视频。
14.一种计算机可读存储介质,其存储有计算机指令,该计算机指令被处理器执行时实现权利要求1至11任意一项所述视频生成方法的步骤。
CN202110187980.0A 2021-02-18 2021-02-18 视频生成方法及装置 Active CN113014996B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110187980.0A CN113014996B (zh) 2021-02-18 2021-02-18 视频生成方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110187980.0A CN113014996B (zh) 2021-02-18 2021-02-18 视频生成方法及装置

Publications (2)

Publication Number Publication Date
CN113014996A true CN113014996A (zh) 2021-06-22
CN113014996B CN113014996B (zh) 2022-07-22

Family

ID=76402773

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110187980.0A Active CN113014996B (zh) 2021-02-18 2021-02-18 视频生成方法及装置

Country Status (1)

Country Link
CN (1) CN113014996B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114501079A (zh) * 2022-01-29 2022-05-13 京东方科技集团股份有限公司 用于对多媒体数据进行处理的方法及相关设备

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104407980A (zh) * 2014-12-17 2015-03-11 用友软件股份有限公司 移动应用自动化测试装置和方法
CN105094830A (zh) * 2015-07-31 2015-11-25 小米科技有限责任公司 一种执行目标功能的方法和装置
CN105635613A (zh) * 2015-12-16 2016-06-01 北京奇虎科技有限公司 一种移动设备的录屏方法和装置
CN105740153A (zh) * 2016-02-29 2016-07-06 网易(杭州)网络有限公司 云测试方法及装置
CN106874206A (zh) * 2017-02-27 2017-06-20 网易(杭州)网络有限公司 用于跨平台自动测试的方法、装置及电子设备
CN107168841A (zh) * 2017-05-25 2017-09-15 北京云测信息技术有限公司 一种移动设备的远程测试方法和装置
CN107864411A (zh) * 2017-10-31 2018-03-30 广东小天才科技有限公司 一种视频输出方法及终端设备
CN108984389A (zh) * 2018-06-01 2018-12-11 平安科技(深圳)有限公司 一种应用程序测试方法及终端设备
CN109766163A (zh) * 2019-01-17 2019-05-17 网易(杭州)网络有限公司 同步显示方法及装置、存储介质和电子装置
CN111427524A (zh) * 2020-02-27 2020-07-17 深圳壹账通智能科技有限公司 远程控制的方法、装置、计算机设备及存储介质
CN111444095A (zh) * 2020-03-25 2020-07-24 智者四海(北京)技术有限公司 移动设备的测试平台系统和测试方法
CN112261465A (zh) * 2020-10-26 2021-01-22 南京维沃软件技术有限公司 视频处理方法及装置
CN112286433A (zh) * 2020-11-26 2021-01-29 山东浪潮商用系统有限公司 屏幕画面获取方法、装置及计算机可读介质以及测试端

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104407980A (zh) * 2014-12-17 2015-03-11 用友软件股份有限公司 移动应用自动化测试装置和方法
CN105094830A (zh) * 2015-07-31 2015-11-25 小米科技有限责任公司 一种执行目标功能的方法和装置
CN105635613A (zh) * 2015-12-16 2016-06-01 北京奇虎科技有限公司 一种移动设备的录屏方法和装置
CN105740153A (zh) * 2016-02-29 2016-07-06 网易(杭州)网络有限公司 云测试方法及装置
CN106874206A (zh) * 2017-02-27 2017-06-20 网易(杭州)网络有限公司 用于跨平台自动测试的方法、装置及电子设备
CN107168841A (zh) * 2017-05-25 2017-09-15 北京云测信息技术有限公司 一种移动设备的远程测试方法和装置
CN107864411A (zh) * 2017-10-31 2018-03-30 广东小天才科技有限公司 一种视频输出方法及终端设备
CN108984389A (zh) * 2018-06-01 2018-12-11 平安科技(深圳)有限公司 一种应用程序测试方法及终端设备
CN109766163A (zh) * 2019-01-17 2019-05-17 网易(杭州)网络有限公司 同步显示方法及装置、存储介质和电子装置
CN111427524A (zh) * 2020-02-27 2020-07-17 深圳壹账通智能科技有限公司 远程控制的方法、装置、计算机设备及存储介质
CN111444095A (zh) * 2020-03-25 2020-07-24 智者四海(北京)技术有限公司 移动设备的测试平台系统和测试方法
CN112261465A (zh) * 2020-10-26 2021-01-22 南京维沃软件技术有限公司 视频处理方法及装置
CN112286433A (zh) * 2020-11-26 2021-01-29 山东浪潮商用系统有限公司 屏幕画面获取方法、装置及计算机可读介质以及测试端

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114501079A (zh) * 2022-01-29 2022-05-13 京东方科技集团股份有限公司 用于对多媒体数据进行处理的方法及相关设备

Also Published As

Publication number Publication date
CN113014996B (zh) 2022-07-22

Similar Documents

Publication Publication Date Title
US20210334061A1 (en) Synchronous Display Method and Apparatus, Storage Medium and Electronic Device
US20060136880A1 (en) System, apparatus and methods for automatic program translation
CN111212142A (zh) 一种业务处理方法、集成开放对接平台及计算机存储介质
CN113014996B (zh) 视频生成方法及装置
CN111954006A (zh) 一种用于移动端的跨平台视频播放实现方法及装置
CN110837474A (zh) 一种脚本录制方法、装置、终端及存储介质
CN112612690A (zh) 一种用户界面信息处理方法、装置、电子设备及存储介质
CN114996134A (zh) 容器化部署方法、电子设备及存储介质
CN114168460A (zh) 混合开发中前端代码的远程调试方法、设备及存储介质
CN106843956B (zh) 系统固件包的生成方法及装置
CN112995743A (zh) 视频播放方法及装置
CN111930641A (zh) 一种图像数据处理方法及智能设备
CN112073586A (zh) 一种从安卓系统获取通话录音数据的方法和系统
CN115686458A (zh) 虚拟世界应用的开发方法及装置
CN113641594B (zh) 跨端自动化测试方法以及相关装置
CN113316001B (zh) 视频对齐方法及装置
CN110347597B (zh) 图片服务器的接口测试方法、装置、存储介质与移动终端
CN115658500A (zh) 一种混合开发中基于vue的前端错误日志上传方法及系统
CN115016995A (zh) 接口测试方法、计算机设备及计算机存储介质
CN110221958B (zh) 应用测试方法、装置、计算设备及计算机可读存储介质
CN113220569A (zh) 一种基于多进程的iOS兼容性自动化测试方法与装置
CN110837476A (zh) 一种应用程序测试的方法和装置
CN111447490A (zh) 流媒体文件处理方法及装置
CN114630148B (zh) 视频处理方法及装置
US11395031B1 (en) Audio and video synchronization

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant