发明内容
有鉴于此,本公开实施例提供一种全景视频的多视场控制方法、装置、电子设备及存储介质。
第一方面,本公开实施例提供了一种全景视频的多视场控制方法,所述方法包括:
将全景视频中的视频帧映射为三维模型的表面纹理;
根据与播放窗口对应的播放窗口视场的方向和放大倍数,确定所述播放窗口视场;
以及
确定与所述播放窗口的子窗口对应的子窗口视场;
其中,所述播放窗口视场的方向在锁定时段内处于锁定状态,所述锁定状态用于屏蔽接收到的外部转向操作;
将所述播放窗口视场、以及子窗口视场分别在所述三维模型的表面纹理中进行投影,对应得到处于所述播放窗口视场的纹理区域、以及处于所述子窗口视场的纹理区域;
在所述播放窗口中渲染处于所述播放窗口视场的纹理区域,并在所述子窗口中渲染处于所述子窗口视场的纹理区域。
上述方案中,所述方法还包括:
通过以下方式确定所述播放窗口视场的方向和放大倍数:
解析所述全景视频的解码元数据,得到在所述播放窗口中渲染所述视频帧时,所述播放窗口视场的方向和放大倍数;
当所述视频帧对应的渲染时间处于所述锁定时段时,将所述视频帧对应的锁定方向作为所述播放窗口视场的方向;所述锁定方向用于使所述播放窗口视场的方向处于所述锁定状态。
上述方案中,所述方法还包括:
接收到针对当前渲染的视频帧的外部转向操作,所述外部转向操作所指示的视场方向不同于当前播放窗口视场的方向;
确定当前时刻未处于所述锁定时段时,转换当前播放窗口视场的方向与所述外部转向操作所指示的视场方向一致。
上述方案中,所述确定与所述播放窗口的子窗口对应的子窗口视场,包括:
根据所述播放窗口视场的方向,所述播放窗口视场的方向与所述子窗口视场的方向之间的相对位置关系,确定所述子窗口视场的方向;
或者,根据所述全景视频中的目标对象,确定包括所述目标对象的视场方向为所述子窗口视场的方向。
上述方案中,所述将全景视频中的视频帧映射为三维模型的表面纹理,包括:
将待渲染的所述视频帧的像素点映射到纹理空间,得到所述像素点的纹理坐标;
将所述像素点的纹理坐标映射到所述三维模型表面的顶点坐标,以形成所述三维模型的表面纹理。
上述方案中,所述将所述播放窗口视场、以及子窗口视场分别在所述三维模型的表面纹理中进行投影,对应得到处于所述播放窗口视场的纹理区域、以及处于所述子窗口视场的纹理区域,包括:
对于按照渲染时间的先后顺序待渲染的各个视频帧,执行以下操作:
将所述播放窗口视场在待渲染的视频帧映射形成的表面纹理中进行投影,得到处于所述播放窗口视场的纹理区域,以及,
将与所述子窗口视场在待渲染的视频帧映射形成的表面纹理中进行投影,得到处于所述子窗口视场的纹理区域。
上述方案中,所述将所述播放窗口视场、以及子窗口视场分别在所述三维模型的表面纹理中进行投影,对应得到处于所述播放窗口视场的纹理区域、以及处于所述子窗口视场的纹理区域,包括:
对于按照渲染时间的先后顺序待渲染的各个视频帧执行以下操作:
将所述播放窗口视场在待渲染的视频帧映射形成的表面纹理中进行投影,得到处于所述播放窗口视场的纹理区域;
将所述子窗口视场在已渲染的视频帧映射形成的表面纹理中进行投影,得到处于所述子窗口视场的纹理区域。
第二方面,本公开实施例还提供了一种全景视频的多视场控制装置,包括:
映射单元,用于将全景视频中的视频帧映射为三维模型的表面纹理;
确定单元,用于根据与播放窗口对应的播放窗口视场的方向和放大倍数,确定所述播放窗口视场;确定与所述播放窗口的子窗口对应的子窗口视场;其中,所述播放窗口视场的方向在锁定时段内处于锁定状态,所述锁定状态用于屏蔽接收到的外部转向操作;
投影单元,用于将所述播放窗口视场、以及子窗口视场分别在所述三维模型的表面纹理中进行投影,对应得到处于所述播放窗口视场的纹理区域、以及处于所述子窗口视场的纹理区域;
渲染单元,用于在所述播放窗口中渲染处于所述播放窗口视场的纹理区域,并在所述子窗口中渲染处于所述子窗口视场的纹理区域。
上述方案中,所述确定单元,还用于解析所述全景视频的解码元数据,得到在所述播放窗口中渲染所述视频帧时,所述播放窗口视场的方向和放大倍数;
其中,当所述视频帧对应的渲染时间处于所述锁定时段时,
所述确定单元,还用于将所述视频帧对应的锁定方向作为所述播放窗口视场的方向;所述锁定方向用于使所述播放窗口视场的方向处于所述锁定状态。
上述方案中,所述装置还包括:
转换单元,用于接收到针对当前渲染的视频帧的外部转向操作,所述外部转向操作所指示的视场方向不同于当前播放窗口视场的方向;
确定当前时刻未处于所述锁定时段时,转换当前播放窗口视场的方向与所述外部转向操作所指示的视场方向一致。
上述方案中,所述确定单元,还用于根据所述播放窗口视场的方向,所述播放窗口视场的方向与所述子窗口视场的方向之间的相对位置关系,确定所述子窗口视场的方向;
或者,根据所述全景视频中的目标对象,确定包括所述目标对象的视场方向为所述子窗口视场的方向。
上述方案中,所述映射单元,还用于将待渲染的所述视频帧的像素点映射到纹理空间,得到所述像素点的纹理坐标;
将所述像素点的纹理坐标映射到所述三维模型表面的顶点坐标,以形成所述三维模型的表面纹理。
上述方案中,所述投影单元,还用于对于按照渲染时间的先后顺序待渲染的各个视频帧,执行以下操作:
将所述播放窗口视场在对应待渲染的视频帧映射形成的表面纹理中进行投影,得到处于所述播放窗口视场的纹理区域,以及,
将与所述子窗口视场在对应待渲染的视频帧映射形成的表面纹理中进行投影,得到处于所述子窗口视场的纹理区域。
上述方案中,所述投影单元,还用于对于按照渲染时间的先后顺序待渲染的各个视频帧执行以下操作:
将所述播放窗口视场在对应待渲染的视频帧映射形成的表面纹理中进行投影,得到处于所述播放窗口视场的纹理区域;
将所述子窗口视场在对应已渲染的视频帧映射形成的表面纹理中进行投影,得到处于所述子窗口视场的纹理区域。
第三方面,本公开实施例提供了一种电子设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述可执行指令时,实现本公开实施例提供的全景视频的多视场控制方法。
第四方面,本公开实施例提供了一种存储介质,存储有可执行指令,所述可执行指令被执行时,用于实现本公开实施例提供的全景视频的多视场控制方法。
本公开实施例具有如下有益效果:
应用本公开上述实施例,控制全景视频的播放窗口视场的方向在锁定时段内处于锁定状态,使得在锁定时段能够突出展现特定视角或特定场景的内容,同时通过多窗口进行视频展现,使得在观看全景视频时不再受到单一视场的约束,扩展了在全景视频中获取信息的途径,有效提升了在全景视频中展示内容的效率。
具体实施方式
为了使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开作进一步地详细描述,所描述的实施例不应视为对本公开的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本公开保护的范围。在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
对本公开实施例进行进一步详细说明之前,对本公开实施例中涉及的名词和术语进行说明,本公开实施例中涉及的名词和术语适用于如下的解释。
1)全景视频,是指在各种电子设备中播放能够供用户裸眼观看的视频,且播放窗口的视场能够进行方向和放大倍数的调整。
2)三维模型,是模拟全景视频所表达的空间的模型,用于将全景视频的视频帧映射到三维模型的表面以形成表面纹理,三维模型的表面一般采用球面或圆柱面。
3)视场,在三维模型的中心的虚拟镜头感知三维模型的表面纹理的视线的集合,更一般地,是指通过一个窗口在全景视频的视频帧中能够观看的区域。
4)播放窗口,全景视频的客户端中默认用于播放全景视频的全屏或非全屏的窗口,至少包括全景视频的视频播放区域,还可以包括设置有相关操作的入口的操作区域。
5)播放窗口视场,即与播放窗口对应的视场,控制在播放窗口中能够感知到视频帧中处于相应视场的部分内容。
6)子窗口,全景视频的客户端中辅助用于播放的非全屏的窗口,小于播放存储,至少包括全景视频的视频播放区域,还可以包括设置有相关操作的入口的操作区域。
7)子窗口视场,即与子窗口对应的视场,控制在窗口中能够感知到的视频帧中处于相应视场的部分内容。
8)纹理,视频帧中的对象在颜色、几何上有规律的特性,以视频帧中各纹理像素的纹理坐标和对应的颜色值表示。
9)纹理区域,视场在三维模型的表面纹理的投影所包括的区域,是三维模型的表面纹理的一个子集,例如全景视频帧能够完整展示的区域的视角在垂直方向和水平方向可以覆盖0至180度,而视场对应的纹理区域覆盖的视角在垂直方向和水平方向可以覆盖0至30度。
下面参见图1,图1是实现本公开实施例的电子设备(例如图1中的电子设备或服务器)100的结构示意图。电子设备可以是各种终端,包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、个人数字助理(PDA,Personal Digital Assistant)、平板电脑(PAD)、便携式多媒体播放器(PMP,Portable Media Player)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字电视(TV)、台式计算机等等的固定终端。图1示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图1所示,电子设备100可以包括处理装置(例如中央处理器、图形处理器等)110,其可以根据存储在只读存储器(ROM,Read-Only Memory)120中的程序或者从存储装置180加载到随机访问存储器(RAM,Random Access Memory)130中的程序而执行各种适当的动作和处理。在RAM 130中,还存储有电子设备100操作所需的各种程序和数据。处理装置110、ROM 120以及RAM 130通过总线140彼此相连。输入/输出(I/O,Input/Output)接口150也连接至总线140。
通常,以下装置可以连接至I/O接口150:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置160;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置170;包括例如磁带、硬盘等的存储装置180;以及通信装置190。通信装置190可以允许电子设备100与其他设备进行无线或有线通信以交换数据。虽然图1示出了具有各种装置的电子设备100,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,所提供的流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,计算机程序可以通过通信装置190从网络上被下载和安装,或者从存储装置180被安装,或者从ROM 120被安装。在计算机程序被处理装置110执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
在本公开实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、射频(RF)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备100中所包含的;也可以是单独存在,而未装配入电子设备100中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得电子设备100执行本公开实施例提供的方法。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)和广域网(WAN),以连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
描述于本公开实施例中所涉及到的单元和/或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。
对于硬件的方式来说,实现本公开实施例的电子设备的单元和/或模块可以被一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,ComplexProgrammable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable GateArray)或其他电子元件实现,用于执行实现本公开实施例提供的方法。
参见图2,图2是实现本公开实施例的电子设备显示全景视频的一个可选的流程示意图,以处理装置110从只读存储器(ROM)120中的程序或者从存储装置180加载到随机访问存储器(RAM)130中的程序为用于全景视频播放的客户端为例,在全景视频播放的过程中,播放窗口用于展示视频帧的视场(也就是在播放窗口中显示视频帧所采用的视场,下文中简称为播放窗口视场)能够依据用户操作或自身的播放策略发生变化,客户端将根据播放窗口视场的变化,通过纹理映射的方式,在播放窗口中显示顺序解码的视频帧中处于播放窗口视场的内容,并同步播放音频帧。
结合图2示出的步骤,说明电子设备中的客户端在播放窗口进行全景视频播放的过程,需要指出,在下文关于图2的相关说明中,为方便描述,视场即是指代“播放窗口视场”。
在步骤101中,客户端从全景视频的服务器请求全景视频的文件,并加载到客户端的内存(RAM 130)中。
例如,在全景视频的在线播放场景中,客户端通过通信装置190向服务器请求当前播放点(例如起始的播放点或根据用户操作而跳转的播放点)之后的预加载时长(例如1分钟)分段文件,并加载到RAM130中。预加载时长可由客户端根据电子设备的网络接入类型、带宽等网络参数自动设定,也可以接收用户的设定。
分段文件中包括封装了必要的解码元数据和媒体数据(包括音频帧和视频帧),客户端可以对分段文件进行及时地解码,分段文件的时长保证了在客户端中连续的播放效果且不会过分消耗电子设备的带宽。
在一些实施例中,作为步骤101的替代步骤,客户端可以从服务器一次性请求全景视频的完整的文件,并加载到内存中;或者,从存储装置180中读取本地的全景视频的文件,并加载到内存中。
在步骤102中,客户端对加载到内存中的全景视频的文件进行解码,以提取出解码元数据和媒体数据。
全景视频的文件中按照约定的方式封装了解码元数据和媒体数据,客户端根据约定的位置(例如文件的二进制数据起始的若干字节)从文件中读出解码元数据和媒体信息,就解码元数据而言,指示了各音频帧/视频帧的时间、长度、宽高和分辨率等信息。
在步骤103中,客户端将媒体数据中的视频帧映射为三维模型的表面纹理。
继续参见图3,图3是实现本公开实施例的电子设备显示全景视频的一个可选的流程示意图,示例性示出了步骤103中基于视频帧形成三维模型的表面纹理的实现过程。
在步骤1031中,客户端将视频帧映射到纹理空间。
视频帧在纹理空间中的纹理以视频帧中各像素的纹理坐标以及对应的颜色值表示,视频帧的像素在纹理空间中的纹理坐标(u,v)上是一个存放视频帧中像素在纹理空间的x轴/y轴的位置的二维数组,从而在纹理空间中可以离散地分离出视频帧中每个像素点的颜色值。
在步骤1032中,将视频帧在纹理空间的纹理坐标映射到三维模型的表面,以形成三维模型的表面纹理。
例如,可以采用的这样的方式:将视频帧的像素在纹理空间的纹理坐标映射到三维模型的顶点的坐标(x,y,z),三维模型的顶点是将三维模型的表面分割成一系列的图形(例如三角形)的顶点,从而使得无论三维模型如何发生变化,顶点之间的像素点是稳定的。
例如,参见图4A,图4A是实现本公开实施例的电子设备显示全景视频的一个可选的纹理映射示意图,客户端解码媒体数据中的视频帧,以解码得到的视频帧41为例,将视频帧41中各像素点的纹理坐标映射到球面模型42(当然,不局限于球面模型,还可以采用圆柱模型等三维模型)的三角形的顶点(三角形将使得球面模型42的表面的纹理稳定,不容易使视频帧中展示的对象发生形变;当然不限于三角形),形成以视频帧41的为表面纹理的球面模型43。
在步骤104中,客户端确定全景视频当前待渲染视频帧的视场。
这里,播放窗口中展示全景视频的各视频帧所使用的视场,即播放窗口视场。
在一些实施例中,客户端根据全景视频的解码元数据对应各视频帧的时间,确定已解码的各视频帧的渲染的先后顺序,并顺序确定渲染各视频帧时对应的播放窗口视场,客户端通过视角(决定视场的尺寸)、方向(决定视频帧处于视场的内容在视频帧中的位置)和放大倍数(决定视频帧的内容在视场中成像的尺寸)来确定视场,下面进行说明。
参见图4B,图4B是实现本公开实施例的电子设备显示全景视频的一个可选的视场示意图,播放窗口视场46模拟了人眼47通过输入装置160的显示器显示的播放窗口能够观看到的区域,播放窗口视场46的尺寸取决于播放窗口视场46的水平视角44和垂直视角45,角度越大则播放窗口视场46中能够观看到的视频帧的内容越多(在播放窗口视场46的放大倍数一定的情况下)。
例如,参见图4C,图4C是实现本公开实施例的电子设备显示全景视频的一个可选的投影示意图,在球面模型43的中心模拟一个如图4B示出的人眼47的虚拟镜头48,镜头48与播放窗口具有相同的视场,从而播放窗口视场46在球面模型43的表面纹理中的投影区域即纹理区域49,即是通过播放窗口能够在视频帧中观看到的内容。
视场的水平视角和垂直视角取决于输出装置170中的显示器(例如显示器的宽高),因此,一般地,视场可以使用方向转动参数和镜头缩放参数两个参数进行表示,下面分别进行说明。
方向转动是表示视场的方向的变化,而播放窗口视场46的方向(即视场朝向球面模型43的表面纹理的方向)能够影响客户端在播放窗口中显示的部分内容(即视频帧的部分内容)处于视频帧中的位置。例如,假设播放窗口视场46相对于图4C示出的朝向球面模型43的方向进行方向转动时,那么,区别于纹理区域49的另一纹理区域的纹理将被渲染到播放窗口中,从而使用户观看到视频帧41中的另一部分内容。
镜头缩放是表示视场的放大倍数,从而客户端在播放窗口显示视频帧的内容还受到镜头缩放的约束,在水平视角44和垂直视角45一定(也就是视场的尺寸一定)的情况下,镜头缩放所实现的放大倍数(以大于1表示放大,小于1表示缩小)与播放窗口视场46在球面模型43对应的纹理区域(即视场在球面模型43的表面纹理的投影区域)中纹理的成像尺寸成反比,即放大倍数越小,则成像的尺寸越小,从而播放窗口中显示的内容越多,同时能够看到的内容的细节也越少。
在一些实施例中,视场的方向转动和放大倍数可以通过输入装置160接收用户的各种操作来确定,输入装置160中可以设置如陀螺仪、鼠标、键盘、触摸板、操作条和鼠标等支持实施相应的操作。
以方向转动的操作为例,包括移动端的触控拖拽交互、陀螺仪事件,还可以包括电脑(PC)端的鼠标拖拽交互、转动控件和键盘事件。
以镜头缩放的操作为例,包括移动端的双击(或多击)触控操作、双指(或多指)触控操作,还可以包括PC端的触摸板事件、操作条滑动和鼠标滚轮事件。特别地,针对不同类型的事件,客户端可以按照一定的优先级进行响应,例如针对鼠标滚轮的时间兼容性差于触摸板事件和操作条滑动的情况,鼠标滚轮事件的响应优先级可以设置为低于触摸板事件和操作条滑动。
此外,方向转动和镜头缩放的操作不局限于上述类型,例如用户表达意愿的操作还可以包括向输入装置160的摄像头实施的面部动作和眼部动作。从而,客户端可以根据用户意愿而显示全景视频处于不同视场的内容,符合用户针对全景视频的个性化的需求。
在另一些实施例中,视场的方向和放大倍数两个参数可以为客户端中根据全景视频的特点而设置的保证观看体验的经验值;或者,采用从全景视频的文件中读取的参数(由拍摄或发布全景视频的用户设定,可以针对全景视频中部分或者全部的时间轴而设定),又或者,采用服务器跟随全景视频而向客户端所下发的参数。
可以理解地,上述确定视场的参数的方式可以择一使用或者结合使用,例如,设置不同来源的参数的优先级,按照优先级的降序使用参数,特别地,当没有检测到用户指示参数的操作时,采用客户端中的针对播放效果而优化的默认值,以保证全景视频的最佳播放效果。
在步骤105A中,客户端将以待渲染的视频帧为贴图的三维模型的表面纹理中,与待渲染的视频帧的视场相对应的纹理渲染到输出装置170中的显示器显示的播放窗口。
在一些实施例中,客户端根据视场朝向三维模型的方向,确定三维模型处于视场的纹理区域,根据区域中的顶点从纹理空间提取与纹理区域相应的纹理,包括顶点在纹理空间中对应的为例像素、以及顶点之间的区域在纹理空间中对应的纹理像素;采用透视投影的方式(即近大远小的原则),将纹理区域对应的纹理渲染到输出装置170中的显示器显示的播放窗口。
可以理解,由于视场的方向转动/缩放,对三维模型处于视场的纹理区域提取的纹理像素在整体上可以进行相应的旋转/缩放(例如在放大时进行像素插值)处理。
在步骤105B中,与步骤105A同步地,客户端播放与步骤105A中待渲染视频帧在时间上同步的已解码音频帧。
在步骤106中,客户端判断是否已经渲染完毕内存中的全部待渲染的视频帧,如果是则结束播放;否则,继续下一视频帧,直至渲染完毕内存中的全部待渲染的视频帧。
至此,已经说明了客户端在播放窗口中显示全景视频的过程,客户端能够在播放过程中播放符合用户意愿的视场中的对象,使得用户能够灵活进行视场的方向转动和调整镜头缩放,以关注全景视频中感兴趣的内容,并给用户如同身临其境的感知效果。
为了进一步提升在全景视频的播放窗口展现的信息量,保证用户更高效地在全景视频中获取信息,并能够在特定时段展示特定场景的内容,除了在客户端的播放窗口中展示全景视频的内容,本公开实施例还提供了在播放窗口的子窗口中展示同一全景视频的内容,并实现全景视频的播放窗口视场的方向在锁定时段内处于锁定状态的方案。
参见图5,图5是实现本公开实施例的全景视频的多视场控制方法的一个可选的流程示意图,将结合图5示出的步骤进行说明。
步骤201:将全景视频中的视频帧映射为三维模型的表面纹理。
步骤202:确定与播放窗口对应的播放窗口视场、以及与播放窗口的子窗口对应的子窗口视场;其中,播放窗口视场的方向在锁定时段内处于锁定状态,锁定状态用于屏蔽接收到的外部转向操作。
步骤203:将播放窗口视场、以及子窗口视场分别在三维模型的表面纹理中进行投影,对应得到处于播放窗口视场的纹理区域、以及处于子窗口视场的纹理区域。
步骤204:在播放窗口中渲染处于播放窗口视场的纹理区域,并在子窗口中渲染处于子窗口视场的纹理区域。
应用本公开上述实施例,通过控制全景视频的播放窗口视场的方向在锁定时段内处于锁定状态,实现对在锁定时段内对来自用户的外部转向操作的屏蔽,用户在该锁定时段内只能被动的观看播放的内容,使得在锁定时段能够突出展现特定视角或特定场景的内容(如广告、视频高潮情节等),同时通过多窗口进行视频展现,使得在观看全景视频时不再受到单一视场的约束,扩展了在全景视频中获取信息的途径,有效提升了在全景视频中展示内容的效率。
下面结合图6继续对本公开实施例提供的全景视频的多视场控制方法进行说明,图6为本公开实施例提供的全景视频的多视场控制方法的流程示意图,参见图6,包括:
步骤301:客户端初始化播放窗口和子窗口。
在一些实施例中,当客户端被启动时,或在后台运行并当接收播放全景视频的操作时,将默认初始化播放窗口。
当默认初始化播放窗口时,还可以默认初始化播放窗口的一个或以上的子窗口,或者,当默认初始化播放窗口时,不默认初始化子窗口,根据图3示出的步骤在播放窗口中播放全景视频,在播放过程中,当接收到开启子窗口的操作时才初始化一个或以上的子窗口。
一般地,播放窗口的视频播放区域大于子窗口的视频播放区域。
播放窗口与子窗口的相对位置关系是多样化的。例如,播放窗口与子窗口可以在客户端的不同区域显示。再例如,子窗口可以位于播放窗口的内部并覆盖播放窗口的部分视频播放区域,参见图7,图7是本公开实施例提供的全景视频的多窗口播放的一个可选的示意图,播放窗口71呈现所渲染的视频帧的部分内容A,子窗口72呈现所渲染的视频帧的部分内容B,播放窗口71的视频播放区域中部分被子窗口72所覆盖。或者,子窗口可以位于播放窗口的内部,并由播放窗口的视频播放区域避让子窗口。
特别地,当子窗口位于播放窗口的内部时,子窗口在播放窗口的位置,还可以反映与子窗口显示的内容、与播放窗口中显示的内容在视频帧中的相对位置关系,从而当用户需要在播放窗口中显示与子窗口相同的内容时,可以根据相对位置关系快速调整播放窗口的视场的方向,以在播放窗口观看与子窗口相同的内容,由于播放窗口是大于子窗口的,从而能够看到子窗口中无法看到的更多细节。
步骤302:将全景视频中待渲染的视频帧映射为三维模型的表面纹理。
在实际应用中,客户端在进行所述表面纹理映射之前,需要从全景视频的服务器请求全景视频的文件,并加载到客户端的内存中,然后对加载到内存中的全景视频的文件进行解码,以提取出解码元数据和媒体数据,进而得到媒体数据中的视频帧。
这里进行表面纹理映射的所述视频帧为一个或多个待渲染的媒体数据中的视频帧,例如,可以将媒体数据的全部视频帧分别映射到多个相同三维模型,以形成相应的表面纹理,或者,按照视频帧的渲染顺序,当一个视频帧被渲染完毕时才将下一个视频帧映射为三维模型的表面纹理。
在一实施例中,客户端可以通过如下方式将全景视频中的视频帧映射为三维模型的表面纹理:
将视频帧的像素点映射到纹理空间,得到像素点的纹理坐标;将像素点的纹理坐标映射到三维模型表面的顶点坐标,以形成所述三维模型的表面纹理。
步骤303:解析全景视频的解码元数据,获取待渲染的第一视频帧对应播放窗口的播放参数及全景视频的锁定时段。
这里,基于全景视频的文件的封装规范,对全景视频文件进行解码,提取到解码元数据及媒体数据,通过对解码元数据的解析得到所述播放参数及全景视频的锁定数据。
其中,所述播放参数包括:对应播放窗口视场的方向参数、对应播放窗口视场的放大倍数、渲染时间等。
全景视频的解码元数据中包括锁定数据,锁定数据中包括锁定时段,渲染时间处于锁定时段的视频帧所对应的播放窗口视场的方向为锁定方向,当锁定方向作为播放窗口视场的方向时,播放窗口视场的方向处于锁定状态,在锁定状态下,客户端接收到的来自用户的外部转向操作被屏蔽,用户只能被动观看播放窗口所播放的内容,进而可在锁定时段进行重要内容或特定场景下的内容的展现,如播放广告等。
步骤304:基于播放参数,判断第一视频帧的渲染时间是否处于锁定时段内,如果处于锁定时段,执行步骤305;如果未处于锁定时段,执行步骤310。
这里,在实际实施时,在对待渲染的视频帧进行渲染之前,需要判定该视频帧的渲染时间是否处于锁定时段内,以对播放窗口视场的锁定状态进行控制。
步骤305:以第一视频帧的锁定方向作为播放窗口视场的方向,确定第一视频帧对应的播放窗口视场、以及播放窗口的子窗口对应的子窗口视场。
在实际应用中,若第一视频帧的渲染时间处于锁定时段,第一视频帧对应播放窗口的播放参数中,对应播放窗口视场的方向参数为锁定方向,将锁定方向作为播放窗口视场的方向,使得播放窗口视场的方向处于锁定状态。
播放窗口视场,是客户端通过播放窗口视场的视场方向和放大倍数的两个参数来确定的。
在一些实施例中,播放窗口视场采用预先设定的方式,客户端通过解析全景视频文件的解码元数据而得到在播放窗口视场中渲染各视频帧时所对应的视频方向和放大倍数,以确定对应的播放窗口视场。
例如,拍摄或发布全景视频的用户,在全景视频的文件中封装解码元数据,其中设定了播放窗口视场中渲染各视频帧时的视场方向和放大倍数。从而,一旦客户端根据约定的规范从视频文件中提取出解码元数据,即可确定实现播放窗口视场的更新的方向和放大倍数。
对于第一视频帧的渲染时间处于锁定时段的情况,客户端基于第一视频帧的锁定方向、及播放参数中的对应播放窗口视场的放大倍数,确定播放窗口视场。
在一实施例中,客户端可通过如下方式确定与播放窗口的子窗口对应的子窗口视场:
根据所述播放窗口视场的方向,所述播放窗口视场的方向与所述子窗口视场的方向之间的相对位置关系,确定所述子窗口视场的方向;
或者,根据所述全景视频中的目标对象,确定包括所述目标对象的视场方向为所述子窗口视场的方向。
示例性地,播放窗口视场的方向和子窗口视场的方向存在固定的相对位置关系,如播放窗口的视场方向与子窗口的视场方向相差180°,因此,在确定了播放窗口视场的方向后,依据所述相对位置关系可确定子窗口视场的方向。
示例性地,就目标对象而言,可以是在全景视频的播放过程中,客户端从播放窗口/子窗口中自动识别的对象(例如人脸和景物等),或者是,用户在播放窗口子窗口中标识的对象。客户端对第一视频帧的图像进行目标对象检测,确定包括目标对象的视场方向为子窗口视场的方向,而对于子窗口视场的放大倍数来说,客户端可以确定使得目标对象的大小与子窗口视场相适配时,子窗口视场的放大倍数。
步骤306:基于第一视频帧对应的播放窗口视场以及子窗口视场,渲染第一视频帧。
这里,具体可通过如下方式实现对第一视频帧的渲染:
将播放窗口视场、以及子窗口视场分别在三维模型的表面纹理中进行投影,对应得到处于播放窗口视场的纹理区域、以及处于子窗口视场的纹理区域;在播放窗口中渲染处于播放窗口视场的纹理区域,并在子窗口中渲染处于子窗口视场的纹理区域。
在一实施例中,将播放窗口视场、以及子窗口视场分别在三维模型的表面纹理中进行投影,对应得到处于播放窗口视场的纹理区域、以及处于子窗口视场的纹理区域,具体包括:
对于按照渲染时间的先后顺序待渲染的各个视频帧,执行以下操作:
将播放窗口视场在待渲染的视频帧映射形成的表面纹理中进行投影,得到处于播放窗口视场的纹理区域,以及,将与子窗口视场在待渲染的视频帧映射形成的表面纹理中进行投影,得到处于子窗口视场的纹理区域。也就是说,播放窗口和子播放窗口渲染同一视频帧,由于不同的窗口实质上是利用同一视频帧进行渲染,因此,客户端只需要运行一个实例,从而能够以资源节约的方式完成多个窗口的显示。
在一实施例中,将播放窗口视场、以及子窗口视场分别在三维模型的表面纹理中进行投影,对应得到处于播放窗口视场的纹理区域、以及处于子窗口视场的纹理区域,具体包括:
对于按照渲染时间的先后顺序待渲染的各个视频帧执行以下操作:
将播放窗口视场在待渲染的视频帧映射形成的表面纹理中进行投影,得到处于播放窗口视场的纹理区域;将子窗口视场在已渲染的视频帧映射形成的表面纹理中进行投影,得到处于子窗口视场的纹理区域。也就是说,对于全景视频中各个待渲染的视频帧,提供按照全景视频中各视频帧的先后时间顺序在播放窗口中渲染,并在子窗口中渲染与播放窗口渲染的视频帧在时间上不同步的视频帧,例如相对于播放窗口回放已经渲染的视频帧。
对于已渲染的视频帧来说,已渲染的视频帧可以是全景视频已经播放的任意时段所渲染的视频帧,也可以是与播放窗口的播放时间差值固定(例如,子窗口的时间总是晚于播放窗口十分钟)的视频帧。这样,在子窗口中可以对播放窗口中已经播放的全景视频进行回放,可以理解地,在回放的过程中,子窗口可以根据用户的操作而改变子窗口视场,从而是用户在会看过程中关注所感兴趣的内容。
在一实施例中,在全景视频播放过程中,还可以根据在客户端中接收的针对播放窗口与子窗口的切换操作,交换播放窗口视场与子窗口视场的方向,以实现播放窗口视场与子窗口视场所呈现内容的交换,对应图7所示,参见图8,图8为本公开实施例提供的多窗口播放中窗口切换后的界面示意图,当客户端接收到交换指令时,播放窗口81呈现所渲染的视频帧的部分内容B,子窗口82呈现所渲染的视频帧的部分内容A;当然,由于播放窗口与子窗口的大小存在差异,因此播放窗口与子窗口的放大倍数可以保持不变,以便于利用相对子窗口更大的播放窗口关注之前在子窗口显示的内容,在必要时可以再次切换还原播放窗口视场与子窗口视场的方向,例如在计时时间到达(例如30秒)后再次切换还原播放窗口视场与子窗口视场的方向,或者,根据用户的操作而切换还原播放窗口视场与子窗口视场的方向。
步骤307:基于待渲染的第二视频帧的播放参数,判断第二视频帧的渲染时间是否处于锁定时段内,如果处于锁定时段,执行步骤308;如果未处于锁定时段,执行步骤312。
这里,第二视频帧与第一视频帧为基于渲染时间的先后顺序排列的相邻的或不相邻的两个视频帧。
第二视频帧的播放参数的获得亦可通过解析全景视频的解码元数据获得。
步骤308:以第二视频帧的锁定方向作为播放窗口视场的方向,确定第二视频帧对应的播放窗口视场、以及播放窗口的子窗口对应的子窗口视场。
这里,步骤308的具体实施可参见步骤305,此处不作赘述。
步骤309:基于第二视频帧对应的播放窗口视场以及子窗口视场,渲染第二视频帧。
步骤310:确定第一视频帧对应的播放窗口视场、以及播放窗口的子窗口对应的子窗口视场。
这里,当第一视频帧的渲染时间未处于锁定时段内时,可通过解析第一视频帧对应的解码元数据获取对应的播放窗口视场的方向及放大倍数,进而确定第一视频帧的播放窗口视场,而对于子窗口视场的确定可参照前述方式。
步骤311:基于确定的播放窗口视场以及子窗口视场,渲染第一视频帧。
在实际实施时,由于当前播放第一视频帧的播放窗口未处于锁定状态,因此,当用户执行外部转向操作时,客户端可基于来自用户的外部转向操作,控制当前的播放窗口视场的方向进行转换,具体的,客户端接收到针对当前渲染的视频帧的外部转向操作,所述外部转向操作所指示的视场方向不同于当前播放窗口视场的方向;确定当前时刻未处于所述锁定时段时,转换当前播放窗口视场的方向与所述外部转向操作所指示的视场方向一致。
步骤312:确定第二视频帧对应的播放窗口视场、以及播放窗口的子窗口对应的子窗口视场。
步骤313:基于确定的播放窗口视场以及子窗口视场,渲染第二视频帧。
继续对本公开实施例提供的全景视频的播放控制装置的软件实现进行说明,全景视频的播放控制装置可以实施于电子设备中,对于软件的方式来说,实现本公开实施例的装置/电子设备的单元和/或模块可以被两个或以上的单元实现,
下面以软件的方式为例,示例性说明实现本公开实施例的全景视频的播放控制装置的单元和/或模块。
图9是实现本公开实施例的全景视频的多视场控制装置的一个可选的结构示意图,参见图9,本公开实施例的全景视频的多视场控制装置包括:
映射单元91,用于将全景视频中的视频帧映射为三维模型的表面纹理;
确定单元92,用于确定与播放窗口对应的播放窗口视场、以及与所述播放窗口的子窗口对应的子窗口视场;其中,所述播放窗口视场的方向在锁定时段内处于锁定状态,所述锁定状态用于屏蔽接收到的外部转向操作;
投影单元93,用于将所述播放窗口视场、以及子窗口视场分别在所述三维模型的表面纹理中进行投影,对应得到处于所述播放窗口视场的纹理区域、以及处于所述子窗口视场的纹理区域;
渲染单元94,用于在所述播放窗口中渲染处于所述播放窗口视场的纹理区域,并在所述子窗口中渲染处于所述子窗口视场的纹理区域。
在一实施例中,所述确定单元,还用于解析所述全景视频的解码元数据,得到在所述播放窗口中渲染所述视频帧时,所述播放窗口视场的方向和放大倍数;
其中,当所述视频帧对应的渲染时间处于所述锁定时段时,
所述确定单元,还用于将所述视频帧对应的锁定方向作为所述播放窗口视场的方向;所述锁定方向用于使所述播放窗口视场的方向处于所述锁定状态。
在一实施例中,所述装置还包括:
转换单元,用于接收到针对当前渲染的视频帧的外部转向操作,所述外部转向操作所指示的视场方向不同于当前播放窗口视场的方向;
确定当前时刻未处于所述锁定时段时,转换当前播放窗口视场的方向与所述外部转向操作所指示的视场方向一致。
在一实施例中,所述确定单元,还用于根据所述播放窗口视场的方向,所述播放窗口视场的方向与所述子窗口视场的方向之间的相对位置关系,确定所述子窗口视场的方向;
或者,根据所述全景视频中的目标对象,确定包括所述目标对象的视场方向为所述子窗口视场的方向。
在一实施例中,所述映射单元,还用于将待渲染的所述视频帧的像素点映射到纹理空间,得到所述像素点的纹理坐标;
将所述像素点的纹理坐标映射到所述三维模型表面的顶点坐标,以形成所述三维模型的表面纹理。
在一实施例中,所述投影单元,还用于对于按照渲染时间的先后顺序待渲染的各个视频帧,执行以下操作:
将所述播放窗口视场在对应待渲染的视频帧映射形成的表面纹理中进行投影,得到处于所述播放窗口视场的纹理区域,以及,
将与所述子窗口视场在对应待渲染的视频帧映射形成的表面纹理中进行投影,得到处于所述子窗口视场的纹理区域。
在一实施例中,所述投影单元,还用于对于按照渲染时间的先后顺序待渲染的各个视频帧执行以下操作:
将所述播放窗口视场在对应待渲染的视频帧映射形成的表面纹理中进行投影,得到处于所述播放窗口视场的纹理区域;
将所述子窗口视场在对应已渲染的视频帧映射形成的表面纹理中进行投影,得到处于所述子窗口视场的纹理区域。
以上描述仅为本公开的实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开实施例中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开实施例构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开实施例中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。