CN115134658A - 视频处理方法、装置、设备及存储介质 - Google Patents

视频处理方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN115134658A
CN115134658A CN202210590383.7A CN202210590383A CN115134658A CN 115134658 A CN115134658 A CN 115134658A CN 202210590383 A CN202210590383 A CN 202210590383A CN 115134658 A CN115134658 A CN 115134658A
Authority
CN
China
Prior art keywords
video
processing
processed
data
algorithm
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
CN202210590383.7A
Other languages
English (en)
Other versions
CN115134658B (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.)
Alibaba Cloud Computing Beijing Co Ltd
Original Assignee
Alibaba Cloud Computing Beijing 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 Alibaba Cloud Computing Beijing Co Ltd filed Critical Alibaba Cloud Computing Beijing Co Ltd
Priority to CN202210590383.7A priority Critical patent/CN115134658B/zh
Publication of CN115134658A publication Critical patent/CN115134658A/zh
Application granted granted Critical
Publication of CN115134658B publication Critical patent/CN115134658B/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/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/44012Processing 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 rendering scenes according to scene graphs, e.g. MPEG-4 scene graphs
    • 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/439Processing of audio elementary streams
    • H04N21/4394Processing of audio elementary streams involving operations for analysing the audio stream, e.g. detecting features or characteristics in audio streams
    • 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/44016Processing 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 splicing one content stream with another content stream, e.g. for substituting a video clip

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Television Signal Processing For Recording (AREA)

Abstract

本申请实施例提供了视频处理方法、装置、设备及存储介质,应用于客户端,所述客户端内置有以播放器形式封装的前端视频编辑预处理引擎,所述方法包括:在播放器处于空闲状态时,通过所述前端视频编辑预处理引擎对预设视频数据进行预处理得到预渲染结果;预渲染结果包括基于图像预处理后的视频帧;响应对预设多媒体数据的播放指令,获取所需处理的音频数据与预处理后的视频帧;播放预处理后的视频帧和所需处理的音频数据。基于对视频数据的提前预处理操作,在对多媒体数据进行处理或者预览的过程中并不进行实时渲染,减少单帧渲染耗时过长而导致的卡顿问题,能够保证在处理时对视频帧的稳定输出,从而保证用户播放视频时的播放体验。

Description

视频处理方法、装置、设备及存储介质
技术领域
本申请涉及多媒体技术领域,特别是涉及一种视频处理方法、一种视频处理装置、相应的一种电子设备以及相应的一种计算机存储介质。
背景技术
智能媒体生产项目是为具有音视频生产需求的客户提供的一站式在线协同云服务,其可通过提供多种数据互通的集成方式,实现不同客户端及平台进行音视频剪辑与音视频的相关处理。
为了向客户端提供云剪辑的服务需求,智能媒体生产项目可在前端集成服务端的视频编辑算法,但服务端所使用的算法在处理时存在单帧耗时,不能满足针对前端复杂场景,例如视频混编复杂场景的实时预览需求。
发明内容
鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种视频处理方法、一种视频处理装置、相应的一种电子设备以及相应的一种计算机存储介质。
本申请实施例公开了一种视频处理方法,应用于客户端,所述客户端内置有以播放器形式封装的前端视频编辑预处理引擎,所述方法包括:
在播放器处于空闲状态时,通过所述前端视频编辑预处理引擎对预设视频数据进行预处理得到预渲染结果;所述预渲染结果包括基于图像预处理后的视频帧;
响应对预设多媒体数据的处理指令,获取所需处理的音频数据与预处理后的视频帧;
播放所述预处理后的视频帧和所需处理的音频数据。
可选地,所述在播放器处于空闲状态时,通过所述前端视频编辑预处理引擎对预设视频数据进行预处理得到预渲染结果,包括:
在播放器处于空闲状态时,获取目标视频编辑算法与所需处理的视频数据;所述目标视频编辑算法为基于适用所述客户端的编程语言封装后的视频编辑算法;
采用所述目标视频编辑算法对所述所需处理的视频数据进行预处理,得到预处理后的视频帧。
可选地,获取预播放的视频数据,包括:
检测所述播放器的工作状态,在所述播放器的工作状态处于空闲状态时,生成预渲染任务;
执行所述预渲染任务,得到所需处理的视频数据;所述预渲染任务用于执行在关闭音频的情况下播放视频的操作。
可选地,所述目标视频编辑算法包括图像处理算法和图像合成算法,所述图像合成算法基于第一线程调用,所述图像处理算法基于第二线程调用;
所述采用所述目标视频编辑算法对所述所需处理的视频数据进行预处理,得到预处理后的视频帧,包括:
在通过第一线程执行所述图像合成算法的过程中,获取所述所需处理的视频数据的原始纹理数据;
通过第二线程调用所述图像处理算法对所述原始纹理数据进行加工,得到加工后的视频数据;
通过第一线程对所述加工后的视频数据转换生成加工后的纹理数据,并基于所述加工后的纹理数据进行图像合成,得到预处理后的视频帧。
可选地,所述图像处理算法包括特效处理算法,所述特效处理算法为基于适用所述客户端的编程语言封装的特效处理算法;所述通过第二线程调用所述图像处理算法对所述原始纹理数据进行加工,得到加工后的视频数据,包括:
在所述第一线程工作的同时,通过所述第二线程调用所述特效处理算法,对所述原始纹理数据进行如下至少一项特效加工操作:特效处理、滤镜处理以及转场处理,得到加工后的视频数据。
可选地,在得到预处理后的视频帧之后,还包括:
按照预设时间周期轮询所述预渲染任务的状态;
在所述预渲染任务的状态处于完成状态时,将预处理后的视频帧写入帧缓存队列中;所述帧缓存队列用于在响应对所述播放器的播放操作时对预处理后的视频帧进行读取。
可选地,所述预处理后的视频帧包括与字幕对应时间节点的视频帧,在得到预处理后的视频帧之后,还包括:
调用字幕处理算法对所述与字幕对应时间节点的视频帧进行如下至少一项字幕加工操作:花字处理以及字幕特效处理,得到字幕加工后的视频帧;
将所述字幕加工后的视频帧重新写入帧缓存队列。
可选地,还包括:
响应对所述播放器的播放指令,获取用于缓存预处理后的视频帧的帧缓存队列;
若所述帧缓存队列中的视频帧不满足预设播放条件,则暂停播放所播放的音频数据,直至所述帧缓存队列中的视频帧满足所述播放器的预设播放条件后,继续播放视频帧和所播放的音频数据。
本申请实施例还公开了一种视频处理装置,应用于客户端,所述客户端内置有以形式封装的前端视频编辑预处理引擎播放器,所述装置包括:
预处理模块,用于在播放器处于空闲状态时,通过所述前端视频编辑预处理引擎对预设视频数据进行预处理得到预渲染结果;所述预渲染结果包括基于图像预处理后的视频帧;
处理指令响应模块,用于响应对预设多媒体数据的处理指令,获取所需处理的音频数据与预处理后的视频帧;
视频播放模块,用于播放所述预处理后的视频帧和所需处理的音频数据。
可选地,所述预处理模块包括:
视频数据获取子模块,用于在播放器处于空闲状态时,获取目标视频编辑算法与所需处理的视频数据;所述目标视频编辑算法为基于适用所述客户端的编程语言封装后的视频编辑算法;
预处理子模块,用于采用所述目标视频编辑算法对所述所需处理的视频数据进行预处理,得到预处理后的视频帧。
可选地,所述视频数据获取子模块包括:
渲染任务生成单元,用于检测所述播放器的工作状态,在所述播放器的工作状态处于空闲状态时,生成预渲染任务;
视频数据获取单元,用于执行所述预渲染任务,得到所需处理的视频数据;所述预渲染任务用于执行在关闭音频的情况下播放视频的操作。
可选地,所述目标视频编辑算法包括图像处理算法和图像合成算法,所述图像合成算法基于第一线程调用,所述图像处理算法基于第二线程调用;
所述预处理子模块包括:
第一线程执行单元,用于在通过第一线程执行所述图像合成算法的过程中,获取所述所需处理的视频数据的原始纹理数据;
第二线程执行单元,用于通过第二线程调用所述图像处理算法对所述原始纹理数据进行加工,得到加工后的视频数据;
图像合成单元,用于通过第一线程对所述加工后的视频数据转换生成加工后的纹理数据,并基于所述加工后的纹理数据进行图像合成,得到预处理后的视频帧。
可选地,所述图像处理算法包括特效处理算法,所述特效处理算法为基于适用所述客户端的编程语言封装的特效处理算法;第二线程执行单元可以包括如下子单元:
视频数据加工子单元,用于在所述第一线程工作的同时,通过所述第二线程调用所述特效处理算法,对所述原始纹理数据进行如下至少一项特效加工操作:特效处理、滤镜处理以及转场处理,得到加工后的视频数据。
可选地,所述预处理模块包括:
状态轮询子模块,用于按照预设时间周期轮询所述预渲染任务的状态;
第一缓存子模块,用于在所述预渲染任务的状态处于完成状态时,将预处理后的视频帧写入帧缓存队列中;所述帧缓存队列用于在响应对所述播放器的播放操作时对预处理后的视频帧进行读取。
可选地,所述预处理后的视频帧包括与字幕对应时间节点的视频帧,所述预处理模块还包括:
字幕加工子模块,用于调用字幕处理算法对所述与字幕对应时间节点的视频帧进行如下至少一项字幕加工操作:花字处理以及字幕特效处理,得到字幕加工后的视频帧;
第二缓存子模块,用于将所述字幕加工后的视频帧重新写入帧缓存队列。
可选地,所述装置还包括:
缓存队列获取模块,用于响应对所述播放器的播放指令,获取用于缓存预处理后的视频帧的帧缓存队列;
暂停播放模块,用于在所述帧缓存队列中的视频帧不满足预设播放条件时,暂停播放所播放的音频数据,直至所述帧缓存队列中的视频帧满足所述播放器的预设播放条件后,继续播放视频帧和所播放的音频数据。
本申请实施例还公开了一种电子设备,包括:处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现任一项所述视频处理方法的步骤。
本申请实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现任一项所述视频处理方法的步骤。
本申请实施例包括以下优点:
本申请实施例中,在播放器处于空闲状态时可提前通过前端视频编辑预处理引擎对预设视频数据进行预处理,得到预处理后的视频帧,以便在后续响应对预设多媒体数据的处理指令时,可获取所需处理的音频数据以及预先处理得到的视频帧,在播放预先处理的视频帧的同时播放所需处理的音频数据,基于对视频数据的提前预处理操作,在对多媒体数据进行处理或者预览的过程中并不进行实时渲染,减少单帧渲染耗时过长而导致的卡顿问题,能够保证在处理时对视频帧的稳定输出,从而保证用户播放视频时的播放体验。
附图说明
图1是本申请的一种视频处理方法实施例的步骤流程图;
图2是本申请实施例提供的音画同步的时序示意图;
图3是本申请实施例提供的前端视频编辑预处理引擎的架构示意图;
图4是本申请实施例提供的预处理引擎的工作示意图;
图5是本申请的另一种视频处理方法实施例的步骤流程图;
图6是本申请实施例提供的预处理流程示意图;
图7是本申请实施例提供的视频处理的应用场景示意图;
图8是本申请的一种视频处理装置实施例的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
为便于本领域技术人员理解本申请,下面对本申请下述各实施例中涉及到的术语或名词做出解释:
WebAssembly或Wasm:Web的低阶编程语言,主要用于浏览器内的客户端,可为各种语言编写的代码提供以接近原生的速度在Web中运行的能力,使得此前无法在Web中运行的客户端软件运行在Web中。WebAssembly是可携式的抽象语法树,其被设计来提供比JavaScript更快速的编译与执行操作,让开发者能够运用熟悉的程序语言编译,并将其所编译的代码作为虚拟机引擎在浏览器内执行。
Web worker:后台线程,为Web内容提供在后台线程中运行脚本的运行方式,基于此方式的线程可在执行其线程任务的同时不干扰用户界面,其主要可使用XML HttpRequest执行I/O(尽管response XML和channel属性总是为空)实现。在一应用中,基于此方式创建的线程worker可以将消息发送给创建此worker的JavaScript代码,以通过将消息发布到该代码指定的事件处理程序。具体的,JavaScript语言采用的是单线程模型,即任务在单个线程完成,在单线程未完成上一个任务的情况下,排着后边的任务需要等待上一个任务完成后执行,而Web worker应用在JavaScript的作用,主要是为JavaScript创建多线程环境,允许主线程创建worker线程,将一些任务分配给所创建的worker线程执行,其在主线程运行的同时worker线程在后台运行,两者互不干扰,并在等到worker线程完成计算任务后再把结果返回给主线程。
Video context:前端开源视频编辑库,用于在客户端前端对视频进行编辑与相关处理。
JavaScript:简称JS,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言,其通常作为开发Web页面的脚本语言,但也可应用于很多非浏览器的环境中。
WebGL:Web图形库,是一个JavaScriptAPI,可在任何兼容的Web浏览器渲染高性能的交互式3D和2D图形,而无需使用插件。
ReadPixel:将图像信息从屏幕像素转换为计算机内存数据的方法。
API:Application Programming Interface,应用程序编程接口,是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力。
SDK:Software Development Kit,软件开发工具包,是一些用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件的开发工具的集合。其可为某个程序设计语言提供应用程序接口API的一些文件,但也可能包括能与某种嵌入式系统通讯的复杂的硬件。
GPU:Graphic Processing Unit,图形处理器,用于进行各种绘制计算机图形所需的运算。
CPU:Central Processing Unit,核心处理器,作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。
emscripten工具:是一种C/C++语言的编译工具,可用于将C/C++语言编译成可以在浏览器使用的WebAssembly语言代码。
thread.js:浏览器Web worker的一个JavaScript开源库,为开发者提供类多线程能力。
FFmpeg:为多媒体视频处理工具,具有视频采集功能、视频格式转换、视频抓图、给视频加水印等功能。
Linux:操作系统内核,是一种免费使用和自由传播的类UNIX操作系统。
C/C++语言:计算机编程语言。
智能媒体生产项目是为具有音视频生产需求的客户提供的一站式在线协同云服务,其所提供的云服务可以包括类似媒体资源管理、云端媒资(直播流+图文+音视频)剪辑合成、视频模板创作等服务,且智能媒体生产项目可通过提供API、web SDK和native SDK本地SDK等多种数据互通的采集方式,实现移动端、Web端以及其他平台客户端进行音视频剪辑与音视频的相关处理。
为了向客户端提供云剪辑的服务需求,智能媒体生产项目可在前端集成服务端的视频编辑算法,在相关技术中,为了实现对视频编辑算法在客户端前端的快速集成,具体可采用WebAssembly技术对服务端所采用的视频编辑算法进行重新编译与封装,以适配前端的运行环境,且一般客户端前端直接采用在主线程或通过Web worker多线程对封装后的视频编辑算法进行集成的方式,实现实时渲染的运算。在实时渲染的运算中,所采用的是播放到哪个时间点就处理哪个时间点的实时处理与实时渲染方案,其对于视频处理存在单帧耗时,而在前端的复杂场景(例如存在多轨道、多特效、混合特效、转场的情况等)下,单帧耗时过长将会导致出现严重卡顿、帧率不稳以及丢帧等问题,且预览的视频帧是实时处理与实时渲染的,这种方式将会影响前端的交互,无法满足实时预览的需求,降低用户体验。
本申请实施例的核心思想之一在于,对于用户在对视频进行剪辑或者编辑操作的过程中,在播放器处于空闲状态时可在关闭音频的情况下播放视频,以提前对所需处理的预设视频数据进行预处理,以及在响应对预设多媒体数据的处理指令时,实时播放音频隐藏其所点击播放的视频帧,消费预先渲染的视频帧,即在对多媒体数据进行处理的过程中并不会对视频数据进行实时渲染,所进行播放的采用的是预先渲染的视频帧,实现前端对多媒体数据的在先编辑,其所提前生产算法处理后的视频帧能够减少单帧渲染耗时过长而导致的卡顿问题,保证视频帧的稳定输出,从而保证用户播放时的体验;进一步地,还可在响应对预设多媒体数据的处理指令时,基于音频数据与预先渲染视频帧的同时播放实现视频播放的音画同步;此外,当视频帧不足时暂停音频同时等待视频帧生产,无需规定在预渲染阶段时整个视频的编码完成。
参照图1,示出了本申请的一种视频处理方法实施例的步骤流程图,应用于客户端,所述客户端内置有以播放器形式封装的前端视频编辑预处理引擎,侧重于在对多媒体数据进行处理,例如剪辑或者其他编辑操作的过程中,对所需处理的视频帧的播放过程,具体可以包括如下步骤:
步骤101,在播放器处于空闲状态时,通过前端视频编辑预处理引擎对预设视频数据进行预处理得到预渲染结果;
为了避免出现在对视频进行实时处理与实时渲染时所存在的单帧耗时过长的问题,可对所需处理的视频帧提前进行预处理与缓存,以便在对多媒体数据进行预览时可从缓存中直接获取预先处理的视频帧进行播放,基于提前生产的视频帧保证视频帧的稳定输出,从而保证用户播放时的体验。
对视频帧的提前预处理与缓存,可以表现为在播放器处于空闲状态时,对预设视频数据进行预处理,得到预渲染结果,其所得到的预渲染结果即可包括基于图像预处理后的视频帧。需要说明的是,预设视频数据可以是用户所需在线进行处理,例如需要进行剪辑或者其它编辑操作的视频数据、或者在剪辑过程中需要播放的混编视频等。
在实际应用中,为了实现对空闲状态的判定,可对播放器的工作状态进行检测,例如用户在客户端作用播放器界面的鼠标点击操作、对播放器界面的触控/滑动操作、对播放界面的键盘输入操作、播放器的播放状态等进行检测,若播放器界面并不存在用户所作用的鼠标点击操作、键盘输入操作以及触控/滑动操作,且当前播放器并未播放任何音频和/或视频,则可以表示播放器当前处于空闲状态。此对播放器的检测行为主要可通过浏览器的JavaScript脚本事件实现,且其基于脚本进行状态判定所需时间为毫秒级别,并不会干扰用户,也不会影响用户的界面,其并不需要基于后台多线程实现。
需要说明的是,对于播放器的检测行为是在用户允许且知悉的情况下进行的,其检测行为的允许提示可以是在内置以播放器形式封装的前端视频编辑预处理引擎时,也可以是在用户首次使用此播放器时,还可以是基于周期间隔对用户进行提示,或者基于在内置此播放器时用户所设置的信息进行提示等,对此,本申请实施例不加以限制。
在本申请的实施例中,对用户所需在线进行处理的视频数据所进行预处理,主要可通过集成服务端的视频编辑算法实现,具体的,为了向客户端提供云剪辑的服务需求,可在前端集成服务端的视频编辑算法,即其所集成的视频编辑算法可以是基于适用客户端的编程语言封装后的视频编辑算法。
示例性地,前端以浏览器JS服务调用为主,适用客户端的编程语言可以是WebAssembly或Wasm编程语言,即可采用WebAssembly技术对服务端的视频编辑算法进行重新编译与封装,然后采用所封装后得到的视频编辑算法提前对视频数据进行预先处理。需要说明的是,对于具体使用的视频编辑算法,本申请实施例不加限制。
步骤102,响应对预设多媒体的处理指令,获取所需处理的音频数据与预处理后的视频帧;
在提前对用户所需在线进行处理的视频数据进行处理,得到预处理后的视频帧之后,在对视频进行预览时可从缓存中直接获取预先处理的视频帧进行播放,基于所提供的足够的提前生产与缓存的视频帧,解决传统实时处理方式时由于性能不足而导致的在视频混编等复杂场景下丢帧、帧率不稳、卡顿等性能问题,保证在对视频进行剪辑或者编辑操作的过程中,视频帧的稳定输出与视频处理算法在前端落地的性能体验。
具体的,在接收到对预设多媒体数据的处理指令,即对视频进行预览的操作或者对视频进行剪辑或者其他编辑操作后,可获取所点击视频的音频数据,以及此点击视频在先预处理后的视频帧,以便对所获取的音频数据与预处理后的视频帧进行同时播放,即对多媒体数据进行处理或者预览的过程中并不会对视频数据进行实时渲染,所进行播放的采用的是预先渲染的视频帧。
步骤103,播放预处理后的视频帧和所需处理的音频数据。
在实际应用中,在提前对视频帧进行生成的过程中,其主要是在关闭音频的情况下对视频进行播放以获取所需处理的视频数据的,即在采用视频编辑算法进行处理时,不对音频数据进行提前播放,那么并不会对音频数据进行预处理。
对视频数据所进行的预渲染,在后续剪辑处理或者预览的过程中可能造成音画不同步的问题。那么在响应对多媒体数据的处理指令时,可以实时播放音频并隐藏其所点击播放的视频帧,然后同时消费预先渲染的视频帧,以在播放预先处理的视频帧的同时能够保证音画同步。
具体的,参照图2,示出了本申请实施例提供的音画同步的时序示意图,前端以浏览器JS服务调用为主,由于浏览器在播放多媒体数据时,视频和音频是同时播放的,无法导出单独轨道播放音频或视频,此时可在播放器中建立两个视频实例,以通过对两个相同的视频实例的管理实现音画同步。
其中,所建立的一个视频实例可提供给预渲染阶段的视频编辑的代理层使用,即可提供给预渲染阶段的视频编辑库在播放器处于空闲状态时,在关闭音频的情况下播放视频数据,以提前进行预处理后得到预处理后的视频帧,即生产视频帧;所建立的另一个视频实例可提供给用于实时播放的代理层,此代理层可在响应对播放器的播放指令,例如在用户点击播放时,可实时播放音频并隐藏其所点击播放的视频帧,且同时消费预先渲染的视频帧。
在一种优选的实施例中,当视频帧不足时,如图2所示,还可暂停音频,并同时等待视频帧生产,即并不会进行实时渲染,均是采用预先渲染的视频帧进行播放,且可暂停播放以等待视频帧的生成,无需规定在预渲染阶段时整个视频的编码完成。
在具体实现中,响应对多媒体数据的处理指令,获取用于缓存预处理后的视频帧的帧缓存队列,若帧缓存队列中的视频帧不满足预设播放条件,则暂停播放所播放的音频数据,并等待对播放器的视频数据进行预处理以得到预处理后的视频帧,直至帧缓存队列中的视频帧满足播放器的预设播放条件后,继续播放视频帧和所播放的音频数据。示例性地,帧缓存队列中所需满足的预设播放条件,可以为队列中所缓存的视频帧的时长达到播放器的所设置的可播放的时长阈值,对于预设播放条件的具体设置,可基于实际需要进行设置,本申请实施例不加以限制。
本申请实施例中,在播放器处于空闲状态时可提前通过前端视频编辑预处理引擎对预设视频数据进行预处理,得到预处理后的视频帧,以便在后续响应对预设多媒体数据的处理指令时,可获取所要处理的音频数据以及预先处理得到的视频帧,在播放预先处理的视频帧的同时播放所要处理的音频数据,基于对视频数据所进行的提前预处理操作,在对多媒体数据进行处理或者预览的过程中并不进行实时渲染,减少单帧渲染耗时过长而导致的卡顿问题,能够保证在处理时对视频帧的稳定输出,从而保证用户播放视频时的播放体验。
本申请实施例中所提出的视频处理方法,主要表现在对视频进行剪辑或者编辑操作的过程中,为用户提供视频帧稳定输出的播放体验。其客户端所内置的播放器本质上为前端视频编辑预处理引擎,预处理引擎在智能媒体生产项目Web前端(例如浏览器内的客户端),主要可通过代码集成的方式引用,在本申请实施例中前端视频编辑预处理引擎以前端播放器的形式进行展示。具体的,前端视频编辑预处理引擎可以以播放器的形式进行封装并内置于客户端的操作界面中,参照图3,示出了本申请实施例提供的前端视频编辑预处理引擎的架构示意图。
如图3所示,前端视频编辑预处理引擎310的架构可以具有多层组件,包括前端播放组件Player 311、前端图像编辑组件Video context 312、后台线程组件Web Worker 313以及算法封装组件Wasm 314。
具体的,参照图4,示出了本申请实施例提供的预处理引擎的工作示意图,前端播放组件Player 311主要负责在预渲染阶段时的视频提前播放操作,以便实现后续对视频帧的生产与缓存,以及在响应处理指令时的实时播放操作,对所缓存的视频帧与音频进行同时播放,保证音画同步。
前端视频编辑组件Video context 312主要负责视频、音频、图片等资源数据的时间编排,以及实现视频与图片的图像合成,其在进行图像合成的过程中,如图4所示,存在资源节点、WebGL特效节点以及Wasm节点。
其中,资源节点可对WebGL进行调用,WebGL可将视频、音频、图片等资源数据统一输出为纹理数据,纹理是一种WebGL的数据结构,且存放在GPU的显存中,由于在处理WebGL特效节点时,WebGL特效节点在主线程运行,其无需线程间的数据交换,即资源纹理无需转换,而在Wasm节点采用的是CPU算法,其需要通过WebGL的Read Pixel方法将纹理的GPU的显存数据转换为CPU的内存数据,以获取用于加工的纹理数据。即其资源节点主要可用于提供需要处理的视频数据的原始纹理数据,并通过转换的方式向Wasm节点提供特殊的数据。
WebGL特效节点封装的是前端多纹理合成、纹理缩放、裁剪等算法,其可用于对纹理数据进行加工,由于在处理WebGL特效节点时,WebGL特效节点在主线程运行,其无需线程间的数据交换,即并不涉及到资源纹理的转换,那么WebGL特效节点在加工完成后可直接输出加工后的纹理数据,以便在下一次渲染循环中进行处理;而在处理Wasm节点时,由于Wasm节点封装在Web worker里面,而WebGL对视频、图片的纹理数据处理基于主线程执行,此时浏览器的主线程和主线程所创建的Web worker无法共享内存,且Wasm节点并不能直接使用存放于GPU的纹理数据,需要将ReadPixel后的内存数据发送到Web worker中,具体的,Wasm节点封装的是服务端转换到Wasm的图像处理算法,其可通过接收素材节点提供的原始纹理数据,对纹理数据进行加工,并将处理好的加工数据重新发送给主线程,以便主线程将这些加工后的数据进行转换,生成加工后的纹理数据,以便在下一次渲染循环中进行处理。
后台线程组件Web worker 313主要负责对thread.js的线程池进行改造,通过主线程按照任务创建worker线程的逻辑,将一些任务分配给所创建的worker线程运行,使得在主线程运行的同时,worker线程在后台运行,主线程与worker线程之间相互不干扰。在本申请实施例中,主要是对视频编辑算法进行Web worker的封装,其所实现的worker线程可以包括特效worker线程和字幕worker线程,其中特效worker线程负责调用Wasm实例的特效处理算法,字幕worker线程主要负责管理字幕处理算法的Wasm实例,以基于多个worker线程在不影响主线程的同时执行不同的任务,降低Wasm实例初始化的内存消耗。
算法封装组件Wasm 314可对服务端的视频编辑算法进行封装,其主要是通过emscripten工具编译,实现特效、转场、字幕等算法的Wasm封装。
参照图5,示出了本申请的另一种视频处理方法实施例的步骤流程图,应用于客户端,所述客户端内置有如图3所示的以播放器形式封装的前端视频编辑预处理引擎,侧重于在对多媒体数据进行处理,例如剪辑或者其他编辑操作的过程中对视频帧的预处理过程,具体可以包括如下步骤:
步骤501,在播放器处于空闲状态时,获取目标视频编辑算法与所需处理的视频数据;
在本发明实施例中,可基于自研的前端视频编辑预处理引擎,利用播放器所处于的空闲时间提前采用视频编辑算法对播放器的视频数据进预处理,实现对视频帧的预生成与预缓存。
在实际应用中,预处理引擎在智能媒体生产项目Web前端中主要可通过代码集成的方式引用,可将预处理引擎封装为一个播放器的形式,内置于Web前端的操作界面。此时,Web前端可通过封装预渲染引擎需要的视频素材、特效、滤镜、转场等数据结构,作为所需处理的视频数据,提供给预渲染引擎进行预渲染。
对视频帧的提前预处理与缓存,可以表现为在播放器处于空闲状态时,对用户所需在线进行处理视频数据进行预处理,得到预渲染结果,其所得到的预渲染结果即可包括基于图像预处理后的视频帧。
在实际应用中,为了实现对空闲状态的判定,可通过时序状态管理对播放器的工作状态进行检测,例如用户在客户端作用播放器界面的鼠标点击操作、对播放器界面的触控/滑动操作、对播放界面的键盘输入操作、播放器的播放状态等进行检测,若播放器界面并不存在用户所作用的鼠标点击操作、键盘输入操作以及触控/滑动操作,且当前播放器并未播放或者处理任何音频和/或视频,则可以表示播放器当前处于空闲状态。
其中,时序状态管理可以指的是对播放器在播放时会出现的时序及状态的变换进行调度,时序是指视频播放时间的变化,即播放时时间的递增、暂停时间、用户对播放时间点的调整,状态是指视频播放、暂停、等待与结束等。时序状态管理在预处理引擎的作用,可表现为通过时序状态的检测,作为一种示例,可在用户对播放器处于暂停状态或者空闲状态时,通过检测用户当前视频播放的时间,去判断哪些视频帧需要进行预处理与预缓存;作为又一种示例,可在用户对播放其进行播放操作时,将预缓存的帧进行播放,并处理缓存时间点后的帧。以及,时序状态管理在后续消费视频帧及音画同步的过程中,同样可起到检测视频时序的状态变化的作用,例如在播放时同时消费预缓存的视频帧及对应的音频实现音画同步,在用户暂停时不进行对缓存中任何视频帧的消费。
在本申请实施例中,当播放器的工作状态处于空闲状态时,可生成预渲染任务,所生成的预渲染任务用于执行在关闭音频的情况下播放视频的操作,此时可执行预渲染任务,得到预播放的视频数据,即用于提供给预渲染引擎进行预渲染的数据,其可包括视频素材、特效、滤镜、转场等数据结构。
具体的,参照图6,示出了本申请实施例提供的预处理流程示意图,预渲染任务的生成与完成主要是通过前端播放组件Player 311与前端图像编辑组件Video context 312的共同操作实现,其中,前端播放组件311中的缓冲播放器Buffer Player可控制图像编辑组件312中的帧生产者Video Context Producer进行生产行为。
帧生产者Video Context Producer主要是对预处理的视频帧生产行为进行封装,其集成Video context层,即前端图像编辑组件中,可相当于预处理能力的接口组件。其主要可根据当前视频播放的时间及状态,生成预处理的任务(即预渲染任务),然后将这些任务分发给Video Context组件进行处理,Video Context组件再将任务拆分为Wasm及WebGL处理节点的任务,分发给Wasm及WebGL处理节点进行处理,而Wasm及WebGL处理节点在处理任务后,可再将任务结果提交给Video Context组件完成单次的任务处理。即当帧缓存队列不足或播放器处于空闲状态时,可通知Video Context Producer调用Video Context的update Generator方法生产预渲染任务,以采用所封装得到的算法对视频帧进行预处理,生成视频帧。
步骤502,采用目标视频编辑算法对所需处理的视频数据进行预处理,得到预处理后的视频帧;
具体的,所进行的预处理操作可通过集成服务端的视频编辑算法实现,为了向客户端提供云剪辑的服务需求,具体可表现为在前端集成服务端的视频编辑算法,即其所集成的视频编辑算法可以是基于适用客户端的编程语言封装后的视频编辑算法。
示例性地,前端以浏览器JS服务调用为主,适用客户端的编程语言可以是WebAssembly或Wasm编程语言,即可采用WebAssembly技术对服务端的视频编辑算法进行重新编译与封装,然后采用所封装后得到的视频编辑算法提前对视频数据进行预先处理。
在实际应用中,所编译与封装的视频编辑算法可包括图像处理算法,图像处理算法可以包括特效处理算法和字幕处理算法,其中特效处理算法可进行如下至少一项特效加工操作:特效处理、滤镜处理以及转场处理,字幕处理算法可进行如下至少一项字幕加工操作:花字处理以及字幕特效处理。对于上述所需要编译与封装的图像处理算法,可通过emscripten工具编译实现特效、转场、字幕算法的Wasm封装。需要说明的是,对于具体使用的特效处理算法和字幕处理算法,本申请实施例不加限制。
上述所需要编译与封装的图像处理算法可以通过C/C++语言的方式编写而成,而emscripten工具是一种C/C++语言的编译工具,可以将C/C++语言编译成可以在浏览器使用的WebAssembly语言代码。
在具体实现中,由于Web前端JS调用需要根据服务需求定制接口,前端接口与服务端接口场景有较大区别,服务端主要以FFmpeg这块开源库为基础,在Linux服务器环境中直接运行,因此服务端会将算法封装为标准的FFmpeg接口调用。而前端以浏览器JS服务调用为主,依赖浏览器运行环境及服务场景,则需要根据服务场景,对算法进行重新封装,在把算法库直接通过c语言引入后,根据服务场景编译算法调用C语言接口函数,封装成一个服务代码库,以通过emscripten工具编译这个服务代码库及算法库,形成Wasm及JS代码,使得前端可通过JS引入编译后的代码即可集成上述特效、转场、字幕的算法能力。
在本申请实施例中,可基于传统的优化方案多worker线程集成的基础上,通过在用户空闲时间提前进行预处理与缓存,减少单帧渲染耗时过长而导致的问题,通过其所提前基于算法处理后的视频帧,保证在对多媒体数据进行处理或者预览的过程中视频帧的稳定输出,从而保证用户播放时的体验。
在基于WebAssembly对服务端的视频编辑算法,包括云视频服务端的图像、字幕、视频的处理算法进行编译与封装后,还需对其进行调用。其中,图像合成算法可基于第一线程(为主线程)进行调用,而图像合成算法基于第二线程(为非主线程)进行调用。
此时可在通过第一线程执图像合成算法,例如WebGL特效节点封装的是前端多纹理合成、纹理缩放、裁剪等算法的过程中,获取所需处理的视频数据的原始纹理数据,即基于资源节点所提供的需要处理的视频数据的原始纹理数据,在执行此主线程的过程中,可通过第二线程调用图像处理算法对原始纹理数据进行加工,得到加工后的视频数据,以便通过第一线程对加工后的视频数据转换生成加工后的纹理数据,并基于加工后的纹理数据进行图像合成,得到预处理后的视频帧。
其中,图像处理算法包括特效处理算法,此特效处理算法可以是基于适用客户端的编程语言封装的特效处理算法,此时在对原始纹理数据加工的特效处理算法进行调用时,其所采用的第二线程可以为基于主线程所创建的特效worker线程,以便特效worker线程负责调用Wasm实例的特效处理算法,对原始纹理数据进行加工,以执行如下至少一项特效加工操作:特效处理、滤镜处理以及转场处理,得到加工后的视频数据,具体的,Wasm节点封装的是服务端转换到Wasm的图像处理算法,其可通过接收素材节点提供的原始纹理数据,并对经Read Pixel后的纹理数据进行加工,将处理好的加工数据重新发送给主线程,以便主线程将这些加工后的数据转换生成加工后的纹理数据。
在得到预处理后的视频帧之后,此时所得到的视频帧为进行特效、滤镜、转场等预处理后的结果,即此预处理后的视频帧还未进行过字幕处理,此时可对预处理后的视频帧进行渲染的同时,对此视频帧进行字幕处理。
在实际应用中,预处理后的视频帧包括与字幕对应时间节点的视频帧,此时可调用字幕处理算法对与字幕对应时间节点的视频帧进行如下至少一项字幕加工操作:花字处理以及字幕特效处理,得到字幕加工后的视频帧,然后将字幕加工后的视频帧重新写入帧缓存队列。
具体的,当用户点击播放时,播放组件311中的Buffer Player可调用图像编辑组件312中的帧消费者Video Context Customer将帧缓存队列中的图像传输到用于预览的屏幕上。
其中,字幕处理可通过主线程创建的Web worker后台线程实现,假设主线程执行视频的实时播放,其可通过线程池创建的字幕算法worker进程,调用Wasm字幕算法进行字幕与视频实时播放的并行计算能力,对字幕进行处理,将处理得到的字幕数据,即此字幕算法进程完成其计算任务后,将结果(即字幕数据)返回给主线程,以便主线程采用所接收到的字幕数据对预处理后的视频帧进行字幕处理。
在本申请实施例中,字幕worker与特效worker之间相互独立,字幕worker是在预渲染完成后,对预渲染完成的帧的缓存进行渲染。字幕worker主要处理字幕的特效(字幕动画,花字特效等),这些字幕特效依赖预渲染处理后的图像,需要在帧缓存队列中存在视频帧时进行处理。在任务分配上,可以表现为在用户空闲时可预先对视频数据进行特效预处理,生成预渲染的视频帧(即预处理后的视频帧)并存放到帧缓存队列中,此时字幕任务调度器在检测到帧缓存队列中存在字幕对应时间节点的视频帧生成后,可将此与字幕对应时间点的视频帧标记为待处理,并将视频帧发送给字幕worker,字幕worker可在对视频帧进行处理后重新放到缓存帧队列。需要说明的是,对视频帧的字幕处理是在预渲染阶段后进行的处理,其不一定是实时处理,只要帧缓存队列中存在与字幕对应时间点的视频帧即可进行处理,对此,本申请实施例不加以限制。
步骤503,按照预设时间周期轮询预渲染任务的状态,在预渲染任务的状态处于完成状态时,将预处理后的视频帧写入帧缓存队列中。
在对视频帧进行预处理后,可将预处理后的视频帧写入帧缓存队列中,帧缓存队列用于在响应对多媒体数据的处理操作时,对预处理后的视频帧进行读取。
具体的,如图6所示,预渲染任务的生成与完成主要是通过前端播放组件Player311与前端图像编辑组件Video context 312的共同操作实现,其中,前端播放组件311中的缓冲播放器Buffer Player除了可控制图像编辑组件312中的帧生产者Video ContextProducer进行生产行为以外,还可以控制图像编辑组件312中的帧消费者Video ContextCustomer进行消费行为。
帧消费者Video Context Customer主要是对视频帧消费行为进行封装,其主要用于在对多媒体数据进行预览或者进行剪辑等编辑操作时,将预处理缓存的播放帧进行上屏,且其还可以通过对帧缓存队列的检测以通知播放器下一帧是否可以播放,在一种情况下,如果可以播放则通知播放器继续播放,在另一种情况下,若不可播放则通知播放器暂停播放与等待。即当通知Video ContextProducer调用Video Context组件的updateGenerator方法生产预渲染任务后,可通过前端按照预设时间周期轮询预渲染任务的状态,例如通过requestAnimationFrame请求动画帧的方式周期性轮询渲染任务的状态,当预渲染任务完成时可将预处理后的视频帧回写到帧缓存队列中,以便当用户点击播放时,可响应此时的播放指令,通过BufferPlayer调用Video Context Customer将帧缓存队列中的图像传输至用于预览的屏幕上,实现对预处理的视频帧的消费。
在一种优选的实施例中,在将预处理后的视频帧写入帧缓存队列之后,可以响应对视频的处理操作,获取音频数据并从缓存队列中读取预先处理的视频帧,以在响应对多媒体数据的处理指令时,可以实时播放音频并隐藏其所点击播放的视频帧,然后同时消费预先渲染的视频帧,在播放预先处理的视频帧的同时能够保证音画同步。
在另一种优选的实施例中,当视频帧不足时,还可暂停音频,并同时等待视频帧生产,即并不会进行实时渲染,均是采用预先渲染的视频帧进行播放,且可暂停播放以等待视频帧的生成,无需规定在预渲染阶段时整个视频的编码完成。
在具体实现中,在此情况下,可响应对多媒体数据的处理指令,获取用于缓存预处理后的视频帧的帧缓存队列,若帧缓存队列中的视频帧不满足预设播放条件,则暂停播放所播放的音频数据,并等待对播放器的视频数据进行预处理以得到预处理后的视频帧,直至帧缓存队列中的视频帧满足播放器的预设播放条件后,继续播放视频帧和所播放的音频数据。示例性地,帧缓存队列中所需满足的预设播放条件,可以为队列中所缓存的视频帧的时长达到播放器的所设置的可播放的时长阈值,对于预设播放条件的具体设置,可基于实际需要进行设置,本申请实施例不加以限制。
本申请实施例中,在播放器处于空闲状态时可提前通过前端视频编辑预处理引擎对预设视频数据进行预处理,得到预处理后的视频帧,以便在后续响应对预设多媒体数据的处理指令时,可获取所要处理的音频数据以及预先处理得到的视频帧,在播放预先处理的视频帧的同时播放所要处理的音频数据,基于对视频数据所进行的提前预处理操作,在对多媒体数据进行处理或者预览的过程中并不进行实时渲染,减少单帧渲染耗时过长而导致的卡顿问题,能够保证在处理时对视频帧的稳定输出,从而保证用户播放视频时的播放体验。
参照图7,示出了本申请实施例提供的视频处理的应用场景示意图,本申请实施例提出的视频处理方法可以应用于采用智能媒体生产项目进行视频云处理的场景。在此场景下,智能媒体生产项目能够为具有音视频生产需求的客户提供一站式在线协同云服务,其所提供的云服务可以包括类似媒体资源管理、云端媒资(直播流+图文+音视频)剪辑合成、视频模板创作等服务,且智能媒体生产项目可通过提供API、web SDK和native SDK本地SDK等多种数据互通的采集方式,实现移动端、Web端以及其他平台客户端进行音视频剪辑与音视频的其它相关处理,主要表现在对视频进行剪辑或者编辑操作的过程中,为用户提供视频帧稳定输出的播放体验。
为了向客户端提供云剪辑的服务需求,在对视频进行剪辑或者编辑操作的过程中,为用户提供视频帧稳定输出的播放体验,智能媒体生产项目可在前端集成服务端的视频编辑算法,在智能媒体生产项目Web前端中主要可通过代码集成的方式引用如图3与图4所示的前端视频编辑预处理引擎,而在实际应用中,如图7所示,可将预处理引擎封装为一个播放器的形式内置于Web前端的操作界面,即前端视频编辑预处理引擎以前端播放器的形式进行展示。
在此场景下,当内置在Web前端操作界面的播放器处于空闲状态时,此时可以在后台程序中在关闭音频的情况下播放视频,以提前对播放器的视频数据进行预处理,其生产视频帧的流程可以采用如图3与图4所示的前端视频编辑预处理引擎,参照上述视频处理方法实施例的步骤流程实现,在此本申请实施例不加以赘述。
而在接收到用户对播放器中某个视频数据的点击预览或者处理时,此时可响应对播放器的播放指令时,从帧缓存队列中获取生产的视频帧以消费此视频帧,假设在时刻A时,在帧缓存队列中所存放的视频帧不满足预设播放条件,例如所缓存的视频帧的时长达到播放器的所设置的可播放的时长阈值,那么此时将会暂停视频播放,等待到时刻B时在帧缓存队列中所存放的视频帧满足预设播放条件时,从帧缓存队列中获取视频帧并实时播放音频,满足在视频混编复杂场景下,对所需处理视频的在进行剪辑或者其他编辑操作时,针对预览播放的视频帧的稳定输出。
本申请实施例中,所提前生产算法处理后的视频帧能够减少单帧渲染耗时过长而导致的卡顿问题,保证在对多媒体数据进行处理的过程中视频帧的稳定输出,从而保证用户播放时的体验;进一步地,还可基于音频数据与预先渲染视频帧的同时播放,实现视频播放的音画同步;此外,当视频帧不足时暂停音频同时等待视频帧生产,无需规定在预渲染阶段时整个视频的编码完成。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
参照图8,示出了本申请的一种视频处理装置实施例的结构框图,应用于客户端,所述客户端内置有以播放器形式封装的前端视频编辑预处理引擎,具体可以包括如下模块:
预处理模块801,位于所述前端视频编辑预处理引擎,用于在播放器处于空闲状态时,对预设视频数据进行预处理得到预渲染结果;所述预渲染结果包括基于图像预处理后的视频帧;
处理指令响应模块802,用于响应对预设多媒体数据的处理指令,获取所需处理的音频数据与预处理后的视频帧;
视频播放模块803,用于播放所述预处理后的视频帧和所需处理的音频数据。
在本申请的一种实施例中,预处理模块801可以包括如下子模块:
视频数据获取子模块,用于在播放器处于空闲状态时,获取目标视频编辑算法与所需处理的视频数据;所述目标视频编辑算法为基于适用所述客户端的编程语言封装后的视频编辑算法;
预处理子模块,用于采用所述目标视频编辑算法对所述所需处理的视频数据进行预处理,得到预处理后的视频帧。
在本申请的一种实施例中,视频数据获取子模块可以包括如下单元:
渲染任务生成单元,用于检测所述播放器的工作状态,在所述播放器的工作状态处于空闲状态时,生成预渲染任务;
视频数据获取单元,用于执行所述预渲染任务,得到所需处理的视频数据;所述预渲染任务用于执行在关闭音频的情况下播放视频的操作。
在本申请的一种实施例中,所述目标视频编辑算法包括图像处理算法和图像合成算法,所述图像合成算法基于第一线程调用,所述图像处理算法基于第二线程调用;
预处理子模块可以包括如下单元:
第一线程执行单元,用于在通过第一线程执行所述图像合成算法的过程中,获取所述所需处理的视频数据的原始纹理数据;
第二线程执行单元,用于通过第二线程调用所述图像处理算法对所述原始纹理数据进行加工,得到加工后的视频数据;
图像合成单元,用于通过第一线程对所述加工后的视频数据转换生成加工后的纹理数据,并基于所述加工后的纹理数据进行图像合成,得到预处理后的视频帧。
在本申请的一种实施例中,所述图像处理算法包括特效处理算法,所述特效处理算法为基于适用所述客户端的编程语言封装的特效处理算法;第二线程执行单元可以包括如下子单元:
视频数据加工子单元,用于在所述第一线程工作的同时,通过所述第二线程调用所述特效处理算法,对所述原始纹理数据进行如下至少一项特效加工操作:特效处理、滤镜处理以及转场处理,得到加工后的视频数据。
在本申请的一种实施例中,预处理模块801还可以包括如下子模块:
状态轮询子模块,用于按照预设时间周期轮询所述预渲染任务的状态;
第一缓存子模块,用于在所述预渲染任务的状态处于完成状态时,将预处理后的视频帧写入帧缓存队列中;所述帧缓存队列用于在响应对所述播放器的播放操作时对预处理后的视频帧进行读取。
在本申请的一种实施例中,所述预处理后的视频帧包括与字幕对应时间节点的视频帧,预处理模块801还可以包括如下子模块:
字幕加工子模块,用于调用字幕处理算法对所述与字幕对应时间节点的视频帧进行如下至少一项字幕加工操作:花字处理以及字幕特效处理,得到字幕加工后的视频帧;
第二缓存子模块,用于将所述字幕加工后的视频帧重新写入帧缓存队列。
在本申请的一种实施例中,所述装置还可以包括如下模块:
缓存队列获取模块,用于响应对所述播放器的播放指令,获取用于缓存预处理后的视频帧的帧缓存队列;
暂停播放模块,用于在所述帧缓存队列中的视频帧不满足预设播放条件时,暂停播放所播放的音频数据,直至所述帧缓存队列中的视频帧满足所述播放器的预设播放条件后,继续播放视频帧和所播放的音频数据。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请实施例还提供了一种电子设备,包括:
包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述视频处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现上述视频处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种视频处理方法、一种视频处理装置、相应的一种电子设备以及相应的一种计算机存储介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (11)

1.一种视频处理方法,其特征在于,应用于客户端,所述客户端内置有以播放器形式封装的前端视频编辑预处理引擎,所述方法包括:
在播放器处于空闲状态时,通过所述前端视频编辑预处理引擎对预设视频数据进行预处理得到预渲染结果;所述预渲染结果包括基于图像预处理后的视频帧;
响应对预设多媒体数据的处理指令,获取所需处理的音频数据与预处理后的视频帧;
播放所述预处理后的视频帧和所处理的音频数据。
2.根据权利要求1所述的方法,其特征在于,所述在播放器处于空闲状态时,通过所述前端视频编辑预处理引擎对预设视频数据进行预处理得到预渲染结果,包括:
在播放器处于空闲状态时,获取目标视频编辑算法与所需处理的视频数据;所述目标视频编辑算法为基于适用所述客户端的编程语言封装后的视频编辑算法;
采用所述目标视频编辑算法对所述所需处理的视频数据进行预处理,得到预处理后的视频帧。
3.根据权利要求2所述的方法,其特征在于,获取所需处理的视频数据,包括:
检测所述播放器的工作状态,在所述播放器的工作状态处于空闲状态时,生成预渲染任务;
执行所述预渲染任务,得到所需处理的视频数据;所述预渲染任务用于执行在关闭音频的情况下播放视频的操作。
4.根据权利要求2所述的方法,其特征在于,所述目标视频编辑算法包括图像处理算法和图像合成算法,所述图像合成算法基于第一线程调用,所述图像处理算法基于第二线程调用;
所述采用所述目标视频编辑算法对所述所需处理的视频数据进行预处理,得到预处理后的视频帧,包括:
在通过第一线程执行所述图像合成算法的过程中,获取所述所需处理的视频数据的原始纹理数据;
通过第二线程调用所述图像处理算法对所述原始纹理数据进行加工,得到加工后的视频数据;
通过第一线程对所述加工后的视频数据转换生成加工后的纹理数据,并基于所述加工后的纹理数据进行图像合成,得到预处理后的视频帧。
5.根据权利要求4所述的方法,其特征在于,所述图像处理算法包括特效处理算法,所述特效处理算法为基于适用所述客户端的编程语言封装的特效处理算法;所述通过第二线程调用所述图像处理算法对所述原始纹理数据进行加工,得到加工后的视频数据,包括:
在所述第一线程工作的同时,通过所述第二线程调用所述特效处理算法,对所述原始纹理数据进行如下至少一项特效加工操作:特效处理、滤镜处理以及转场处理,得到加工后的视频数据。
6.根据权利要求2所述的方法,其特征在于,在得到预处理后的视频帧之后,还包括:
按照预设时间周期轮询所述预渲染任务的状态;
在所述预渲染任务的状态处于完成状态时,将预处理后的视频帧写入帧缓存队列中;所述帧缓存队列用于在响应对所述播放器的播放操作时对预处理后的视频帧进行读取。
7.根据权利要求2或4或6所述的方法,其特征在于,所述预处理后的视频帧包括与字幕对应时间节点的视频帧,在得到预处理后的视频帧之后,还包括:
调用字幕处理算法对所述与字幕对应时间节点的视频帧进行如下至少一项字幕加工操作:花字处理以及字幕特效处理,得到字幕加工后的视频帧;
将所述字幕加工后的视频帧重新写入帧缓存队列。
8.根据权利要求1或2所述的方法,其特征在于,还包括:
响应对所述播放器的播放指令,获取用于缓存预处理后的视频帧的帧缓存队列;
若所述帧缓存队列中的视频帧不满足预设播放条件,则暂停播放所播放的音频数据,直至所述帧缓存队列中的视频帧满足所述播放器的预设播放条件后,继续播放视频帧和所播放的音频数据。
9.一种视频处理装置,其特征在于,应用于客户端,所述客户端内置有以播放器形式封装的前端视频编辑预处理引擎,所述装置包括:
预处理模块,用于在播放器处于空闲状态时,通过所述前端视频编辑预处理引擎对预设视频数据进行预处理得到预渲染结果;所述预渲染结果包括基于图像预处理后的视频帧;
处理指令响应模块,用于响应对预设多媒体数据的处理指令,获取所需处理的音频数据与预处理后的视频帧;
视频播放模块,用于播放所述预处理后的视频帧和所需处理的音频数据。
10.一种电子设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1-8中任一项所述视频处理方法的步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8中任一项所述视频处理方法的步骤。
CN202210590383.7A 2022-05-27 2022-05-27 视频处理方法、装置、设备及存储介质 Active CN115134658B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210590383.7A CN115134658B (zh) 2022-05-27 2022-05-27 视频处理方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210590383.7A CN115134658B (zh) 2022-05-27 2022-05-27 视频处理方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN115134658A true CN115134658A (zh) 2022-09-30
CN115134658B CN115134658B (zh) 2024-05-14

Family

ID=83378832

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210590383.7A Active CN115134658B (zh) 2022-05-27 2022-05-27 视频处理方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN115134658B (zh)

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070006060A1 (en) * 2005-06-30 2007-01-04 Microsoft Corporation GPU timeline with render-ahead queue
CN101312519A (zh) * 2008-07-04 2008-11-26 深圳华为通信技术有限公司 数据帧处理方法和装置
CN102638658A (zh) * 2012-03-01 2012-08-15 盛乐信息技术(上海)有限公司 音视频编辑方法及系统
CN103500096A (zh) * 2013-09-27 2014-01-08 宇龙计算机通信科技(深圳)有限公司 一种信息处理方法及装置
CN103729167A (zh) * 2012-10-12 2014-04-16 辉达公司 用于改进多线程处理单元中的性能的技术
CN104661092A (zh) * 2015-03-09 2015-05-27 深圳市茁壮网络股份有限公司 一种视频播放控制方法、系统及机顶盒
CN107211165A (zh) * 2015-01-09 2017-09-26 艾斯适配有限公司 用于自动延迟视频演示的装置、系统和方法
CN111641838A (zh) * 2020-05-13 2020-09-08 深圳市商汤科技有限公司 一种浏览器视频播放方法、装置以及计算机存储介质
CN112399249A (zh) * 2020-11-12 2021-02-23 创盛视联数码科技(北京)有限公司 多媒体文件生成方法、装置、电子设备及存储介质
CN112449231A (zh) * 2019-08-30 2021-03-05 腾讯科技(深圳)有限公司 多媒体文件素材的处理方法、装置、电子设备及存储介质
CN113282390A (zh) * 2021-05-20 2021-08-20 北京达佳互联信息技术有限公司 任务调度方法、装置、电子设备及可读存储介质
CN113383313A (zh) * 2019-03-15 2021-09-10 英特尔公司 用于图形处理的线程组调度

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070006060A1 (en) * 2005-06-30 2007-01-04 Microsoft Corporation GPU timeline with render-ahead queue
CN101312519A (zh) * 2008-07-04 2008-11-26 深圳华为通信技术有限公司 数据帧处理方法和装置
CN102638658A (zh) * 2012-03-01 2012-08-15 盛乐信息技术(上海)有限公司 音视频编辑方法及系统
CN103729167A (zh) * 2012-10-12 2014-04-16 辉达公司 用于改进多线程处理单元中的性能的技术
CN103500096A (zh) * 2013-09-27 2014-01-08 宇龙计算机通信科技(深圳)有限公司 一种信息处理方法及装置
CN107211165A (zh) * 2015-01-09 2017-09-26 艾斯适配有限公司 用于自动延迟视频演示的装置、系统和方法
CN104661092A (zh) * 2015-03-09 2015-05-27 深圳市茁壮网络股份有限公司 一种视频播放控制方法、系统及机顶盒
CN113383313A (zh) * 2019-03-15 2021-09-10 英特尔公司 用于图形处理的线程组调度
CN112449231A (zh) * 2019-08-30 2021-03-05 腾讯科技(深圳)有限公司 多媒体文件素材的处理方法、装置、电子设备及存储介质
CN111641838A (zh) * 2020-05-13 2020-09-08 深圳市商汤科技有限公司 一种浏览器视频播放方法、装置以及计算机存储介质
CN112399249A (zh) * 2020-11-12 2021-02-23 创盛视联数码科技(北京)有限公司 多媒体文件生成方法、装置、电子设备及存储介质
CN113282390A (zh) * 2021-05-20 2021-08-20 北京达佳互联信息技术有限公司 任务调度方法、装置、电子设备及可读存储介质

Also Published As

Publication number Publication date
CN115134658B (zh) 2024-05-14

Similar Documents

Publication Publication Date Title
CN111669623B (zh) 视频特效的处理方法、装置以及电子设备
RU2391709C2 (ru) Координация анимаций и мультимедиа при выводе на компьютерный дисплей
KR101365829B1 (ko) 대화형 멀티미디어 프리젠테이션을 재생하는 방법을 수행하는 컴퓨터 실행가능 명령어들이 인코딩된 컴퓨터 판독가능 매체, 및 대화형 멀티미디어 프리젠테이션을 재생하는 프리젠테이션 시스템 및 장치
JP4959695B2 (ja) 対話型マルチメディア・プレゼンテーション管理の同期性
CN109242934B (zh) 一种动画代码的生成方法及设备
US11653072B2 (en) Method and system for generating interactive media content
JP5425322B2 (ja) 対話型メディア環境におけるイベントのキューイング
JP2008545335A5 (zh)
JP2009501459A (ja) 対話式マルチメディア環境の状態変化への宣言式応答
CN113891113A (zh) 视频剪辑合成方法及电子设备
JP7392136B2 (ja) ビデオコンテンツを表示するための方法、コンピュータシステム、およびコンピュータプログラム
CN114071226B (zh) 视频预览图的生成方法及装置、存储介质及电子设备
CN1921610B (zh) 基于客户端的视频流互动处理方法及处理系统
WO2022183519A1 (zh) 一种可实时交互的三维图形图像播放器
US7941739B1 (en) Timeline source
CN113535063A (zh) 直播页面切换方法、视频页面切换方法、电子设备及存储介质
US7934159B1 (en) Media timeline
JP2023506364A (ja) メッセージングプラットフォーム上のオーディオメッセージングインターフェース
CN113365150A (zh) 视频处理方法和视频处理装置
CN115134658B (zh) 视频处理方法、装置、设备及存储介质
CN114827186A (zh) 云应用处理方法和系统
US20240029381A1 (en) Editing mixed-reality recordings
CN117742863B (zh) 一种基于Qt和GStreamer结合的多媒体处理方法、系统
CN116546228B (zh) 用于虚拟场景的推流方法、装置、设备及存储介质
CN114339308A (zh) 一种视频流加载方法、电子设备及存储介质

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