直播视频的展示方法、装置、终端和可读存储介质
技术领域
本申请涉及视频播放技术领域,特别是涉及一种直播视频的展示方法、装置、终端和可读存储介质。
背景技术
在网络视频直播过程中,通常由主播终端采集视频数据,将视频数据编码后上传至服务器,观众终端从服务器中获取当前所在直播间的视频数据并进行解码,以将主播视频展示在观众终端的显示窗口中,供观众观看主播视频。
当前较多的网络视频直播通常是由主播从一个角度,采用终端摄像头(或摄像机)拍摄自身所处的场景视频,那么观众所观看到的主播视频也为该角度的视频画面;当主播自己主动变换拍摄角度时,观众才可观看到其他角度的视频画面。
因此,传统技术的网络视频直播中,视频展示方式单一,人机交互不够智能。
发明内容
基于此,有必要针对传统技术的网络视频直播中,视频展示方式单一,人机交互不够智能的问题,提供一种直播视频的展示方法、装置、终端和可读存储介质。
一种直播视频的展示方法,该方法包括:
接收输入的视频角度转换指令;
响应于视频角度转换指令,将当前以第一角度展示的全景直播视频进行角度转换,得到第二角度的全景直播视频;其中,全景直播视频为采用预设的3D球体模型对不同拍摄角度的视频数据进行投影处理得到的;
展示第二角度的全景直播视频。
在其中一个实施例中,接收输入的视频角度转换指令,包括:
检测输入设备在当前展示界面上的触控操作的类型;该触控操作的类型包括以下至少一种:针对第一角度展示的全景直播视频的角度旋转操作、针对第一角度展示的全景直播视频的画面缩放操作;
根据触控操作的类型,确定视频角度转换指令。
在其中一个实施例中,响应于视频角度转换指令,将当前以第一角度展示的全景直播视频进行角度转换,得到第二角度的全景直播视频,包括:
解析视频角度转换指令,确定该视频角度转换指令对应的转换类别和转换幅度;转换类别包括画面放大、画面缩小和画面旋转中的任一种,转换幅度包括放大比例、缩小比例和旋转角度中的任一种;
根据转换类别和转换幅度对以第一角度展示的全景直播视频进行角度转换,得到第二角度的全景直播视频。
在其中一个实施例中,解析视频角度转换指令,确定视频角度转换指令对应的转换类别和转换幅度,包括:
根据输入设备的初始状态和终止状态,确定输入设备的触控类型和触控变化量;
根据触控类型、以及预设的触控类型与转换类别的对应关系,确定视频角度转换指令对应的转换类别;
根据触控变化量、以及预设的触控变化量与转换幅度的对应关系,确定视频角度转换指令对应的转换幅度。
在其中一个实施例中,以第一角度展示的全景直播视频包括合成的直播视频帧以及直播过程中的交互界面元素,将当前以第一角度展示的全景直播视频进行角度转换,得到第二角度的全景直播视频,包括:
将直播视频帧和交互界面元素共同进行角度转换,得到第二角度的全景直播视频。
在其中一个实施例中,上述方法还包括:
接收输入的场景替换指令;该场景替换指令携带目标场景标识;
根据目标场景标识,确定与场景替换指令对应的场景图像;
将以第二角度展示的全景直播视频的直播背景替换为该场景图像。
在其中一个实施例中,根据触控操作的类型,确定视频角度转换指令,包括:
检测预设的时间间隔内,所接收的触控操作的类型是否相同;
若是,则根据触控操作的类型确定视频角度转换指令;
若否,则不响应触控操作。
在其中一个实施例中,上述全景直播视频的获取方式包括:
获取服务器发送的直播视频数据;该直播视频数据包括不同拍摄角度的视频数据;
对直播视频数据进行格式转换,得到RGB视频数据;
创建预设大小的3D球体模型,该3D球体模型用于RGB视频数据的坐标投影;
基于投影矩阵,将RGB视频数据投影至3D球体模型上,得到全景直播视频;其中,投影矩阵包括RGB视频数据中像素点与3D球体模型上像素点的坐标对应关系。
在其中一个实施例中,对直播视频数据进行格式转换,得到RGB视频数据,包括:
对直播视频数据进行解码,得到YUV视频数据;
根据预设的转换公式,对YUV视频数据进行格式转换,得到RGB视频数据;转换公式包括Y/U/V数据值之间的求和关系式和求差关系式。
在其中一个实施例中,在获取服务器发送的直播视频数据之后,上述方法还包括:
判断直播视频数据是否携带全景标识、终端是否支持格式转换、以及终端是否支持全景投影处理;
若直播视频数据携带全景标识、且终端支持格式转换、且终端支持全景投影处理,则执行对直播视频数据进行格式转换的步骤。
一种直播视频的展示装置,该装置包括:
接收模块,用于接收输入的视频角度转换指令;
角度转换模块,用于响应于视频角度转换指令,将当前以第一角度展示的全景直播视频进行角度转换,得到第二角度的全景直播视频;其中,全景直播视频为采用预设的3D球体模型对不同拍摄角度的视频数据进行投影处理得到的;
展示模块,用于展示第二角度的全景直播视频。
一种终端,包括存储器和处理器,存储器存储有计算机程序,处理器执行该计算机程序时实现上述直播视频的展示方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述直播视频的展示方法的步骤。
上述直播视频的展示方法、装置、终端和可读存储介质,能够接收输入的视频角度转换指令;响应于视频角度转换指令,将当前以第一角度展示的全景直播视频进行角度转换,得到第二角度的全景直播视频;展示第二角度的全景直播视频。首先,观众所观看的直播视频为全景直播视频,即可以从多角度观看视频,视频展示方式丰富;其次,观众可以根据自身需要随时转换全景直播视频的观看角度,大大提高了人机交互的智能性。
附图说明
图1为一个实施例中直播视频的展示方法的应用环境示意图;
图2为一个实施例中直播视频的展示方法的流程示意图;
图2a为一个实施例中全景直播视频的球体展示示意图;
图3为另一个实施例中直播视频的展示方法的流程示意图;
图3a为一个实施例中观众使用鼠标在当前展示界面进行触控操作的示意图;
图4为又一个实施例中直播视频的展示方法的流程示意图;
图5为又一个实施例中直播视频的展示方法的流程示意图;
图6为又一个实施例中直播视频的展示方法的流程示意图;
图6a为一个实施例中将RGB视频数据投影至3D球体模型的效果示意图;
图6b为一个实施例中得到全景直播视频的工程处理流程示意图;
图7为又一个实施例中直播视频的展示方法的流程示意图;
图8为一个实施例中直播视频的展示装置的结构框图;
图9为另一个实施例中直播视频的展示装置的结构框图;
图10为又一个实施例中直播视频的展示装置的结构框图;
图11为一个实施例中终端的内部结构图。
附图标记说明:
11:主播终端;12:服务器;13:观众终端。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的直播视频的展示方法,可以应用于如图1所示的应用环境中。其中,主播终端11通过与服务器12进行通信连接,主播可以通过主播终端11创建直播间,并将采集的直播视频流通过主播终端11发送至服务器12;观众终端13也通过与服务器12进行通信连接,观众可以通过观众终端13进入主播所创建的直播间,并由观众终端13从服务器12中获取该直播间所对应的直播视频流进行展示,以供观众进行观看及互动。本申请实施例中,主播可以使用全景摄像头或多个单景摄像头从多个角度拍摄自己的直播视频,观众终端13获取到多个角度的直播视频流后进行全景投影处理得到全景视频,实现观众360度观看直播视频。可选地,主播终端11和观众终端13可以包括但不限于个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器12可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种直播视频的展示方法,以该方法应用于图1中的观众终端13(以下简称为终端)为例进行说明,本实施例涉及的是观众在终端所展示的直播视频区域上进行拖动,以实现多角度观看直播视频的具体过程,该方法包括以下步骤:
S101,接收输入的视频角度转换指令。
具体地,当观众使用终端观看全景直播视频时,在当前时刻通常是从一个角度进行观看的,如观看主播正面角度的视频;若观众想要转换其所观看的视频角度,如观看主播侧面角度的视频,则可以在终端上输入视频角度转换指令。可选地,观众可以通过终端外接的输入设备(如鼠标)输入上述视频角度转换指令,如点击鼠标的左键向左滑动使视频向左旋转;若终端的显示屏为触摸屏,观众也可以通过手指在触摸屏上滑动输入上述视频角度转换指令,如手指向左滑动使视频向左旋转;观众还可以通过语音输入上述视频角度转换指令,如面向终端的麦克风语音输入“向左旋转30度”等。那么,终端便可以通过上述方式接收到输入的视频角度转换指令。
S102,响应于视频角度转换指令,将当前以第一角度展示的全景直播视频进行角度转换,得到第二角度的全景直播视频;其中,全景直播视频为采用预设的3D球体模型对不同拍摄角度的视频数据进行投影处理得到的。
具体地,终端接收到视频角度转换指令后,便可响应于该指令,解析视频角度转换指令中携带的转换操作,根据该转换操作将当前以第一角度展示的全景直播视频进行角度转换。其中,参见图2a所示,可以将全景直播视频看做一个位于三维坐标系下球体形式的视频,从球体的球心在Y轴方向以第一角度α向外观看,该第一角度所覆盖的球体部分即观众可以观看到的视频区域。当对以第一角度展示的全景直播视频进行角度转换时,即将第一角度转换为第二角度β,将第二角度所覆盖的球体部分作为所要展示的视频区域。对全景直播视频进行角度转换的过程可以理解为:若需将全景直播视频进行放大或缩小,则为改变Y轴上的视角;若需将全景直播视频左右旋转,则为绕着Y轴左右移动;若需将全景直播视频上下旋转,则为绕着Z轴上下移动。
示例性的,继续参见图2a所示,假设观众当前观看的第一角度的全景直播视频为图中的w部分;通过手指在触摸屏上向左滑动3cm,终端对视频角度转换指令进行解析,可以确定对应的转换操作为向左旋转,并根据滑动距离与旋转角度的对应关系,可以确定需要沿着Y轴方向向左旋转90度;旋转之后第二角度的全景直播视频为图中的r部分。
其中,上述全景直播视频为采用预设的3D球体模型对不同拍摄角度的视频数据进行投影处理得到的。一方面,主播终端将不同拍摄角度的视频数据发送至服务器后,观众终端可以从服务器获取当前直播间的视频数据,然后由观众终端将不同拍摄角度的视频数据进行投影处理,得到全景直播视频。另一方面,主播终端将不同拍摄角度的视频数据发送至服务器后,服务器将不同拍摄角度的视频数据进行投影处理,得到全景直播视频,然后由观众终端直接从服务器中获取当前直播间的全景直播视频。
S103,展示第二角度的全景直播视频。
具体地,终端得到了第二角度的全景直播视频后,便可以在显示屏的展示区域展示该第二角度的全景直播视频,即完成了从不同角度观看全景直播视频的过程。
本实施例提供的直播视频的展示方法,首先,观众所观看的直播视频为全景直播视频,即可以从多角度观看视频,视频展示方式丰富。其次,终端可以接收观众输入的视频角度转换指令,并响应于该视频角度转换指令,将当前以第一角度展示的全景直播视频进行角度转换,得到第二角度的全景直播视频并展示;即观众可以根据自身需要随时转换全景直播视频的观看角度,大大提高了人机交互的智能性。另外,终端接收到视频角度转换指令后,由终端自身执行角度转换的动作,不需要将该指令发送至服务器执行后,再由服务器将转换后的全景视频数据发送给终端,由此大大减少了服务器与终端之间的传输功耗,使得播放的全景直播视频画面更加流畅。
在一个实施例中,如图3所示,涉及的是终端接收输入的视频角度转换指令的具体过程。可选地,上述S101可以包括:
S201,检测输入设备在当前展示界面上的触控操作的类型;该触控操作的类型包括以下至少一种:针对第一角度展示的全景直播视频的角度旋转操作、针对第一角度展示的全景直播视频的画面缩放操作。
具体地,终端可以检测当前展示界面上的触控操作,根据该触控操作确定其对应的类型,该触控操作的类型可以包括针对第一角度展示的全景直播视频的角度旋转操作,如向左旋转、向右旋转、向上旋转、向下旋转,以及针对第一角度展示的全景直播视频的画面缩放操作,如将画面放大或缩小。
可选地,终端可以检测输入设备在当前展示界面上的触控操作的类型,以该输入设备为鼠标为例进行说明,通过检测鼠标的触控操作,可以确定其对应的类型;如触控操作为点击鼠标左键向左滑动、其对应的类型为使全景直播视频向左旋转,触控操作为点击鼠标左键向右滑动、其对应的类型为使全景直播视频向右旋转,触控操作为向上滑动鼠标滚轮、其对应的类型为放大视频画面,触控操作为向下滑动鼠标滚轮、其对应的类型为缩小视频画面。关于观众使用鼠标在当前展示界面进行触控操作的示意图可以参见图3a所示。
S202,根据触控操作的类型,确定视频角度转换指令。
具体地,终端可以根据上述触控操作的类型,生成终端可以识别的视频角度转换指令,该视频角度转换指令还可以携带触控操作对应的触控变化量,即鼠标光标滑动了多长的距离,或者鼠标滚轮滚动了几圈等。
在一些场景中,观众使用输入设备在当前展示界面上输入触控操作时,有时会出现误操作行为,如点击鼠标左键向左滑动时又突然向右滑动,导致全景直播视频画面抖动的现象。因此,可选地,终端还可以检测预设的时间间隔内,所接收到的触控操作的类型是否相同。可选地,可以设置时间间隔为0.2s,在这0.2s内,若触控操作的类型相同,则根据触控操作的类型确定视频角度转换指令;若不相同(如前0.1s的类型为向左旋转,后0.1s的类型为向右旋转),则终端可以不响应该触控操作,即丢弃此次触控操作,以防止画面抖动现象。
本实施例提供的直播视频的展示方法,终端检测当前展示界面上的触控操作的类型,以确定上述视频角度转换指令;通过分析当前展示界面上的触控操作,可以准确得到观众想要转换的视频角度,那么响应此视频角度转换指令后,便可以准确的展示出观众想要观看角度的全景直播视频,进一步提高了人机交互的智能性。
在一个实施例中,如图4所示,涉及的是终端响应于视频角度转换指令,将当前以第一角度展示的全景直播视频进行角度转换,得到第二角度的全景直播视频的具体过程。可选地,上述S102可以包括:
S301,解析视频角度转换指令,确定视频角度转换指令对应的转换类别和转换幅度;该转换类别包括画面放大、画面缩小和画面旋转中的任一种,转换幅度包括放大比例、缩小比例和旋转角度中的任一种。
具体地,终端通过解析上述视频角度转换指令,可以确定该指令对应的转换类别和转换幅度。仍以观众通过输入设备(鼠标)输入视频角度转换指令为例,可选地,终端可以根据输入设备的初始状态和终止状态,确定该输入设备的触控类型和触控变化量,具体过程为:记录鼠标光标的初始位置以及滚轮上预设点的初始位置;若鼠标光标发生移动,记录鼠标光标的终止位置,通过起始位置和终止位置,可以计算鼠标光标在x轴和y轴方向的位移差,则光标的移动方向可以作为触控类型,位移差可以作为触控变化量;若鼠标滚轮发生转动,则记录该预设点的滑动轨迹和终止位置,通过初始位置和终止位置,可以确定该滑动轨迹的轨迹长度,则滚轮的滚动方向可以作为触控类型,轨迹长度可以作为触控变化量。
然后,终端根据触控类型、以及预设的触控类型与转换类别的对应关系,确定视频角度转换指令对应的转换类别。例如,光标向左移动对应的转换类别为画面向左旋转,光标向右移动对应的转换类别为画面向右旋转,滚轮向上滚动对应的转换类别为画面放大,滚轮向下滚动对应的转换类别为画面缩小。再根据触控变化量、以及预设的触控变化量与转换幅度的对应关系,确定视频角度转换指令对应的转换幅度。例如,鼠标光标向左(或向右)移动的位移差为1cm,对应的转换幅度为向左(或向右)旋转30度;鼠标光标向左(或向右)移动的位移差为2cm,对应的转换幅度为向左(或向右)旋转60度;滚轮向上(或向下)滚动的轨迹长度为半圈,对应的放大(或缩小)比例为0.5倍;鼠标向上(或向下)滚动的轨迹长度为一圈,对应的放大(或缩小)比例为1倍等。
S302,根据转换类别和转换幅度对以第一角度展示的全景直播视频进行角度转换,得到第二角度的全景直播视频。
具体地,终端根据转换类别和转换幅度,可以得知要对全景直播视频进行角度转换的方向和幅度。若转换类别为画面旋转,则终端可以直接根据旋转角度对全景直播视频进行角度转换即可,即转换幅度为向左旋转30度时,则直接将第一角度展示的全景直播视频绕Y轴向左旋转30度,得到第二角度展示的全景直播视频。若转换类别为画面放大或画面缩小,则终端需要根据第一角度以及放大比例或缩小比例计算出对应的第二角度,如当第一角度为在Y轴方向的60度视角,需要放大0.5倍时,对应的第二角度为(60+60×0.5)=90度,即最终以90度视角展示全景直播视频。
本实施例提供的直播视频的展示方法,终端通过解析视频角度转换指令,确定该视频角度转换指令对应的转换类别和转换幅度,可以准确确定出观众想要对全景直播视频进行的视频角度;然后根据转换类别和转换幅度对第一角度展示的全景直播视频进行角度转换,得到第二角度的全景直播视频,便可以准确的展示出观众想要观看角度的全景直播视频,进一步提高了人机交互的智能性。
对于当前观众所观看的直播视频,在视频界面上还可以包括一些交互界面元素,如“送礼物”按钮、“点赞”按钮、“发言”框等;为进一步丰富直播视频的展示方式,终端还可以将这些交互界面元素和直播视频帧图像进行合成,得到以第一角度展示的全景直播视频,观众所观看到的交互界面元素可以呈现出“立体”的效果,并且当观众旋转或缩放全景直播视频时,交互界面元素也会发生相应的角度转换。可选地,上述S102可以包括:将直播视频帧和交互界面元素共同进行角度转换,得到第二角度的全景直播视频。
具体地,终端可以将交互界面元素的图像进行存储,并且记录每个交互界面元素的特征位置点(例如:在坐标0,0-100,100的区域是按钮位置),然后将交互界面元素的图像与直播视频帧图像进行合成,得到以第一角度展示的全景直播视频,即可以将交互界面元素的图像与直播视频帧图像看作一个整体图像。当终端响应于视频角度转换指令后,便可将直播视频帧和交互界面元素共同进行角度转换,交互界面元素随着直播视频帧的旋转/缩放也进行相应的旋转/缩放。由此,可进一步丰富直播视频的展示方式,大大提高了观众观看直播视频的观感性。
另外,当前的直播视频较多的是主播处于室内进行直播,其场景比较单一,因此,终端还可以接收观众的场景替换指令,将直播视频的场景进行替换,例如替换为雪山场景、森林场景、河流场景等。可选地,如图5所示,上述方法还可以包括:
S401,接收输入的场景替换指令;该场景替换指令携带目标场景标识。
具体地,观众可以通过终端外接的输入设备(如鼠标)输入上述场景替换指令,如点击鼠标的左键点击相应的场景图标;若终端的显示屏为触摸屏,观众也可以通过手指在触摸屏上触碰场景图标,以输入场景替换指令;观众还可以通过语音输入上述场景替换指令,如面向终端的麦克风语音输入“雪山场景”等。那么,终端便可以通过上述方式接收到输入的场景替换指令,且该场景替换指令携带目标场景标识。
S402,根据目标场景标识,确定与场景替换指令对应的场景图像。
具体地,根据上述目标场景标识,终端可以从数据库中确定与该目标场景标识对应的场景图像的存储地址,其中,数据库中存储有不同场景标识与场景图像存储地址的对应关系;然后终端根据获得的存储地址,从该地址中获取对应的场景图像。
S403,将以第二角度展示的全景直播视频的直播背景替换为场景图像。
具体地,终端可以将场景图像与第二角度展示的全景直播视频的直播视频帧图像进行图像合成,以将全景直播视频的直播背景替换为上述场景图像。其中,终端可以将直播视频帧中的主播区域作为目标区域,其他区域作为背景区域,将背景区域替换为上述场景图像。
本实施例提供的直播视频的展示方法,终端可以接收输入的场景替换指令,根据该场景替换指令携带的目标场景标识确定场景图像,进而将以第二角度展示的全景直播视频的直播背景替换为该场景图像。由此观众可根据自己的场景喜好对全景直播视频的背景进行替换,以满足观众对展示方式的需求,进一步提高了人机交互的智能性。
上述实施例介绍了观众在全景直播视频展示过程中的一些交互操作,下面的实施例再对如何获取该全景直播视频进行详细描述。可选地,如图6所示,全景直播视频的获取方式包括:
S501,获取服务器发送的直播视频数据;该直播视频数据包括不同拍摄角度的视频数据。
具体地,该直播视频数据可以为由主播终端上传至服务器,并由观众终端从服务器中获取的视频流数据,其包括不同拍摄角度的视频数据,如主播通过主播终端拍摄的前后左右四个角度的视频数据。其中,该直播视频数据还可以携带全景标识,同一主播在同一时刻拍摄的不同角度的视频数据中全景标识相同,由此可确保将同一时刻的视频数据投影为同一全景直播视频。
可选地,上述直播视频数据为宽高比为2:1的视频流数据;由于每个主播所使用的主播终端参数不同,其上传的视频流数据可能不是2:1的尺寸,那么观众终端接收到视频流数据后,还可以将其裁剪至2:1的尺寸,使得画面更加圆润平滑。
S502,对直播视频数据进行格式转换,得到RGB视频数据。
具体地,为提高直播视频数据的投影效率,本实施例可以采用GPU技术对直播视频数据进行数据处理,则终端需先将直播视频数据转换为GPU可处理的数据格式。
可选地,终端首先对直播视频数据进行解码,得到YUV视频数据;其中,YUV平面格式(planar)数据为色度在水平方向上的采样率减半的一种编码数据形式,即每行相邻的2个Y(亮度信息)共用一个U、V(色度信息)数据,多用于供网络端接收和/或播放端接收的图像数据,可以降低传输图像数据的频宽。然后终端根据预设的转换公式,对YUV视频数据进行格式转换,得到RGB视频数据;其中,该转换公式包括Y/U/V数据值之间的求和关系式和求差关系式。可选地,该转换公式可以为
也可以为包含Y/U/V数据值之间的其他求和关系式和求差关系式。其中,终端内部可通过进程间通信(Inter-ProcessCommunication,IPC)方式对直播视频数据进行传输,以进行解码、格式转换等处理过程。
可选地,终端还可以借助顶点着色器先创建三个纹理,分别填充Y、U、V视频数据,对于缺失的U、V采样点,可以利用显卡内置的双线性滤波算法进行插值,也可以采用其他图像插值算法,以达到更高的图像质量。这里可以通过Shader实现上述插值算法,然后分别把Y、U、V渲染到纹理,再通过转换公式将YUV视频数据转换为RGB视频数据。
可选地,在终端获取到服务器发送的直播视频数据后,还可以判断该直播视频数据是否携带全景标识、终端自身是否支持上述格式转换操作、以及终端自身是否支持全景投影处理;若上述条件全都满足,则执行S502的步骤;若其中有任一个条件不满足,则终端将此直播视频数据作为普通视频进行处理,不转换为全景直播视频。由此进行兼容处理,大大提高处理直播视频数据的容错率。
S503,创建预设大小的3D球体模型,该3D球体模型用于RGB视频数据的坐标投影。
具体地,因终端需将上述直播视频数据映射为全景直播视频,该全景直播视频可看作一球体形式的视频,则终端还需创建一个预设大小的3D球体模型,用于RGB视频数据的坐标投影。其中,该3D球体模型的尺寸可以为半径为1、横向和竖向切面为128的3D球体。
S504,基于投影矩阵,将RGB视频数据投影至3D球体模型上,得到全景直播视频;其中,投影矩阵包括RGB视频数据中像素点与3D球体模型上像素点的坐标对应关系。
具体地,在得到RGB视频数据以及3D球体模型后,终端便可以基于投影矩阵,将RGB视频数据投影至3D球体模型上,得到全景直播视频。其中,本实施例可以采用D3D方法对RGB视频数据进行投影映射,D3D方法为一种用于在3D物体表面进行纹理贴图的方法,通过为视频图像的每个顶点指定一组纹理坐标,表明这些顶点在贴图面(即3D球体模型)中的坐标位置,以建立起视频图像与贴图面的映射关系。关于将RGB视频数据投影至3D球体模型的效果示意图可以参见图6a所示。
可选地,在进行投影过程中,假设3D球体模型中心为摄像点,摄像点的垂直观察范围为视角fovy(最大角度120度、最小角度60度、均值90度),np为近裁剪平面(设置为0.6),N是它到摄像点的距离,fp是远裁剪平面(设置为100),F是它到摄像点距离;则上述投影矩阵可以为
其中,
(x,y,z)为RGB视频数据中像素点的坐标,(x’,y’,z’)为3D球体模型上像素点的坐标。关于得到全景直播视频的工程处理流程可以参见图6b所示。
本实施例提供的直播视频的展示方法,终端首先获取服务器发送的直播视频数据,并对该直播视频数据进行格式转换,得到RGB视频数据,以使用GPU技术对RGB视频数据进行投影处理,大大提高了投影效率,使观众感知不到视频画面的停滞感。然后创建预设大小的3D球体模型,基于投影矩阵将RGB视频数据投影至3D球体模型上,得到全景直播视频。另外,本实施例中进行投影处理的步骤由观众终端所执行,不需要服务器执行后发送至观众终端,减少了服务器与观众终端之间的通信功耗。
在另一个实施例中,由服务器获取主播终端发送的不同拍摄角度的视频数据,对该视频数据进行格式转换,得到RGB视频数据;并基于投影矩阵将RGB视频数据投影至3D球体模型上,得到全景直播视频。当观众在观众终端上输入视频角度转换指令后,观众终端将视频角度转换指令发送至服务器,服务器根据该视频角度转换指令将第一角度的全景直播视频进行角度转换,得到第二角度的全景直播视频。然后,服务器对第一角度和第二角度分别所对应的视频区域进行比对,得到差异区域(即两个角度对应的视频区域的不同部分),将该差异区域发送至观众终端,观众终端根据该差异区域对原来以第一角度展示的全景直播视频进行截取融合,得到第二角度展示的全景直播视频。由此,可以大大减少服务器与观众终端进行交互的数据量,减少通信功耗,同时减少了观众终端的计算量。
另外,因直播视频数据通常为宽高比为2:1的视频流数据,由主播终端想服务器发送时视频数据或者服务器向观众终端发送视频数据时,可以将其进行压缩,观众终端接收到视频数据后再进行放大至2:1的尺寸。由此也可减小各终端与服务器之间通信所占用的带宽。
为更好的理解上述直播视频的展示方法的过程,下面以一个整体实施例方式对该方法进行介绍。如图7所示,该方法包括:
S601,检测输入设备在当前展示界面上的触控操作的类型;
S602,根据触控操作的类型,确定所述视频角度转换指令;
S603,根据输入设备的初始状态和终止状态,确定输入设备的触控类型和触控变化量;
S604,根据触控类型、以及预设的触控类型与转换类别的对应关系,确定视频角度转换指令对应的转换类别;
S605,根据触控变化量、以及预设的触控变化量与转换幅度的对应关系,确定视频角度转换指令对应的转换幅度;
S606,根据转换类别和转换幅度对以第一角度展示的全景直播视频进行角度转换,得到第二角度的全景直播视频;
S607,展示第二角度的全景直播视频。
关于各步骤的实现过程可以参见上述实施例的描述,其实现原理和技术效果类似,在此不再赘述。
应该理解的是,虽然图2-图7的流程图中各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-图7中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图8所示,提供了一种直播视频的展示装置,包括:接收模块21、角度转换模块22和展示模块23。
具体地,接收模块21,用于接收输入的视频角度转换指令。
角度转换模块22,用于响应于视频角度转换指令,将当前以第一角度展示的全景直播视频进行角度转换,得到第二角度的全景直播视频;其中,全景直播视频为采用预设的3D球体模型对不同拍摄角度的视频数据进行投影处理得到的。
展示模块23,用于展示第二角度的全景直播视频。
本实施例提供的直播视频的展示装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
在一个实施例中,接收模块21,具体用于检测输入设备在当前展示界面上的触控操作的类型;该触控操作的类型包括以下至少一种:针对第一角度展示的全景直播视频的角度旋转操作、针对第一角度展示的全景直播视频的画面缩放操作;根据触控操作的类型,确定视频角度转换指令。
在一个实施例中,角度转换模块22,具体用于解析视频角度转换指令,确定该视频角度转换指令对应的转换类别和转换幅度;转换类别包括画面放大、画面缩小和画面旋转中的任一种,转换幅度包括放大比例、缩小比例和旋转角度中的任一种;根据转换类别和转换幅度对以第一角度展示的全景直播视频进行角度转换,得到第二角度的全景直播视频。
在一个实施例中,角度转换模块22,具体用于根据输入设备的初始状态和终止状态,确定输入设备的触控类型和触控变化量;根据触控类型、以及预设的触控类型与转换类别的对应关系,确定视频角度转换指令对应的转换类别;根据触控变化量、以及预设的触控变化量与转换幅度的对应关系,确定视频角度转换指令对应的转换幅度。
在一个实施例中,以第一角度展示的全景直播视频包括合成的直播视频帧以及直播过程中的交互界面元素,角度转换模块22,具体用于将直播视频帧和交互界面元素共同进行角度转换,得到第二角度的全景直播视频。
在一个实施例中,如图9所示,在上述图8所示实施例的基础上,上述装置还包括确定模块24和替换模块25。
具体地,接收模块21,还用于接收输入的场景替换指令;该场景替换指令携带目标场景标识。
确定模块24,用于根据目标场景标识,确定与场景替换指令对应的场景图像。
替换模块25,用于将以第二角度展示的全景直播视频的直播背景替换为该场景图像。
本实施例提供的直播视频的展示装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
在一个实施例中,接收模块21,具体用于检测预设的时间间隔内,所接收的触控操作的类型是否相同;若是,则根据触控操作的类型确定视频角度转换指令;若否,则不响应触控操作。
在一个实施例中,如图10所示,在上述图8或图9所示实施例的基础上,上述装置还包括:获取模块26、格式转换模块27、创建模块28和投影模块29。
具体地,获取模块26,用于获取服务器发送的直播视频数据;该直播视频数据包括不同拍摄角度的视频数据。
格式转换模块27,用于对直播视频数据进行格式转换,得到RGB视频数据。
创建模块28,用于创建预设大小的3D球体模型,该3D球体模型用于RGB视频数据的坐标投影。
投影模块29,用于基于投影矩阵,将RGB视频数据投影至3D球体模型上,得到全景直播视频;其中,投影矩阵包括RGB视频数据中像素点与3D球体模型上像素点的坐标对应关系。
本实施例提供的直播视频的展示装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。需要说明的是,图10为在图8所示实施例的基础上进行示出,此处仅为示例,其也可以在图9所示实施例的基础上进行示出。
在一个实施例中,格式转换模块27,具体用于对直播视频数据进行解码,得到YUV视频数据;根据预设的转换公式,对YUV视频数据进行格式转换,得到RGB视频数据;转换公式包括Y/U/V数据值之间的求和关系式和求差关系式。
在一个实施例中,上述装置还包括判断模块,用于判断直播视频数据是否携带全景标识、终端是否支持格式转换、以及终端是否支持全景投影处理;若直播视频数据携带全景标识、且终端支持格式转换、且终端支持全景投影处理,则指示格式转换模块27执行对直播视频数据进行格式转换的步骤。
本实施例提供的直播视频的展示装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
关于直播视频的展示装置的具体限定可以参见上文中对于直播视频的展示方法的限定,在此不再赘述。上述直播视频的展示装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于终端中的处理器中,也可以以软件形式存储于终端中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种终端,其内部结构图可以如图11所示。该终端包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该终端的处理器用于提供计算和控制能力。该终端的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该终端的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种直播视频的展示方法。该终端的显示屏可以是液晶显示屏或者电子墨水显示屏,该终端的输入装置可以是显示屏上覆盖的触摸层,也可以是终端外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的终端的限定,具体的终端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种终端,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
接收输入的视频角度转换指令;
响应于视频角度转换指令,将当前以第一角度展示的全景直播视频进行角度转换,得到第二角度的全景直播视频;其中,全景直播视频为采用预设的3D球体模型对不同拍摄角度的视频数据进行投影处理得到的;
展示第二角度的全景直播视频。
本实施例提供的终端,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
检测输入设备在当前展示界面上的触控操作的类型;该触控操作的类型包括以下至少一种:针对第一角度展示的全景直播视频的角度旋转操作、针对第一角度展示的全景直播视频的画面缩放操作;
根据触控操作的类型,确定视频角度转换指令。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
解析视频角度转换指令,确定该视频角度转换指令对应的转换类别和转换幅度;转换类别包括画面放大、画面缩小和画面旋转中的任一种,转换幅度包括放大比例、缩小比例和旋转角度中的任一种;
根据转换类别和转换幅度对以第一角度展示的全景直播视频进行角度转换,得到第二角度的全景直播视频。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
根据输入设备的初始状态和终止状态,确定输入设备的触控类型和触控变化量;
根据触控类型、以及预设的触控类型与转换类别的对应关系,确定视频角度转换指令对应的转换类别;
根据触控变化量、以及预设的触控变化量与转换幅度的对应关系,确定视频角度转换指令对应的转换幅度。
在一个实施例中,以第一角度展示的全景直播视频包括合成的直播视频帧以及直播过程中的交互界面元素,处理器执行计算机程序时还实现以下步骤:
将直播视频帧和交互界面元素共同进行角度转换,得到第二角度的全景直播视频。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
接收输入的场景替换指令;该场景替换指令携带目标场景标识;
根据目标场景标识,确定与场景替换指令对应的场景图像;
将以第二角度展示的全景直播视频的直播背景替换为该场景图像。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
检测预设的时间间隔内,所接收的触控操作的类型是否相同;
若是,则根据触控操作的类型确定视频角度转换指令;
若否,则不响应触控操作。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取服务器发送的直播视频数据;该直播视频数据包括不同拍摄角度的视频数据;
对直播视频数据进行格式转换,得到RGB视频数据;
创建预设大小的3D球体模型,该3D球体模型用于RGB视频数据的坐标投影;
基于投影矩阵,将RGB视频数据投影至3D球体模型上,得到全景直播视频;其中,投影矩阵包括RGB视频数据中像素点与3D球体模型上像素点的坐标对应关系。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
对直播视频数据进行解码,得到YUV视频数据;
根据预设的转换公式,对YUV视频数据进行格式转换,得到RGB视频数据;转换公式包括Y/U/V数据值之间的求和关系式和求差关系式。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
判断直播视频数据是否携带全景标识、终端是否支持格式转换、以及终端是否支持全景投影处理;
若直播视频数据携带全景标识、且终端支持格式转换、且终端支持全景投影处理,则执行对直播视频数据进行格式转换的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
接收输入的视频角度转换指令;
响应于视频角度转换指令,将当前以第一角度展示的全景直播视频进行角度转换,得到第二角度的全景直播视频;其中,全景直播视频为采用预设的3D球体模型对不同拍摄角度的视频数据进行投影处理得到的;
展示第二角度的全景直播视频。
本实施例提供的计算机可读存储介质,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
检测输入设备在当前展示界面上的触控操作的类型;该触控操作的类型包括以下至少一种:针对第一角度展示的全景直播视频的角度旋转操作、针对第一角度展示的全景直播视频的画面缩放操作;
根据触控操作的类型,确定视频角度转换指令。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
解析视频角度转换指令,确定该视频角度转换指令对应的转换类别和转换幅度;转换类别包括画面放大、画面缩小和画面旋转中的任一种,转换幅度包括放大比例、缩小比例和旋转角度中的任一种;
根据转换类别和转换幅度对以第一角度展示的全景直播视频进行角度转换,得到第二角度的全景直播视频。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
根据输入设备的初始状态和终止状态,确定输入设备的触控类型和触控变化量;
根据触控类型、以及预设的触控类型与转换类别的对应关系,确定视频角度转换指令对应的转换类别;
根据触控变化量、以及预设的触控变化量与转换幅度的对应关系,确定视频角度转换指令对应的转换幅度。
在一个实施例中,以第一角度展示的全景直播视频包括合成的直播视频帧以及直播过程中的交互界面元素,计算机程序被处理器执行时还实现以下步骤:
将直播视频帧和交互界面元素共同进行角度转换,得到第二角度的全景直播视频。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
接收输入的场景替换指令;该场景替换指令携带目标场景标识;
根据目标场景标识,确定与场景替换指令对应的场景图像;
将以第二角度展示的全景直播视频的直播背景替换为该场景图像。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
检测预设的时间间隔内,所接收的触控操作的类型是否相同;
若是,则根据触控操作的类型确定视频角度转换指令;
若否,则不响应触控操作。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取服务器发送的直播视频数据;该直播视频数据包括不同拍摄角度的视频数据;
对直播视频数据进行格式转换,得到RGB视频数据;
创建预设大小的3D球体模型,该3D球体模型用于RGB视频数据的坐标投影;
基于投影矩阵,将RGB视频数据投影至3D球体模型上,得到全景直播视频;其中,投影矩阵包括RGB视频数据中像素点与3D球体模型上像素点的坐标对应关系。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
对直播视频数据进行解码,得到YUV视频数据;
根据预设的转换公式,对YUV视频数据进行格式转换,得到RGB视频数据;转换公式包括Y/U/V数据值之间的求和关系式和求差关系式。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
判断直播视频数据是否携带全景标识、终端是否支持格式转换、以及终端是否支持全景投影处理;
若直播视频数据携带全景标识、且终端支持格式转换、且终端支持全景投影处理,则执行对直播视频数据进行格式转换的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。