合成视频文件的方法、装置、移动终端及存储介质
技术领域
本公开涉及媒体播放技术,尤其涉及一种合成视频文件的方法、装置、移动终端及存储介质。
背景技术
短视频应用程序(APP,Application),在用户进行视频发布的时候,存在合成两份视频文件的需求,一份用于发布上传,另一份用于分享,以拉动新增用户。然而,相关技术中的短视频APP只能单独的生成用于发布上传的视频文件及用于分享的视频文件,无法同时获得上述两份视频文件,用户体验差。
发明内容
有鉴于此,本公开实施例提供一种合成视频文件的方法、装置、移动终端及存储介质。
第一方面,本公开实施例提供一种合成视频文件的方法,所述方法包括:
解码基于移动终端的视频客户端得到的视频文件,得到对应的视频帧图像;
将所述视频帧图像渲染到纹理,得到相应渲染后的纹理;
基于所述渲染后的纹理,采用并行的硬件编码方式,分别合成用于所述视频客户端发布的第一视频文件,
以及,合成用于分享至其它视频客户端的添加有水印的第二视频文件;
其中,当对用于合成所述第一视频文件的硬件单元初始化失败时,切换合成所述第一视频文件的编码方式为软件编码方式。
上述方案中,所述用于合成所述第一视频文件的硬件单元为数字信号处理器(DSP,Digital Signal Processing);
所述合成用于所述视频客户端发布的第一视频文件,包括:
响应于图形处理器(GPU,Graphics Processing Unit)发送的编码指令,初始化所述DSP;
当所述初始化成功时,采用所述DSP对所述渲染后的纹理进行编码,得到用于所述视频客户端发布的第一视频文件。
上述方案中,所述方法还包括:
当所述初始化失败时,采用中央处理器(CPU,Central Processing Unit)读取所述渲染后的纹理至内存,得到对应所述内存中的图像;
CPU对所述内存中的图像进行编码,得到用于所述视频客户端发布的第一视频文件。
上述方案中,所述合成用于分享至其它视频客户端的添加有水印的第二视频文件,包括:
采用GPU对所述渲染后的纹理进行渲染,得到添加有水印的纹理;
采用DSP对所述添加有水印的纹理进行编码,得到用于分享至其它视频客户端的添加有水印的第二视频文件。
上述方案中,所述将所述视频帧图像渲染到纹理,得到相应渲染后的纹理,包括:
加载内存中的所述视频帧图像至GPU,得到相应的纹理;
采用GPU对得到的所述纹理进行渲染,得到所述渲染后的纹理。
第二方面,本公开实施例还提供一种合成视频文件的装置,所述装置包括:
解码单元,用于解码基于移动终端的视频客户端得到的视频文件,得到对应的视频帧图像;
渲染单元,用于将所述视频帧图像渲染到纹理,得到相应渲染后的纹理;
第一合成单元,用于基于所述渲染后的纹理,采用硬件编码方式合成用于所述视频客户端发布的第一视频文件;
第二合成单元,用于基于所述渲染后的纹理,采用与所述第一合成单元并行的硬件编码方式,合成用于分享至其它视频客户端的添加有水印的第二视频文件;
其中,当对用于合成所述第一视频文件的硬件单元初始化失败时,所述第一合成单元切换合成所述第一视频文件的编码方式为软件编码方式。
上述方案中,所述用于合成所述第一视频文件的硬件单元为DSP;
所述第一合成单元,还用于响应于GPU发送的编码指令,初始化所述DS P;
当所述初始化成功时,采用所述DSP对所述渲染后的纹理进行编码,得到用于所述视频客户端发布的第一视频文件。
上述方案中,所述第一合成单元,还用于当所述初始化失败时,触发中央处理器CPU读取所述渲染后的纹理至内存,得到对应所述内存中的图像;
采用CPU对所述内存中的图像进行编码,得到用于所述视频客户端发布的第一视频文件。
上述方案中,所述渲染单元采用GPU实现,还用于对所述渲染后的纹理进行渲染,得到添加有水印的纹理;
所述第二合成单元,还用于采用DSP对所述添加有水印的纹理进行编码,得到用于分享至其它视频客户端的添加有水印的第二视频文件。
上述方案中,所述渲染单元,还用于加载内存中的所述视频帧图像至GPU,得到相应的纹理;
对得到的所述纹理进行渲染,得到所述渲染后的纹理。
第三方面,本公开实施例还提供一种移动终端,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本公开实施例提供的上述合成视频文件的方法。
第四方面,本公开实施例还提供一种存储介质,存储有可执行指令,所述可执行指令被执行时,用于实现本公开实施例提供的上述合成视频文件的方法。
应用本公开上述实施例具有以下有益效果:
应用本公开上述实施例,采用并行的硬件编码方式同时获得用于视频客户端发布的视频文件,以及用于分享至其它客户端的添加有水印的视频文件,相较于单独获得上述两份视频文件来说,耗时短、效率高,用户体验好;同时,当对用于合成第一视频文件的硬件单元初始化失败时,切换合成第一视频文件的编码方式为软件编码方式,确保编码的顺利完成。
附图说明
图1为本公开实施例提供的合成视频文件的系统的架构示意图;
图2为实现本公开实施例提供的移动终端的组成结构示意图;
图3为本公开实施例提供的合成视频文件的方法的流程示意图;
图4为本公开实施例提供的视频客户端的一个界面示意图;
图5为本公开实施例提供的合成视频文件的方法的流程示意图;
图6为本公开实施例提供的编码得到用于视频客户端发布的视频文件的流程示意图;
图7为本公开实施例提供的合成视频文件的装置的组成结构示意图。
具体实施方式
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
除非另有定义,本文所使用的所有的技术和科学术语与属于本公开实施例的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述具体的实施例的目的,不是旨在限制本公开实施例。
本公开实施例提供的附图中的流程图和框图,图示了按照本公开实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
需要指出,本公开实施例所涉及的术语“第一\第二”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本公开实施例能够以除了在这里图示或描述的以外的顺序实施。
对本公开实施例进行进一步详细说明之前,对本公开实施例中涉及的名词和术语进行说明,本公开实施例中涉及的名词和术语适用于如下的解释。
1)水印,是指向多媒体(图像、视频等)中添加某些数字信息以达到文件真伪鉴别、版权保护等功能,嵌入的水印设置于宿主文件中,不影响原始文件的可观性和完整性。
2)纹理,视频帧中的对象在颜色、几何上有规律的特性,以视频帧中各纹理像素的纹理坐标和对应的颜色值表示。
3)响应于,用于表示所执行的操作所依赖的条件或者状态,当满足所依赖的条件或状态时,所执行的一个或多个操作可以是实时的,也可以具有设定的延迟;在没有特别说明的情况下,所执行的多个操作不存在执行先后顺序的限制。
参见图1,图1是本公开实施例提供的合成视频文件的系统的一个可选的架构示意图,为实现支撑一个示例性应用,移动终端10(示例性示出了移动终端10-1和移动终端10-2)通过网络20连接服务器30,网络20可以是广域网或者局域网,又或者是二者的组合,使用无线链路实现数据传输。
移动终端10上设置有视频客户端(如视频直播客户端),通过视频客户端获取原始视频文件,对该原始视频文件进行解码,得到对应的视频帧图像;将所述视频帧图像渲染到纹理,得到相应渲染后的纹理;基于所述渲染后的纹理,采用并行处理的方式,分别合成用于所述视频客户端发布的视频文件,以及,合成用于分享至其它客户端的添加有水印的视频文件;
相应的,移动终端10还用于通过所述视频客户端在图形界面110(示例性示出了图形界面110-1和图形界面110-2)上显示其它移动终端发布的视频。
服务器30,用于接收移动终端10通过所述视频客户端发布的视频文件,使得其他移动终端能够通过所述视频客户端播放所述视频文件;
以及用于接收移动终端10通过所述视频客户端发送的分享至其它客户端的添加有水印的视频文件,使得移动终端能够通过被分享的所述其它客户端播放所述添加有水印的视频文件。
下面参见图2,图2是实现本公开实施例的移动终端的组成结构示意图。在本公开实施例中,移动终端包括但不限于诸如移动电话、个人数字助理(PDA,PersonalDigitalAssistant)、平板电脑(PAD)、便携式多媒体播放器(PMP,Portable Media Player)、车载终端(例如车载导航终端)等等的移动终端。图2示出的移动终端仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图2所示,移动终端可以包括处理装置(例如中央处理器、图形处理器等)210,其可以根据存储在只读存储器(ROM,Read-Only Memory)220中的程序或者从存储装置280加载到随机访问存储器(RAM,Random Access Memory)230中的程序而执行各种适当的动作和处理。在RAM 230中,还存储有移动终端操作所需的各种程序和数据。处理装置210、ROM 220以及RAM 230通过总线240彼此相连。输入/输出(I/O,Input/Output)接口250也连接至总线240。
通常,以下装置可以连接至I/O接口250:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置260;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置270;包括例如磁带、硬盘等的存储装置280;以及通信装置290。通信装置290可以允许移动终端与其他设备进行无线或有线通信以交换数据。虽然图2示出了具有各种装置的移动终端,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,所提供的流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,计算机程序可以通过通信装置290从网络上被下载和安装,或者从存储装置280被安装,或者从ROM220被安装。在计算机程序被处理装置210执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
在本公开实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、射频(RF)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述移动终端中所包含的;也可以是单独存在,而未装配入移动终端中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该移动终端执行时,使得移动终端执行本公开实施例提供的上述视频文件的处理方法。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)和广域网(WAN),以连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
描述于本公开实施例中所涉及到的单元和/或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。
对于硬件的方式来说,实现本公开实施例的移动终端的单元和/或模块可以被一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,ComplexProgrammable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable GateArray)或其他电子元件实现,用于执行实现本公开实施例提供的方法。
图3为本公开实施例提供的合成视频文件的方法的流程示意图,参见图3,本公开实施例的合成视频文件的方法包括:
步骤301:解码基于移动终端的视频客户端得到的视频文件,得到对应的视频帧图像。
在实际应用中,本公开实施例的视频文件的处理方法可由移动终端(如手机)来实施,移动终端上设置有视频客户端(如直播客户端、短视频APP等),用户通过移动终端中安装的视频客户端进行视频录制,得到原始视频文件,在视频录制过程中,用户可通过视频客户端对录制的视频进行编辑,如添加特效、滤镜等,以合成添加有特效或滤镜的视频文件并通过视频客户端进行发布。
图4为本公开实施例提供的视频客户端的一个界面示意图,参见图4,用户通过该视频客户端完成视频录制后,可点击“发布”按键实现具备特效处理的视频文件的合成,当用户同时勾选界面上的“保存本地”后,可实现同时合成两份视频文件,一份用于视频客户端(如视频客户端A)发布,另一份用于保存并分享至其它视频客户端(如视频客户端B),这里所说的其它视频客户端与所述移动终端上的所述视频客户端为不同的应用程序,功能可以相同或不同。
在实际实施中,移动终端接收到用户通过所述视频客户端的界面触发的视频合成指令,对基于所述视频客户端得到的视频文件进行解码,得到对应的视频帧图像,在一实施例中,移动终端可通过如下方式实现视频帧图像的获得:
基于视频文件的封装格式,对基于所述视频客户端得到的视频文件解码,得到内存中的视频帧图像(即buffer)。
步骤302:将所述视频帧图像渲染到纹理,得到相应渲染后的纹理。
在一实施例中,可通过如下方式实现所述渲染后的纹理的获得:
加载内存中的视频帧图像至GPU,得到相应的纹理(texture);采用GPU对得到的纹理进行渲染,得到所述渲染后的纹理。这里所述的渲染用于添加特效或滤镜等,因此,对纹理进行渲染后得到的纹理为添加特效/滤镜的纹理。
步骤303:基于渲染后的纹理,采用并行的硬件编码方式,分别合成用于视频客户端发布的第一视频文件,以及,合成用于分享至其它视频客户端的添加有水印的第二视频文件。
这里,在实际实施时,移动终端采用两个线程并行处理,得到用于视频客户端发布的视频文件(即不加水印的特效视频文件),以及用于分享至其它视频客户端的添加有水印的视频文件。
在实际实施时,默认对用于视频客户端发布的第一视频文件的合成采用硬件编码的方式,在一实施例中,用于合成第一视频文件的硬件单元为DSP,相应的,可采用如下方式实现第一视频文件的合成:
在GPU在得到渲染后的纹理之后,初始化DSP,并判断对DSP的初始化是否成功,如果初始化成功,采用所述DSP对所述渲染后的纹理进行编码,得到用于所述视频客户端发布的视频文件。其中,上述DSP可集成于GPU上,或与GPU独立存在,如此,由于编码合成用于发布的视频文件的过程,通过专门的硬件DSP来实现,使得相较于采用软件编码的方式来说处理速度更快,效率更高,保证了编码的时效性,用户体验更好。
在一实施例中,当对DSP的初始化失败时,还可采用软件编码的方式实现用于视频客户端发布的视频文件的合成,也即,当DSP初始化失败时,切换合成第一视频文件的编码方式为软件编码方式,具体地,CPU读取所述渲染后的纹理至内存,得到对应所述内存中的图像(buffer);对所述内存中的图像进行编码,得到用于所述视频客户端发布的视频文件。如此,由于编码合成用于发布的视频文件的过程通过CPU实现,使得相较于采用硬件编码的方式来说得到的视频文件的大小更小,所占用的移动终端的存储空间更小。
在实际应用中,默认对用于分享至其它视频客户端的添加有水印的第二视频文件的合成采用硬件编码的方式,合成用于分享至其它视频客户端的添加有水印的视频文件所采用的处理线程,与合成用于视频客户端发布的视频文件所采用的处理线程,为两个并行的处理线程,如此,能够同时合成两份具备不同用途的视频文件(不加水印的特效视频文件及添加有水印的视频文件),大大缩短了单独的生成每个视频文件所需要的时间,提高了用户体验。
在一实施例中,可通过如下方式合成用于分享至其它视频客户端的添加有水印的第二视频文件:
采用GPU对渲染后的纹理进行渲染,得到添加有水印的纹理;采用DSP对所述添加有水印的纹理进行编码,得到用于分享至其它视频客户端的添加有水印的第二视频文件。如此,当用户进行视频文件分享时,例如,通过视频客户端A得到添加有水印的视频文件,用户通过视频客户端A将添加有水印的视频文件分享至视频客户端B,由于该视频文件携带水印,可实现对该视频文件的版权保护。
在实际应用中,移动终端得到第一视频文件及第二视频文件以后,可以基于视频客户端上传得到的视频文件至服务器,以实现视频文件的发布,当用户通过该视频客户端触发获取指令(如点击对应视频文件的相关信息(链接、图标等))时,移动终端向服务器请求并获取视频文件进行播放。
在一实施例中,移动终端在得到第二视频文件之后,保存第二视频文件至移动终端本地,以在接收到用户触发的分享指令(用于指示分享第二视频文件至其它视频客户端)时,通过视频客户端分享第二视频文件至其它视频客户端。
在一实施例中,移动终端在得到第二视频文件之后,还可在视频客户端的界面中呈现分享提示信息给用户,并在接收到用户触发的确认消息时分享所述第二视频文件。
图5为本公开实施例提供的合成视频文件的方法的流程示意图,参见图5,本公开实施例提供的合成视频文件的方法包括:
步骤501:移动终端接收到视频合成指令。
在实际应用中,参见图4,当用户基于视频客户端录制视频完成时,在勾选“保存本地”的情况下点击“发布”按键,触发视频合成指令,该视频合成指令指示合成用于视频客户端发布的视频文件,以及,用于保存和/或分享至其它视频客户端的添加有水印的视频文件。
步骤502:响应于所述视频合成指令,获取基于视频客户端得到的视频文件。
这里,在实际应用中,基于视频客户端得到的视频文件为用户通过该视频客户端录制的原始视频文件。
步骤503:解码得到的视频文件,得到对应的视频帧图像。
在一实施例中,移动终端可通过如下方式实现视频帧图像的获得:
基于视频文件的封装格式,对基于所述视频客户端得到的视频文件解码,得到内存中的视频帧图像(即buffer),即对原始视频进行解码得到buffer。
步骤504:将所述视频帧图像渲染到纹理,得到相应渲染后的纹理。
在一实施例中,可通过如下方式实现所述渲染后的纹理的获得:
加载内存中的视频帧图像至GPU,得到相应的纹理(texture);采用GPU对得到的纹理进行渲染,得到所述渲染后的纹理,即加载buffer至GPU得到原始texture,对原始texture进行渲染得到渲染后的texture。这里所述的渲染用于对纹理添加特效或滤镜等,因此,对纹理进行渲染后得到的纹理为添加特效/滤镜的纹理。
步骤505:采用硬件编码的方式合成用于分享至其它视频客户端的添加有水印的视频文件。
这里,在实际实施时,合成用于分享至其它视频客户端的添加有水印的视频文件所采用的硬件单元可以采用DSP,在一实施例中,可通过如下方式合成用于分享至其它视频客户端的添加有水印的视频文件:
GPU对渲染后的纹理进行渲染,得到添加有水印的纹理(即渲染得到加水印texture);采用DSP对所述添加有水印的纹理进行编码,得到用于分享至其它视频客户端的添加有水印的视频文件(即编码得到合成加水印视频文件)。如此,当用户进行视频文件分享时,例如,通过视频客户端A得到添加有水印的视频文件,用户通过视频客户端A将添加有水印的视频文件分享至视频客户端B,由于该视频文件携带水印,可实现对该视频文件的版权保护。
步骤506:对渲染后的纹理进行编码,得到用于视频客户端发布的视频文件。
这里,需要说明的是步骤505与步骤506的操作为同时执行的两个并列的操作。
在本公开实施例中,由于不加水印的视频文件(用于视频客户端发布的视频文件)和加水印的视频文件(用于分享至其它视频客户端的视频文件)默认采用并行硬编码处理方式,因此,在实际应用中,应用层需要开设两个硬件编码实例,当移动终端中的DSP仅有一个时,在系统层仍然是串行工作,对于这种情况,可设定第一个硬件编码实例合成用于分享至其它视频客户端的添加有水印的视频文件,设定第二个硬件编码实例合成用于视频客户端发布的视频文件,然而,可能存在DSP的可靠性出问题的情况,即在初始化第二个硬件编码实例时,DSP无法完成初始化,即初始化失败,而此时为了保证编码的顺利完成,进行编码方式的切换,将硬件编码方式切换为软件编码方式。
应用本公开上述实施例,采用并行处理的方式合成用于视频客户端发布的视频文件,以及用于分享至其它视频客户端的添加有水印的视频文件,相较于单独分别获得两份视频文件,大大缩减了时间成本,提高了用户体验;同时,合成用于视频客户端发布的视频文件的方式,及合成用于分享至其它视频客户端的添加有水印的视频文件的方式默认采用的均是硬件编码的方式,编码速度快,视频文件的合成效率高。
继续对本步骤的具体实现进行说明,步骤506的具体实现过程参见图6,图6为本公开实施例提供的编码得到用于视频客户端发布的视频文件的流程示意图,基于图6对步骤506的具体实现过程进行说明,包括如下步骤:
步骤601:初始化用于对渲染后的纹理编码的DSP,并判断初始化是否成功,如果初始化失败,执行步骤602;如果初始化成功,执行步骤604。
步骤602:触发CPU读取渲染后的纹理至内存,得到对应内存中的图像。
步骤603:CPU对所述内存中的图像进行编码,得到用于所述视频客户端发布的视频文件,然后执行步骤605。
步骤604:采用DSP对所述渲染后的纹理进行编码,得到用于所述视频客户端发布的视频文件。
步骤605:结束本次处理流程。
基于上述对步骤506的具体描述可知,用于视频客户端发布的视频文件的合成方式存在不同的优先级,优先采用硬件的编码方式,当且仅当对DSP的初始化失败时才采用软件编码的方式,如此,当对DSP的初始化成功时,可保证采用最少的时间实现两份不同用途的视频文件的合成,而当对DSP的初始化失败时,进行编码方式的切换,保证视频文件的顺利合成,使得用户始终具备较好的使用体验。
图7为本公开实施例提供的合成视频文件的装置的组成结构示意图,参见图7,本公开实施例提供的合成视频文件的装置包括:
解码单元71,用于解码基于移动终端的视频客户端得到的视频文件,得到对应的视频帧图像;
渲染单元72,用于将所述视频帧图像渲染到纹理,得到相应渲染后的纹理;
第一合成单元73,用于基于所述渲染后的纹理,采用硬件编码方式合成用于所述视频客户端发布的第一视频文件;
第二合成单元74,用于基于所述渲染后的纹理,采用与所述第一合成单元并行的硬件编码方式,合成用于分享至其它视频客户端的添加有水印的第二视频文件;
其中,当对用于合成所述第一视频文件的硬件单元初始化失败时,所述第一合成单元切换合成所述第一视频文件的编码方式为软件编码方式。
在一实施例中,所述用于合成所述第一视频文件的硬件单元为数字信号处理器DSP;
所述第一合成单元,还用于响应于图形处理器GPU发送的编码指令,初始化所述DSP;
当所述初始化成功时,采用所述DSP对所述渲染后的纹理进行编码,得到用于所述视频客户端发布的第一视频文件。
在一实施例中,所述第一合成单元,还用于当所述初始化失败时,触发中央处理器CPU读取所述渲染后的纹理至内存,得到对应所述内存中的图像;
采用CPU对所述内存中的图像进行编码,得到用于所述视频客户端发布的第一视频文件。
在一实施例中,所述渲染单元采用GPU实现,还用于对所述渲染后的纹理进行渲染,得到添加有水印的纹理;
所述第二合成单元,还用于采用DSP对所述添加有水印的纹理进行编码,得到用于分享至其它视频客户端的添加有水印的第二视频文件。
在一实施例中,所述渲染单元,还用于加载内存中的所述视频帧图像至G PU,得到相应的纹理;
对得到的所述纹理进行渲染,得到所述渲染后的纹理。
本公开实施例还提供了一种可读存储介质,存储介质可以包括:移动存储设备、随机存取存储器(RAM,Random Access Memory)、只读存储器(ROM,Read-Only Memory)、磁碟或者光盘等各种可以存储程序代码的介质。所述可读存储介质存储有可执行指令;
所述可执行指令,用于被处理器执行时实现上述合成视频文件的方法。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。