CN113766318A - 视频生成方法、装置、存储介质及计算机设备 - Google Patents

视频生成方法、装置、存储介质及计算机设备 Download PDF

Info

Publication number
CN113766318A
CN113766318A CN202111056577.0A CN202111056577A CN113766318A CN 113766318 A CN113766318 A CN 113766318A CN 202111056577 A CN202111056577 A CN 202111056577A CN 113766318 A CN113766318 A CN 113766318A
Authority
CN
China
Prior art keywords
video
flutter
target
rendering
functional module
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.)
Pending
Application number
CN202111056577.0A
Other languages
English (en)
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.)
Tianyi Shilian Technology Co ltd
Original Assignee
CENTURY DRAGON INFORMATION NETWORK 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 CENTURY DRAGON INFORMATION NETWORK CO LTD filed Critical CENTURY DRAGON INFORMATION NETWORK CO LTD
Priority to CN202111056577.0A priority Critical patent/CN113766318A/zh
Publication of CN113766318A publication Critical patent/CN113766318A/zh
Pending legal-status Critical Current

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/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/4402Processing 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 reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440218Processing 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 reformatting operations of video signals for household redistribution, storage or real-time display by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • 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/431Generation of visual interfaces for content selection or interaction; Content or additional data rendering
    • H04N21/4312Generation of visual interfaces for content selection or interaction; Content or additional data rendering involving specific graphical features, e.g. screen layout, special fonts or colors, blinking icons, highlights or animations
    • 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/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/44213Monitoring of end-user related data
    • H04N21/44218Detecting physical presence or behaviour of the user, e.g. using sensors to detect if the user is leaving the room or changes his face expression during a TV program
    • 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/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
    • H04N21/4438Window management, e.g. event handling following interaction with the user interface
    • 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/47205End-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 manipulating displayed content, e.g. interacting with MPEG-4 objects, editing locally

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Social Psychology (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明提供的视频生成方法、装置、存储介质及计算机设备,在客户端中接入了Flutter功能模块,该Flutter功能模块为基于Flutter技术开发的实现实时动画生成视频的功能模块,因此,当客户端获取目标动画文件后,只需通过Flutter功能模块加载目标动画文件,并对目标动画文件进行实时渲染和实时编码,即可生成目标视频,该过程只需通过Flutter技术对Flutter功能模块进行一次开发,即可编译成不同的操作系统平台通用的视频制作功能,从而可以减少大量的开发成本投入,提高研发效率,便于代码维护;并且,在将目标动画文件实时渲染为视频帧后,可以直接对该视频帧进行视频编码输出,使得整个过程无额外的性能损耗,输出效率更高,并且适用性更广。

Description

视频生成方法、装置、存储介质及计算机设备
技术领域
本发明涉及计算机技术领域,尤其涉及一种视频生成方法、装置、存储介质及计算机设备。
背景技术
目前,将动画模型或动画资源转换为可在视频播放器播放的视频是各智能终端的常见应用功能。用户可以通过实现了该功能的客户端应用程序,以所见即所得的方式将动画文件转换为视频文件,这样不仅便于保存,还能够更方便地分享传播。
但是,由于不同的终端设备所使用的操作系统不同,移动终端有Android及iOS、桌面端有Windows、Mac、Linux操作系统,不同操作系统有不同的开发语言和开发环境,如果要面向这些操作系统的终端提供以上所属的视频制作功能,则需要使用不同的开发语言和技术框架分别进行开发,这样使得研发成本大幅增长,研发效率低下。
发明内容
本发明的目的旨在至少能解决上述的技术缺陷之一,特别是现有技术中面向不同操作系统的终端提供的视频制作功能,需要使用不同的开发语言和技术框架分别进行开发,这样使得研发成本大幅增长,研发效率低下的技术缺陷。
本发明提供了一种视频生成方法,所述方法包括:
获取目标动画文件;
基于Flutter功能模块对所述目标动画文件进行实时渲染后,得到对应的视频帧,对所述视频帧进行实时编码处理,以得到目标视频;
其中,所述Flutter功能模块为基于Flutter技术开发的实现实时动画生成视频的功能模块。
可选地,所述获取目标动画文件之前,还包括:
接收视频生成指令;
根据所述视频生成指令启动原生应用程序,并通过所述原生应用程序初始化Flutter引擎;
利用初始化后的Flutter引擎加载Flutter功能模块,所述Flutter功能模块通过所述原生应用程序提供基础运行环境及资源访问能力。
可选地,所述的视频生成方法,还包括:
基于所述Flutter引擎创建视图窗口,并将所述视图窗口添加到所述原生应用程序的视图窗口层级中;
其中,所述视图窗口用于显示所述原生应用程序,以及接收用户触发的交互指令。
可选地,所述基于Flutter功能模块对所述目标动画文件进行实时渲染后,得到对应的视频帧之前,还包括:
获取与所述目标动画文件对应的视频转换参数,所述视频转换参数用于将所述目标动画文件转换为对应的目标视频;
则基于Flutter功能模块对所述目标动画文件进行实时渲染后,得到对应的视频帧的步骤,包括:
基于Flutter功能模块中的动画渲染模块,将所述目标动画文件按照所述视频转换参数中的指定动画起始位置和指定帧率速度进行实时渲染,得到对应的视频帧。
可选地,所述的视频生成方法,还包括:
将所述视频帧在交互界面中进行显示;
接收用户在所述交互界面触发的停止渲染指令,并按照所述停止渲染指令停止渲染。
可选地,所述的视频生成方法,还包括:
按照所述视频转换参数中的指定动画结束位置结束渲染;
或者,在所述目标动画文件已全部渲染完毕时结束渲染。
可选地,所述对所述视频帧进行实时编码处理,以得到目标视频的步骤,包括:
基于所述Flutter功能模块中的视频编码模块,将所述视频帧按照视频转换参数中的编码参数进行实时编码处理,以得到目标视频。
可选地,所述对所述视频帧进行实时编码处理,以得到目标视频的步骤,包括:
基于所述Flutter功能模块中指定的外部编码程序,将所述视频帧按照视频转换参数中的编码参数进行实时编码处理,以得到目标视频。
可选地,所述基于所述Flutter功能模块中指定的外部编码程序,将所述视频帧按照视频转换参数中的编码参数进行实时编码处理,以得到目标视频之前,还包括:
采用端到端加密的方式,将所述视频帧传输至指定的外部编码程序。
本发明还提供了一种视频生成装置,包括:
文件获取模块,用于获取目标动画文件;
视频生成模块,用于基于Flutter功能模块对所述目标动画文件进行实时渲染后,得到对应的视频帧,对所述视频帧进行实时编码处理,以得到目标视频;其中,所述Flutter功能模块为基于Flutter技术开发的实现实时动画生成视频的功能模块。
本发明还提供了一种存储介质,所述存储介质中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如上述实施例中任一项所述视频生成方法的步骤。
本发明还提供了一种计算机设备,所述计算机设备中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如上述实施例中任一项所述视频生成方法的步骤。
从以上技术方案可以看出,本发明实施例具有以下优点:
本发明提供的视频生成方法、装置、存储介质及计算机设备,在客户端中接入了Flutter功能模块,该Flutter功能模块为基于Flutter技术开发的实现实时动画生成视频的功能模块,因此,当客户端获取目标动画文件后,只需通过Flutter功能模块加载目标动画文件,并对目标动画文件进行实时渲染和实时编码,即可生成目标视频,无需考虑客户端对应的终端设备所使用的操作系统,也无需使用不同的开发语言和技术框架分别开发不同的视频制作功能,只需通过Flutter技术对Flutter功能模块进行一次开发,即可编译成不同的操作系统平台通用的视频制作功能,从而可以减少大量的开发成本投入,提高研发效率,便于代码维护;并且,在将目标动画文件实时渲染为视频帧后,可以直接对该视频帧进行视频编码输出,使得整个过程无额外的性能损耗,输出效率更高,并且适用性更广。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的一种视频生成方法的流程示意图;
图2为本发明实施例提供的一种视频生成装置的结构示意图;
图3为本发明实施例提供的一种计算机设备的内部结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前,将动画模型或动画资源转换为可在视频播放器播放的视频是各智能终端的常见应用功能。用户可以通过实现了该功能的客户端应用程序,以所见即所得的方式将动画文件转换为视频文件,这样不仅便于保存,还能够更方便地分享传播。
但是,由于不同的终端设备所使用的操作系统不同,移动终端有Android及iOS、桌面端有Windows、Mac、Linux操作系统,不同操作系统有不同的开发语言和开发环境,如果要面向这些操作系统的终端提供以上所属的视频制作功能,则需要使用不同的开发语言和技术框架分别进行开发,这样使得研发成本大幅增长,研发效率低下。
因此,本发明的目的是解决现有技术中面向不同操作系统的终端提供的视频制作功能,需要使用不同的开发语言和技术框架分别进行开发,这样使得研发成本大幅增长,研发效率低下的技术问题,并提出如下技术方案:
在一个实施例中,如图1所示,图1为本发明实施例提供的一种视频生成方法的流程示意图;本发明提供了一种视频生成方法,具体包括如下:
S110:获取目标动画文件。
本步骤中,当用户需要将动画模型或动画资源转换为可在视频播放器播放的视频时,可以将待转换的动画模型或动画资源,即将目标动画文件上传至实现了该功能的客户端应用程序中,通过该客户端应用程序来将目标动画文件转换为目标视频。
需要说明的是,这里的客户端应用程序对应的客户端指的是基于Flutter技术的客户端,这里的客户端所使用的操作系统平台包括但不限于Android、iOS、Windows、Mac、Linux操作系统平台。
这里的目标动画文件中的动画资源可以是实时动画,实时动画指的是通过指定当前动画时间或播放进度进行实时加载并渲染的动画模型或资源,包括但不限于各类基于矢量动画的Lottie动画模型或基于位图帧动画的连续的动画图片文件序列。
进一步地,上述目标动画文件中还包含有对应的视频转换参数,客户端应用程序可以通过任意的交互方式将用户输入的数据转化为对应的参数,如客户端为移动端时,用户可以在移动端的应用程序中通过触摸点击的方式来输入数据,当客户端为PC端时,用户可以通过鼠标点击的方式在PC端的应用程序中输入数据。视频转换参数包括但不限于目标视频的保存位置、访问方式、需要转换为目标视频的相对时间范围(如动画起始位置、动画结束位置)、编码的参数(帧率、编码方式、码率等)。
另外,上述视频转换参数可以是用户通过客户端应用程序对应的交互界面输入得到的,也可以是使用客户端应用程序的默认输入得到的。
可以理解的是,本申请中的Flutter技术指的是由谷歌公司开源的用于客户端交互应用开发的技术框架,其面向跨操作系统平台的需要定义了一套适配接口,任何操作系统只要按照适配接口规范进行操作,即可实现上层的应用程序在该操作系统上编译运行。
S120:基于Flutter功能模块对目标动画文件进行实时渲染后,得到对应的视频帧,对视频帧进行实时编码处理,以得到目标视频。
本步骤中,客户端通过步骤S110获取到用户指定的目标动画文件后,可以通过Flutter功能模块来读取目标动画文件,并且,Flutter功能模块为基于Flutter技术开发的实现实时动画生成视频的功能模块,因此,通过Flutter功能模块读取目标动画文件后,可以对该目标动画文件进行实时渲染,并得到对应的视频帧,接着Flutter功能模块可以对实时渲染得到的视频帧进行实时编码处理,以得到目标视频。
比如说,Flutter框架提供了基于本地文件及HTTP网络请求的数据访问API,Flutter功能模块可以通过这些API来实现相应的动画模型或动画资源的数据读取,数据读取后可以根据不同的动画模型或动画资源对应动画格式进行解析,解析的目标是建立好时间与动画图像帧的映射,此时,便可在外部输入相对时间(如第几毫秒或相对百分比)后输出对应的动画图像帧,以及对动画图像帧进行实时编码后得到目标视频。
具体地,本申请使用Flutter功能模块对目标动画文件进行实时渲染并编码时,可以启动Flutter功能模块中的动画渲染模块以及视频编码模块,其中,Flutter功能模块中的动画渲染模块可以用于对目标动画文件中的动画按照指定的渲染参数进行渲染,而Flutter功能模块中的视频编码模块可以用于对渲染后得到的视频帧按照指定的编码参数进行编码。
需要说明的是,本申请在使用Flutter功能模块实现实时动画生成视频时,为了避免由JS桥接器等引起的性能问题,Flutter功能模块可以使用Dart语言来对目标动画文件进行编译。Dart语言是采用预编译的方式来编译多个平台的原生代码,它的优势在于既支持JIT,又支持AOT;并且,从结果来说,使用Dart语言既可以在开发过程中实时的看到所有界面改动,又可以享受运行时和原生语言相近的运行效率。另外,从开发效率上来讲,Dart语言本身是一门新的语言,支持很多先进的语言特性,并且天生对异步有良好的支持。上手难度低,语法和c、c++、java、js都有相似之处,会让有相关经验的开发者快速上手。
进一步地,本申请中的Flutter功能模块是通过Flutter引擎加载后运行的,而Flutter引擎可以使用客户端的原生应用程序来进行初始化。
可以理解的是,客户端的原生应用程序为针对不同操作系统平台而编译生成的二进制程序。在本申请技术方案中,原生应用程序仅用于启动后续基于Flutter技术开发的Flutter功能模块,并提供必要的基础运行环境及资源访问能力。
上述实施例中,在客户端中接入了Flutter功能模块,该Flutter功能模块为基于Flutter技术开发的实现实时动画生成视频的功能模块,因此,当客户端获取目标动画文件后,只需通过Flutter功能模块加载目标动画文件,并对目标动画文件进行实时渲染和实时编码,即可生成目标视频,无需考虑客户端对应的终端设备所使用的操作系统,也无需使用不同的开发语言和技术框架分别开发不同的视频制作功能,只需通过Flutter技术对Flutter功能模块进行一次开发,即可编译成不同的操作系统平台通用的视频制作功能,从而可以减少大量的开发成本投入,提高研发效率,便于代码维护;并且,在将目标动画文件实时渲染为视频帧后,可以直接对该视频帧进行视频编码输出,使得整个过程无额外的性能损耗,输出效率更高,并且适用性更广。
上述实施例对本申请中视频生成方法的过程进行展开描述,下面将对本申请中获取目标动画文件之前的相关操作进行说明。
在一个实施例中,步骤S110中获取目标动画文件之前,还可以包括:
S101:接收视频生成指令。
S102:根据所述视频生成指令启动原生应用程序,并通过所述原生应用程序初始化Flutter引擎。
S103:利用初始化后的Flutter引擎加载Flutter功能模块,所述Flutter功能模块通过所述原生应用程序提供基础运行环境及资源访问能力。
本实施例中,在获取目标动画文件之前,用户可以通过客户端应用程序提供的交互界面触发视频生成指令,该视频生成指令可以包含将要处理的目标动画文件,以及与目标动画文件对应的视频转换参数等,当客户端收到用户触发的视频生成指令后,可以根据该视频生成指令来启动原生应用程序,并通过原生应用程序初始化Flutter引擎,接着利用初始化后的Flutter引擎来加载其中的Flutter功能模块。
具体地,当客户端接收到用户触发的视频生成指令后,可以先启动客户端的原生应用程序,该原生应用程序为针对不同操作系统平台而编译生成的二进制程序。当启动原生应用程序后,客户端可以将该原生应用程序载入Flutter引擎运行时的代码库,并通过代码库中提供的引擎初始化接口来启动Flutter引擎,并对Flutter引擎进行初始化操作。
当Flutter引擎初始化完成后,基于Flutter技术开发的Flutter功能模块即具备可加载的条件,此时,客户端可以通过Flutter引擎来加载Flutter功能模块,并进入该Flutter功能模块的入口开始运行。
可以理解的是,本申请中的Flutter功能模块是基于Flutter技术开发的实现实时动画生成视频的功能模块,并且Flutter功能模块在运行时,主要是通过客户端的原生应用程序来提供基础运行环境及资源访问能力。
在一个实施例中,所述的视频生成方法,还可以包括:
S104:基于所述Flutter引擎创建视图窗口,并将所述视图窗口添加到所述原生应用程序的视图窗口层级中;其中,所述视图窗口用于显示所述原生应用程序,以及接收用户触发的交互指令。
本实施例中,Flutter引擎启动并加载Flutter功能模块后,可以通过Flutter框架提供的API创建出一个原生应用程序可显示及接收交互指令的视图窗口,并将此视图窗口添加到原生应用程序的视图窗口层级中。
可以理解的是,Flutter引擎通过Flutter框架提供的API创建视图窗口时,主要是通过FlutterView来实现的,FlutterView可以为用户提供显示原生应用程序的视图,并且用户可以在该视图中触发交互指令,如删除、增加、更改等。
上述实施例对本申请中获取目标动画文件之前的相关操作进行说明,下面将通过多个实施例来对本申请中实时渲染的过程进行描述。
在一个实施例中,步骤S120中基于Flutter功能模块对所述目标动画文件进行实时渲染后,得到对应的视频帧之前,还可以包括:
S111:获取与所述目标动画文件对应的视频转换参数,所述视频转换参数用于将所述目标动画文件转换为对应的目标视频。
本实施例中,客户端在通过Flutter功能模块对目标动画文件进行实时渲染后,得到对应的视频帧之前,需要获取与目标动画文件对应的视频转换参数,该视频转换参数可以与目标动画文件中的动画资源或动画模型共同作为目标动画文件传输至客户端后台,也可以单独获取与目标动画文件对应的视频转换参数。
并且,上述视频转换参数可以是用户指定相应的动画资源或动画模型时输入的自定义的配置参数,也可以客户端默认的配置参数,如目标视频的保存位置、访问方式、需要转换为目标视频的相对时间范围(如动画起始位置、动画结束位置)、编码的参数(帧率、编码方式、码率等)等。
进一步地,当客户端获取到与目标动画文件对应的视频转换参数后,步骤S120中基于Flutter功能模块对所述目标动画文件进行实时渲染后,得到对应的视频帧的步骤,可以包括:
S121:基于Flutter功能模块中的动画渲染模块,将所述目标动画文件按照所述视频转换参数中的指定动画起始位置和指定帧率速度进行实时渲染,得到对应的视频帧。
本实施例中,当客户端获取到与目标动画文件对应的视频转换参数后,可以将该视频转换参数传输至Flutter功能模块中,这样,Flutter功能模块中的动画渲染模型在对目标动画文件进行渲染时,可以按照视频转换参数中的渲染参数来对目标动画文件进行实时渲染,进而得到对应的视频帧。
举例来说,Flutter功能模块中的动画渲染模型在对目标动画文件进行渲染时,可以按照视频转换参数中的指定动画起始位置开始对目标动画文件进行实时渲染,并在渲染过程中采用指定帧率速度,从而得到对应的视频帧。
在一个实施例中,所述的视频生成方法,还可以包括:
S122:将所述视频帧在交互界面中进行显示。
S123:接收用户在所述交互界面触发的停止渲染指令,并按照所述停止渲染指令停止渲染。
本实施例中,客户端通过Flutter功能模块中的动画渲染模型在对目标动画文件进行渲染时,可以将渲染出的视频帧在客户端的交互界面中进行实时更新显示,实现用户在生成视频时可以进行实时预览效果,客户端监听用户通过点击等方式触发的停止渲染指令,如果用户触发停止渲染指令,则停止并结束生成视频的流程。
本申请中,Flutter功能模块中渲染及生成视频是一个实时连续的过程,而且视动画的时间长度及终端处理速度而产生不同的耗时,且生成视频的流程发生在后台,因此,将渲染出的视频帧在客户端的交互界面中进行实时更新显示后,用户可以了解当前后台的处理进度,如正在渲染以及编码哪一帧视频帧,用户在这个过程中可以依据自身需求停止整个操作。
在一个实施例中,所述的视频生成方法,还可以包括:
S124:按照所述视频转换参数中的指定动画结束位置结束渲染。
S125:或者,在所述目标动画文件已全部渲染完毕时结束渲染。
本实施例中,客户端通过Flutter功能模块中的动画渲染模型在对目标动画文件进行渲染时,可以按照视频转换参数中的指定动画结束位置来结束渲染,或者在目标动画文件已经全部渲染完毕后结束渲染。另外,由于本申请的Flutter功能模块中渲染及生成视频是一个实时连续的过程,因此,结束渲染即结束生成视频的流程。
上述通过多个实施例对本申请中实时渲染的过程进行描述,下面将通过多个实施例来对本申请中实时编码的过程进行说明。
在一个实施例中,步骤S120中对所述视频帧进行实时编码处理,以得到目标视频的步骤,可以包括:
S131:基于所述Flutter功能模块中的视频编码模块,将所述视频帧按照视频转换参数中的编码参数进行实时编码处理,以得到目标视频。
本实施例中,客户端通过Flutter功能模块中的动画渲染模块对目标动画文件进行实时渲染并得到视频帧后,接着Flutter功能模块可以通过其定义的视频编码模块来对动画渲染模块输出的视频帧进行实时编码,以便得到目标视频。
本申请中,视频编码模块的作用是将上述处理流程中输出的连续视频帧使用指定的视频编码方式(如H264、H265)编码为可使用常见播放器播放的目标视频,其中,视频编码模块可以实现如下功能:
a)采用支持以连续的视频帧数据流作为输入源的传输协议,并将输入的每一视频帧进行实时的视频编码输出;
b)所有的输入源的元数据(包括图像尺寸、像素格式、帧率、传输协议)、编码参数(编码器选型及参数、输出封装格式及目标视频地址)等可以通过独立接口或命令行参数等方式传递,并由视频编码模块执行。
c)提供视频编码的状态、进度等信息的反馈。
例如,对于Flutter功能模块渲染出每一帧视频帧,可以将其放入对应的缓冲区,以便等待视频编码模块通过传输协议进行主动获取,也可以采用推流的方式在动画渲染处理过程中将实时渲染得到的视频帧主动发送给视频编码模块,当视频编码模块获取到新的视频帧后,可以根据启动时传入的编码参数对视频帧进行实时的编码处理并输出到目标视频中。
其中,编码参数明确了使用的编码方式(如H264、H265)及对应的参数,如输入的帧率,即待编码的图像每秒有多少帧;输出帧率,即生成的视频中每秒播放多少帧;其他质量控制参数,例如平均码率、缓冲区大小等,这些参数与具体选定的编码方式相关。只要确定了编码方式及对应的参数,即可根据该编码方式对应的算法处理流程实现视频编码。
另外,本申请中视频编码模块所使用的传输协议可以采用如HTTP、管道或调用接口等方式进行灵活替换。
在一个实施例中,所述对所述视频帧进行实时编码处理,以得到目标视频的步骤,可以包括:
S132:基于所述Flutter功能模块中指定的外部编码程序,将所述视频帧按照视频转换参数中的编码参数进行实时编码处理,以得到目标视频。
本实施例中,客户端通过Flutter功能模块中的动画渲染模块对目标动画文件进行实时渲染并得到视频帧后,接着Flutter功能模块可以通过指定的外部编码程序来对动画渲染模块输出的视频帧进行实时编码,以便得到目标视频。
Flutter功能模块使用外部编码程序来对动画渲染模型输出的视频帧进行实时编码时,外部编码程序可以采用Socket等传输方式获取Flutter功能模块中的视频帧,以及与该视频帧对应的视频转换参数中的编码参数。
在一个实施例中,步骤S132中基于所述Flutter功能模块中指定的外部编码程序,将所述视频帧按照视频转换参数中的编码参数进行实时编码处理,以得到目标视频之前,还可以包括:采用端到端加密的方式,将所述视频帧传输至指定的外部编码程序。
本实施例中,当Flutter功能模块使用外部编码程序来对动画渲染模型输出的视频帧进行实时编码时,可以采用安全的方式将视频帧传输至指定的外部编码程序,该安全的方式包括但不限于采用端到端加密的方式,以此来提高数据传输的安全性。
下面对本申请实施例提供的视频生成装置进行描述,下文描述的视频生成装置与上文描述的视频生成方法可相互对应参照。
在一个实施例中,如图2所示,图2为本发明实施例提供的一种视频生成装置的结构示意图;本发明还提供了一种视频生成装置,包括文件获取模块210和视频生成模块220,具体包括如下:
文件获取模块210,用于获取目标动画文件。
视频生成模块220,用于基于Flutter功能模块对所述目标动画文件进行实时渲染后,得到对应的视频帧,对所述视频帧进行实时编码处理,以得到目标视频;其中,所述Flutter功能模块为基于Flutter技术开发的实现实时动画生成视频的功能模块。
上述实施例中,在客户端中接入了Flutter功能模块,该Flutter功能模块为基于Flutter技术开发的实现实时动画生成视频的功能模块,因此,当客户端获取目标动画文件后,只需通过Flutter功能模块加载目标动画文件,并对目标动画文件进行实时渲染和实时编码,即可生成目标视频,无需考虑客户端对应的终端设备所使用的操作系统,也无需使用不同的开发语言和技术框架分别开发不同的视频制作功能,只需通过Flutter技术对Flutter功能模块进行一次开发,即可编译成不同的操作系统平台通用的视频制作功能,从而可以减少大量的开发成本投入,提高研发效率,便于代码维护;并且,在将目标动画文件实时渲染为视频帧后,可以直接对该视频帧进行视频编码输出,使得整个过程无额外的性能损耗,输出效率更高,并且适用性更广。
在一个实施例中,所述文件获取模块210之前,还可以包括:
指令接收模块,用于接收视频生成指令。
初始化模块,用于根据所述视频生成指令启动原生应用程序,并通过所述原生应用程序初始化Flutter引擎。
功能加载模块,用于利用初始化后的Flutter引擎加载Flutter功能模块,所述Flutter功能模块通过所述原生应用程序提供基础运行环境及资源访问能力。
在一个实施例中,所述的视频生成方法,还可以包括:
视图创建模块,用于基于所述Flutter引擎创建视图窗口,并将所述视图窗口添加到所述原生应用程序的视图窗口层级中。
其中,所述视图窗口用于显示所述原生应用程序,以及接收用户触发的交互指令。
在一个实施例中,所述视频生成模块220之前,还可以包括:
参数获取模块,用于获取与所述目标动画文件对应的视频转换参数,所述视频转换参数用于将所述目标动画文件转换为对应的目标视频。
则视频生成模块220可以包括:
渲染编码模块,用于基于Flutter功能模块中的动画渲染模块,将所述目标动画文件按照所述视频转换参数中的指定动画起始位置和指定帧率速度进行实时渲染,得到对应的视频帧。
在一个实施例中,所述的视频生成方法,还可以包括:
视频帧显示模块,用于将所述视频帧在交互界面中进行显示。
第一停止模块,用于接收用户在所述交互界面触发的停止渲染指令,并按照所述停止渲染指令停止渲染。
在一个实施例中,所述的视频生成方法,还可以包括:
第二停止模块,用于按照所述视频转换参数中的指定动画结束位置结束渲染。
或者,第三停止模块,用于在所述目标动画文件已全部渲染完毕时结束渲染。
在一个实施例中,所述视频生成模块220可以包括:
第一编码模块,用于基于所述Flutter功能模块中的视频编码模块,将所述视频帧按照视频转换参数中的编码参数进行实时编码处理,以得到目标视频。
在一个实施例中,所述视频生成模块220可以包括:
第二编码模块,用于基于所述Flutter功能模块中指定的外部编码程序,将所述视频帧按照视频转换参数中的编码参数进行实时编码处理,以得到目标视频。
在一个实施例中,所述第二编码模块之前,还可以包括:
加密传输模块,用于采用端到端加密的方式,将所述视频帧传输至指定的外部编码程序。
在一个实施例中,本发明还提供了一种存储介质,所述存储介质中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如上述实施例中任一项所述视频生成方法的步骤。
在一个实施例中,本发明还提供了一种计算机设备,所述计算机设备中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如上述实施例中任一项所述视频生成方法的步骤。
示意性地,如图3所示,图3为本发明实施例提供的一种计算机设备的内部结构示意图,该计算机设备300可以被提供为一服务器。参照图3,计算机设备300包括处理组件302,其进一步包括一个或多个处理器,以及由存储器301所代表的存储器资源,用于存储可由处理组件302的执行的指令,例如应用程序。存储器301中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件302被配置为执行指令,以执行上述任意实施例的视频生成方法。
计算机设备300还可以包括一个电源组件303被配置为执行计算机设备300的电源管理,一个有线或无线网络接口304被配置为将计算机设备300连接到网络,和一个输入输出(I/O)接口305。计算机设备300可以操作基于存储在存储器301的操作系统,例如WindowsServer TM、Mac OS XTM、Unix TM、Linux TM、Free BSDTM或类似。
本领域技术人员可以理解,图3中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间可以根据需要进行组合,且相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (12)

1.一种视频生成方法,其特征在于,所述方法包括:
获取目标动画文件;
基于Flutter功能模块对所述目标动画文件进行实时渲染后,得到对应的视频帧,对所述视频帧进行实时编码处理,以得到目标视频;
其中,所述Flutter功能模块为基于Flutter技术开发的实现实时动画生成视频的功能模块。
2.根据权利要求1所述的视频生成方法,其特征在于,所述获取目标动画文件之前,还包括:
接收视频生成指令;
根据所述视频生成指令启动原生应用程序,并通过所述原生应用程序初始化Flutter引擎;
利用初始化后的Flutter引擎加载Flutter功能模块,所述Flutter功能模块通过所述原生应用程序提供基础运行环境及资源访问能力。
3.根据权利要求2所述的视频生成方法,其特征在于,还包括:
基于所述Flutter引擎创建视图窗口,并将所述视图窗口添加到所述原生应用程序的视图窗口层级中;
其中,所述视图窗口用于显示所述原生应用程序,以及接收用户触发的交互指令。
4.根据权利要求1所述的视频生成方法,其特征在于,所述基于Flutter功能模块对所述目标动画文件进行实时渲染后,得到对应的视频帧之前,还包括:
获取与所述目标动画文件对应的视频转换参数,所述视频转换参数用于将所述目标动画文件转换为对应的目标视频;
则基于Flutter功能模块对所述目标动画文件进行实时渲染后,得到对应的视频帧的步骤,包括:
基于Flutter功能模块中的动画渲染模块,将所述目标动画文件按照所述视频转换参数中的指定动画起始位置和指定帧率速度进行实时渲染,得到对应的视频帧。
5.根据权利要求4所述的视频生成方法,其特征在于,还包括:
将所述视频帧在交互界面中进行显示;
接收用户在所述交互界面触发的停止渲染指令,并按照所述停止渲染指令停止渲染。
6.根据权利要求4所述的视频生成方法,其特征在于,还包括:
按照所述视频转换参数中的指定动画结束位置结束渲染;
或者,在所述目标动画文件已全部渲染完毕时结束渲染。
7.根据权利要求4所述的视频生成方法,其特征在于,所述对所述视频帧进行实时编码处理,以得到目标视频的步骤,包括:
基于所述Flutter功能模块中的视频编码模块,将所述视频帧按照视频转换参数中的编码参数进行实时编码处理,以得到目标视频。
8.根据权利要求4所述的视频生成方法,其特征在于,所述对所述视频帧进行实时编码处理,以得到目标视频的步骤,包括:
基于所述Flutter功能模块中指定的外部编码程序,将所述视频帧按照视频转换参数中的编码参数进行实时编码处理,以得到目标视频。
9.根据权利要求8所述的视频生成方法,其特征在于,所述基于所述Flutter功能模块中指定的外部编码程序,将所述视频帧按照视频转换参数中的编码参数进行实时编码处理,以得到目标视频之前,还包括:
采用端到端加密的方式,将所述视频帧传输至指定的外部编码程序。
10.一种视频生成装置,其特征在于,包括:
文件获取模块,用于获取目标动画文件;
视频生成模块,用于基于Flutter功能模块对所述目标动画文件进行实时渲染后,得到对应的视频帧,对所述视频帧进行实时编码处理,以得到目标视频;其中,所述Flutter功能模块为基于Flutter技术开发的实现实时动画生成视频的功能模块。
11.一种存储介质,其特征在于:所述存储介质中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1至9中任一项所述视频生成方法的步骤。
12.一种计算机设备,其特征在于:所述计算机设备中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1至9中任一项所述视频生成方法的步骤。
CN202111056577.0A 2021-09-09 2021-09-09 视频生成方法、装置、存储介质及计算机设备 Pending CN113766318A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111056577.0A CN113766318A (zh) 2021-09-09 2021-09-09 视频生成方法、装置、存储介质及计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111056577.0A CN113766318A (zh) 2021-09-09 2021-09-09 视频生成方法、装置、存储介质及计算机设备

Publications (1)

Publication Number Publication Date
CN113766318A true CN113766318A (zh) 2021-12-07

Family

ID=78794387

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111056577.0A Pending CN113766318A (zh) 2021-09-09 2021-09-09 视频生成方法、装置、存储介质及计算机设备

Country Status (1)

Country Link
CN (1) CN113766318A (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108495174A (zh) * 2018-04-09 2018-09-04 深圳格莱珉文化传播有限公司 一种h5页面效果生成视频文件的方法及系统
CN110634102A (zh) * 2019-11-19 2019-12-31 成都品果科技有限公司 基于flutter的跨平台证件照移动终端系统及其使用方法
CN112689197A (zh) * 2019-10-18 2021-04-20 腾讯科技(深圳)有限公司 一种文件格式转换方法、装置、以及计算机存储介质
CN112929681A (zh) * 2021-01-19 2021-06-08 广州虎牙科技有限公司 视频流图像渲染方法、装置、计算机设备及存储介质
CN113094123A (zh) * 2021-03-23 2021-07-09 北京达佳互联信息技术有限公司 应用程序中功能的实现方法、装置、电子设备和存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108495174A (zh) * 2018-04-09 2018-09-04 深圳格莱珉文化传播有限公司 一种h5页面效果生成视频文件的方法及系统
CN112689197A (zh) * 2019-10-18 2021-04-20 腾讯科技(深圳)有限公司 一种文件格式转换方法、装置、以及计算机存储介质
CN110634102A (zh) * 2019-11-19 2019-12-31 成都品果科技有限公司 基于flutter的跨平台证件照移动终端系统及其使用方法
CN112929681A (zh) * 2021-01-19 2021-06-08 广州虎牙科技有限公司 视频流图像渲染方法、装置、计算机设备及存储介质
CN113094123A (zh) * 2021-03-23 2021-07-09 北京达佳互联信息技术有限公司 应用程序中功能的实现方法、装置、电子设备和存储介质

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
CC: "Flutter学习系列(6)— FlutterView初始化", Retrieved from the Internet <URL:https://www.ccarea.cn/archives/575> *
IT屋: "将Flutter动画直接渲染到视频", pages 1 - 3, Retrieved from the Internet <URL:https://www.it1352.com/2226821.html> *
工匠若水: "Flutter Android 端 FlutterView 相关流程源码分析", Retrieved from the Internet <URL:https://blog.csdn.net/yanbober/article/details/119086759> *
百家晓东: "Flutter和原生系统代码的逻辑交互", Retrieved from the Internet <URL:https://blog.csdn.net/tianmaxingkong_/article/details/104151302> *
稻子: "Flutter引擎源码解读-Flutter是如何在iOS上运行起来的", Retrieved from the Internet <URL:https://zhuanlan.zhihu.com/p/137460524> *

Similar Documents

Publication Publication Date Title
JP5781497B2 (ja) 拡張可能なメディア形式を持つホスト型アプリケーションプラットフォーム
CN106844066B (zh) 一种应用运行方法、装置及系统
US9779467B2 (en) Rendering hardware accelerated graphics in a web application
CN111408138B (zh) 基于游戏引擎的渲染方法、装置及电子设备
CN104796767A (zh) 一种云视频编辑方法和系统
CN111338623B (zh) 一种开发用户界面的方法、装置、介质和电子设备
US20180213274A1 (en) Apparatus and method for playing back and seeking media in web browser
CN110389755B (zh) 代码处理方法及装置、电子设备和计算机可读存储介质
EP4210053A1 (en) Application program control method and apparatus, electronic device, and storage medium
CN111580988A (zh) 开放平台的实现方法、装置、存储介质和计算机设备
CN113918195A (zh) 应用界面更新方法、装置、电子设备及可读存储介质
CN105260190A (zh) 基于安卓系统分发技术的安卓应用的运行方法和系统
CN112121411A (zh) 震动控制方法、装置、电子设备和计算机可读存储介质
CN115550687A (zh) 三维模型场景交互方法、系统、设备、装置及存储介质
CN114268796A (zh) 视频流处理的方法及装置
CN114302176A (zh) 视频播放方法及装置
CN110825383A (zh) 一种视频交互方法、装置及计算机可读存储介质
CN117370696A (zh) 小程序页面的加载方法、装置、电子设备及存储介质
CN113766318A (zh) 视频生成方法、装置、存储介质及计算机设备
CN114222185B (zh) 视频播放方法、终端设备及存储介质
CN117065357A (zh) 媒体数据处理方法、装置、计算机设备和存储介质
US20070073902A1 (en) Information processor, information processing method and program
WO2014024255A1 (ja) 端末および動画再生プログラム
CN113825016A (zh) 视频渲染方法、装置、设备、存储介质及计算机程序产品
CN112487322A (zh) 一种第三方应用Loading页面的加载方法及显示设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20211208

Address after: Room 1423, No. 1256 and 1258, Wanrong Road, Jing'an District, Shanghai 200040

Applicant after: Tianyi Digital Life Technology Co.,Ltd.

Address before: 1 / F and 2 / F, East Garden, Huatian International Plaza, 211 Longkou Middle Road, Tianhe District, Guangzhou, Guangdong 510000

Applicant before: Century Dragon Information Network Co.,Ltd.

SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20240315

Address after: Unit 1, Building 1, China Telecom Zhejiang Innovation Park, No. 8 Xiqin Street, Wuchang Street, Yuhang District, Hangzhou City, Zhejiang Province, 311100

Applicant after: Tianyi Shilian Technology Co.,Ltd.

Country or region after: China

Address before: Room 1423, No. 1256 and 1258, Wanrong Road, Jing'an District, Shanghai 200040

Applicant before: Tianyi Digital Life Technology Co.,Ltd.

Country or region before: China