一种截图方法、服务器、终端设备及计算机可读存储介质
文献发布时间:2023-06-19 09:51:02
技术领域
本发明涉及多媒体通信技术领域,尤其涉及一种截图方法、服务器、终端设备及计算机可读存储介质。
背景技术
在基于虚拟现实(Virtual Reality,VR),根据码率和视场角(field angle ofview,FOV)自适应播放视频的场景下,在网络质量差时,用户在VR设备上看到的视频数据会切换至低码率的视频流上,导致VR设备截取的画面是低清晰度的质量较差的图片,存在无法截取到超高清清晰度的用户视角图的问题。
发明内容
本发明实施例提供一种截图方法、服务器、终端设备及计算机可读存储介质,以解决现有的截图方法中,用户在VR设备上看到的视频数据在切换至低清晰度的视频流上时,存在VR设备无法截取到超高清清晰度的用户视角图的问题。
第一方面,本发明实施例提供了一种截图方法,应用于服务器,包括:
接收终端设备发送的截图请求,所述截图请求中携带有与截图画面对应的第一视场角FOV信息和所述截图画面对应的图像帧的显示时间戳PTS,所述截图画面为所述终端设备当前播放的第一清晰度视频流中的画面;
根据所述PTS和所述第一FOV信息,从第二清晰度视频流中确定与所述截图画面对应的截图图像;其中,所述第二清晰度大于所述第一清晰度;
将所述截图图像发送至所述终端设备。
可选的,所述第二清晰度视频流包括视角独立的N个子视频流,N≥1;
所述根据所述PTS和第一FOV信息,从第二清晰度视频流中确定与用户截图画面对应的截图图像,包括:
从所述N个子视频流中,确定出与所述PTS对应的N个图像帧;
根据所述第一FOV信息,从所述N个图像帧中确定出M个图像帧,其中,1≤M≤N;
根据所述M个图像帧,生成所述截图图像。
可选的,所述根据第一FOV信息,从所述N个图像帧中确定出M个图像帧,包括:
确定第一信息和第二信息;其中,所述第一信息包括:所述第一清晰度视频流的全景分辨率的第一高值和第一宽值,所述第二信息包括:所述第二清晰度视频流的全景分辨率的第二高值和第二宽值;
根据所述第一FOV信息、所述第一信息和第二信息,确定所述第二清晰度视频流对应的第二FOV信息;
根据所述第二FOV信息和所述第二信息,从所述N个图像帧中确定出M个图像帧。
可选的,所述根据所述第二FOV信息和所述第二信息,从所述N个图像帧中确定出M个图像帧,包括:
根据所述第二FOV信息和所述第二信息,确定所述截图画面是否处于所述第二清晰度视频流的全景图像的边缘位置;其中,所述截图画面对应的所述第二清晰度视频流的全景图像由所述N个图像帧组成;
在确定所述截图画面处于所述第二清晰度视频流的全景图像中的边缘位置时,从所述N个图像帧中,确定出与所述截图画面对应的横向图像帧集合和纵向图像帧集合;
根据所述横向图像帧集合和所述纵向图像帧集合,从所述N个图像帧中确定出M个图像帧;
其中,所述横向为第二FOV成像的左上角视点所在的横向;所述纵向为第二FOV成像的左上角视点所在的纵向;其中,所述第二FOV为所述截图画面对应所述第二清晰度视频流中的视场角。
可选的,所述第一FOV信息包括以下至少一项信息:
第一FOV成像的左上角视点对应的流序号、第一FOV成像的左上角视点的坐标信息、第一FOV的视角高和第一FOV的视角宽;其中,所述第一FOV为所述截图画面对应所述第一清晰度视频流的视场角。
可选的,所述第二FOV信息包括以下至少一项信息:
第二FOV成像的左上角视点对应的流序号、第二FOV成像的左上角视点的坐标信息、第二FOV的视角高和第二FOV的视角宽;其中,所述第二FOV为所述截图画面对应所述第二清晰度视频流的视场角。
第二方面,本发明实施例还提供一种截图方法,应用于终端设备,包括:
发送截图请求至服务器;其中,所述截图请求携带有与截图画面对应的第一视场角FOV信息和所述截图画面对应的图像帧的显示时间戳PTS,所述截图画面为所述终端设备当前播放的第一清晰度的视频流中的画面;
接收所述服务器根据所述PTS和所述第一FOV信息发送的截图图像。
可选的,所述第一FOV信息包括以下至少一项信息:
第一FOV成像的左上角视点对应的流序号、第一FOV成像的左上角视点的坐标信息、第一FOV的视角高、和第一FOV的视角宽;其中,所述第一FOV为所述截图画面对应所述第一清晰度视频流的视场角。
第三方面,本发明实施例还提供一种服务器,包括:收发机、存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序;所述处理器,用于读取存储器中的程序实现如上所述的截图方法中的步骤。
第四方面,本发明实施例还提供一种终端设备,包括:收发机、存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序;所述处理器,用于读取存储器中的程序实现如上所述的截图方法中的步骤。
第五方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的截图方法中的步骤。
在本发明实施例中,通过服务器接收终端设备发送的截图请求,所述截图请求中携带有与截图画面对应的第一视场角FOV信息和所述截图画面对应的图像帧的显示时间戳PTS,所述截图画面为所述终端设备当前播放的第一清晰度视频流中的画面;根据所述PTS和所述第一FOV信息,从第二清晰度视频流中确定与所述截图画面对应的截图图像;其中,所述第二清晰度大于所述第一清晰度;将所述截图图像发送至所述终端设备。因此,利用本发明实施例的方案,能够保证用户截取到超高清清晰度的用户视角截图,避免用户在VR设备上看到的视频数据在切换至低清晰度的视频流上时,导致用户此时截取的画面是低清晰度的质量较差的图片的问题。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的多码率场景传输示意图;
图2是本发明实施例提供的截图方法的流程图之一;
图3是本发明实施例提供的FOV示意图之一;
图4是本发明实施例提供的FOV示意图之一;
图5是本发明实施例提供的截图方法的流程图之二;
图6是本发明实施例提供的截图装置的结构图之一;
图7是本发明实施例提供的截图装置的结构图之二;
图8是本发明实施例提供的服务器的结构图;
图9是本发明实施例提供的终端设备的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前,服务器往往根据VR采集设备收录到360度的视频以及音频。在360度VR场景下,用户侧只能看到100~120度的视角,在8K/16K超高清全景深VR流的播放场景下,通常采用OMAF(omnidirectional media application format,全景媒体的应用格式)标准架构,将VR全景通过球面纹理映射平面方法,把曲面像素转化成长宽矩形平面像素,同时把它分为若干等分,示例性的,根据分辨率的长宽以16等分为例,播放器从后端获取视角所在流内容为如图1中所示的2、3、6、7、10和11格子内的流。
在OMAF标准下,可支持多种码率转码、录制,按码率、视频分布生产多路直播流,根据播放器网络负载状况,播放视角可能落在低清晰度的FOV内。播放器在FOV多码率场景传输(如图1),在T1时刻,本身是低码率文件在渲染,无法在终端截取FOV最高清的图,存在无法在终端提供更清晰的FOV视角的超高清图片的问题。
基于上述问题,本发明提供了一种VR终端设备和服务端配合,通过终端播放流媒体信息采样,上传至服务端,由服务端计算出高清晰度流对应视频帧的更清晰的图片信息的方案,保证用户能够截取到超高清清晰度的用户视角图,不同于原先的截图传输方式,同时简化了通信网络的压力。
参见图2,图2是本发明实施例提供的截图方法的流程图,如图2所示,截图方法应用于服务器,服务器针对原始超高清视频流,按视角和码率转成多路独立的音视频流,构建有本地解析模型。示例性的,如图1中,按不同清晰度可以包括低帧率背景图、低码率4K、中码率8K、高码率16K;对于低码率、中码率和高码率,从左往右,从上到下标记视点n,例如图1至3中,n属于[1,16]自然数。多路独立的视频流包括:
高码率:S(H)(1)、S(H)(2)……S(H)(16);其中,H代表高码率;
中码率:S(M)(1)、S(M)(2)……S(M)(16);其中,M代表中码率;
低码率:S(L)(1)、S(L)(2)……S(L)(16);其中,L代表低码率;
全景低帧率低码率流:S(D)(0),只有1路流;其中,D代表全景低码率低帧率。
服务端构建的视频流集合为QS(X)={S(X)(n)},(X)指代高(H)、中(M)或低(L),n表示视点块号(流序号);其中,全景低帧率低码率流S(D)独立处理。
针对高中低集合S(X)(n)本身,在录制服务器上分别记录收录的X类型码率的n视点流的关键帧显示时间戳Tr_pts(X)(n)(p),p代表第几个GOP,p从1开始。
可以理解,为了实现视频的正确播放,对于上述多路独立的视频流,包括以下结论:
结论一:转码转出的高中低码率同一时刻帧的pts(Presentation Time Stamp,显示时间戳)一致;即:Tr_pts(H)(n)(p)=Tr_pts(M)(n)(p)=Tr_pts(L)(n)(p)。
例如,在第4个GOP的I帧,第三个视点,高、中、低三路流的PTS是一致的;即,Tr_pts(H)(3)(4)=Tr_pts(M)(3)(4)=Tr_pts(L)(3)(4)。
结论二:转码转出的各视点同一时刻的帧pts一致;即:Tr_pts(X)(n)(p)=Tr_pts(X)(n+1)(p),n小于16的自然数等式2。
例如,以高码率,收录开始第3个GOP为例:
Tr_pts(H)(1)(3)=Tr_pts(H)(2)(3)=……=Tr_pts(H)(16)(3)。
结论三:因为全景低帧率流与高中低流的帧率不一致,所有关键帧的PTS有可能不一致。但是,全景低帧率流的关键帧对应画面的对应PTS值在同一时刻高中低画面会有对应画面,即全景低码率低帧率流Tr_pts(X)(p)≤Tr_pts(D)(p’) 其中p值不一定与p’一致,p’代表全景流的第p’个帧,p代表高或中或低的第p个帧,低码率流低帧率流与高中低码率流的帧率不一致,但是已知Tr_pts(t)(p’),可以通过比较确定Tr_pts(x)(m)。 例如,全景低帧率流每秒包括7帧图片,高码率流每秒60帧图片,因为7与60不具备整数倍关系,那么全景低帧率流和高码率流对于用户视角画面帧的PTS会不一致。若用户视角的画面适配在全景低帧率流上,在高码率流上确定对应高清画面时,需要在高码率流中确定与全景低码率流的画面的PTS最接近的新的PTS。 具体的,如图2中,截图方法包括以下步骤: 步骤11,接收终端设备发送的截图请求,所述截图请求中携带有与截图画面对应的第一视场角FOV信息和所述截图画面对应的图像帧的显示时间戳PTS,所述截图画面为所述终端设备当前播放的第一清晰度视频流中的画面; 本步骤中,示例性的,第一清晰度视频流可以为低帧率低码率背景图视频流、低码率4K流或者中码率8K流。截图画面可以为终端设备侧播放的用户触发截图时对应的用户视角画面。 其中,如图2和3中,第一FOV信息包括以下至少一项信息: 第一FOV成像的左上角视点对应的流序号:Seq(流序号)、第一FOV成像的左上角视点的坐标信息:(Vp1_x(X),Vp1_y(X))、第一FOV的视角高:Vp1_h(X)和第一FOV的视角宽:Vp1_w(X);其中,所述第一FOV为所述截图画面对应所述第一清晰度视频流的视场角。其中,(X)指代高(H)、中(M)、低(L)或全景低帧率低码率流(D);Vp1_x(X)为第一FOV成像的左上角视点与第一清晰度视频流全景画面的左侧边缘的距离,Vp1_y(X)为第一FOV成像的左上角视点与第一清晰度视频流全景画面的上侧边缘的距离。 需要说明的是,若当前终端设备播放的第一清晰度视频流是低码率低帧率全景图,则实际流序号为0,需要虚拟出FOV成像的左上角视点所在的流序号:例如,将全景图按像素划分为16份(流序号为1至16),虚拟的第一FOV成像的左上角视点对应的流序号:Seq(流序号=(Vp1_x(D)/(Vw(D)/4)+1)+4×Vp1_y(D)/(Vh(D)/4);其中,Vp1_x(D)/(Vw(D)/4)向下取整,Vp1_y(D)/(Vh(D)/4向下取整。 其中,Vw(D)为低码率低帧率全景图分辨率的宽值,Vh(D)为低码率低帧率全景图分辨率的高值,Vp1_x(D)为第一FOV成像的左上角视点与低码率低帧率全景图画面的左侧边缘的距离,Vp1_y(D)为第一FOV成像的左上角视点与低码率低帧率全景画面的上侧边缘的距离。 步骤12,根据所述PTS和所述第一FOV信息,从第二清晰度视频流中确定与所述截图画面对应的截图图像;其中,所述第二清晰度大于所述第一清晰度; 示例性的,在第一清晰度视频流为低帧率背景图视频流、低码率4K流或者中码率8K流时,第二清晰度视频流可以为高码率16K流。 本步骤中,由于划分了高中低码率视点流以及低帧率低码率全景两大类基于视点割分的码率上,根据PTS值以及上述结论一、二和三,在第二清晰度视频流中确定与PTS值对应的截图图像所在的画面;进一步基于第一FOV信息从截图图像所在的第二清晰度视频流的画面中,确定截图图像作为与用户截图画面对应的高清截图图像。 需要指出,对于用户FOV适配在全景低帧率低码率的背景图的情况,将PTS值与最高清晰度的PTS比较,确定最接近的Tr_pts(H)(n)(p)中的p值,全景PTS场景,即用户在低码率场景下触发截图,后端高清晰度的PTS无法找到一致,则通过结论三,确定最接近的GOP值,再根据B帧、P帧解析出新的PTS与之对应比较,确定高清的最接近的PTS,根据最接近的PTS值确定出截图画面所在的高清全景所有的视点流,进一步根据第一FOV信息,从高清全景所有的视点流中,确定出截图画面所在的视点流,即可得到与用户截图画面对应的高清截图图像。 需要说明的是,在终端设备当前播放的第一清晰度的视频流为高码率16K流时,也可统一通过服务器,根据所述PTS和所述第一FOV信息,从第二清晰度视频流中确定与所述截图画面对应的截图图像,此时,第二清晰度的视频流也可以为高码率16K流,这样,能够减少终端设备的消耗,便于实现高效截图。 步骤13,将所述截图图像发送至所述终端设备。 上述实施例中,终端设备向服务器发送截图请求,并在截图请求中携带有与截图画面对应的第一视场角FOV信息和所述截图画面对应的图像帧的显示时间戳PTS,其中截图画面为所述终端设备当前播放的第一清晰度视频流中的画面;服务器根据所述PTS和所述第一FOV信息,从第二清晰度视频流中确定与所述截图画面对应的截图图像;其中,所述第二清晰度大于所述第一清晰度;最后将所述截图图像发送至所述终端设备。这样能够保证用户截取到超高清清晰度的用户视角截图,避免用户在VR设备上看到的视频数据在切换至低清晰度的视频流上时,导致用户此时截取的画面是低清晰度的质量较差的图片的问题。 在一实施例中,所述第二清晰度视频流包括视角独立的N个子视频流,N≥1;示例性的,如图3和4中,第二清晰度视频流为高码率流,且包括S(H)(1)、S(H)(2)……S(H)(16),共16个视角独立的子视频流。具体的,上述步骤12包括: 步骤121,从所述N个子视频流中,确定出与所述PTS对应的N个图像帧; 步骤122,根据所述第一FOV信息,从所述N个图像帧中确定出M个图像帧,其中,1≤M≤N; 步骤123,根据所述M个图像帧,生成所述截图图像。 该实施例中,根据上述结论一、二和三,通过截图画面对应的图像帧的显示时间戳PTS,即可在N个子视频流中分别确定出一个图像帧,即共确定出N个图像帧,这N个图像帧可构成第二清晰度视频流的一个全景图,该全景图中包括截图画面。进一步的,根据第一FOV信息,从所述N个图像帧中确定出M个图像帧,其中M个图像帧为构成截图图像的图像帧,通过将M个图像帧拼接即可生成截图画面。 在一实施例中,步骤122包括: 步骤1221,确定第一信息和第二信息;其中,所述第一信息包括:所述第一清晰度视频流的全景分辨率的第一高值和第一宽值,所述第二信息包括:所述第二清晰度视频流的全景分辨率的第二高值和第二宽值; 步骤1222,根据所述第一FOV信息、所述第一信息和第二信息,确定所述第二清晰度视频流对应的第二FOV信息; 步骤1223,根据所述第二FOV信息和所述第二信息,从所述N个图像帧中确定出M个图像帧。 其中,所述第二FOV信息包括以下至少一项信息: 第二FOV成像的左上角视点对应的流序号、第二FOV成像的左上角视点的坐标信息、第二FOV的视角高和第二FOV的视角宽;其中,所述第二FOV为所述截图画面对应所述第二清晰度视频流的视场角。 该实施例中,根据各分辨率视点位置(Vp_x,Vp_y)值与FOV分辨率成正比这一关系,即可求出服务器端的高码率分辨率中FOV成像的左上角视点位置以及FOV成像视角画面长宽信息,具体公式为: 公式一:高码率分辨率中FOV成像的左上角视点x坐标:Vp2_x(H)=Vp1_x(X)×Vw(H)/Vw(X); 其中,Vp2_x(H)为第二FOV成像的左上角视点与高码率视频流(第二清晰度视频流)全景画面的左侧边缘的距离,Vp1_x(X)为第一FOV成像的左上角视点与第一清晰度视频流全景画面的左侧边缘的距离,Vw(H)为高码率的全景分辨率横向高值(第二清晰度视频流的全景分辨率的第二高值),Vw(X)为终端设备当前播放的X类型码率视频的全景分辨率横向高值(第一清晰度视频流的全景分辨率的第一高值),X指代低帧率背景图、低码率或中码率; 公式二:高码率分辨率中FOV成像的左上角视点y坐标:Vp2_y(H)=Vp1_y(X)×Vh(H)/Vh(X)。 其中,Vp2_y(X)为第二FOV成像的左上角视点与第二清晰度视频流全景画面的上侧边缘的距离,Vp1_y(X)为第一FOV成像的左上角视点与第一清晰度视频流全景画面的上侧边缘的距离,Vh(H)为高码率的全景分辨率纵向宽值(第二清晰度视频流的全景分辨率的第二宽值),Vh(X)为终端设备当前播放的X类型码率视频的全景分辨率横向宽值(第一清晰度视频流的全景分辨率的第一宽值); 公式三:第二FOV的视角画面长:Vp2_h(H)=Vp1_h(X)×Vh(H)/Vh(X); 其中,Vp2_h(H)为第二FOV的视角画面长(如图3中所示FOV的height),Vp1_h(X)为第一FOV的视角画面长(如图1中所示FOV的height),Vh(H)为高码率的全景分辨率纵向宽值(第二清晰度视频流的全景分辨率的第二宽值,如图4中的width),Vh(X)为为终端设备当前播放的X类型码率视频的全景分辨率横向宽值(第一清晰度视频流的全景分辨率的第一宽值); 公式四:第二FOV的视角画面宽:Vp2_w(H)=Vp1_w(X)×Vw(H)/Vw(X); 其中,Vp2_w(H)为第二FOV的视角画面宽(如图3中所示FOV的width),Vp1_w(X)为第一FOV的视角画面宽(如图2中所示FOV的width),Vw(H)为高码率的全景分辨率横向高值(第二清晰度视频流的全景分辨率的第二高值,如图4中的height),Vw(X)为终端设备当前播放的X类型码率视频的全景分辨率横向高值(第一清晰度视频流的全景分辨率的第一高值),X指代低帧率背景图、低码率或中码率;例如,高码率整体视频是4K分辨率为3840×2160,则Vw(H)=3840,坐标范围为[0,3839],Vh(H)=2160,坐标范围为[0,2159]。 第二FOV的左上角视点所在流号:Seq(H)=Seq(X); 其中,Seq(H)为第二FOV成像的左上角视点对应的流序号,Seq(X)为第一FOV成像的左上角视点对应的流序号。 进一步的,服务器端在进行高清图片抽取时,面临用户视角可能会在中间视点组合(如图3所示),有可能会在整体边缘组合的场景(如图4所示)。具体的,在一实施例中,步骤1223包括: 根据所述第二FOV信息和所述第二信息,确定所述截图画面是否处于所述第二清晰度视频流的全景图像的边缘位置;其中,所述截图画面对应的所述第二清晰度视频流的全景图像由所述N个图像帧组成; 在确定所述截图画面处于所述第二清晰度视频流的全景图像中的边缘位置时,从所述N个图像帧中,确定出与所述截图画面对应的横向图像帧集合和纵向图像帧集合; 根据所述横向图像帧集合和所述纵向图像帧集合,从所述N个图像帧中确定出M个图像帧; 其中,所述横向为第二FOV成像的左上角视点所在的横向;所述纵向为第二FOV成像的左上角视点所在的纵向;其中,所述第二FOV为所述截图画面对应所述第二清晰度视频流中的视场角。 该实施例中,具体的,当Vp2_x(H)+Vp2_w(H)≥Vw(H),即x位置与横向宽值2超过了该码率图像全景横向宽值,则如图4中场景,即可确定截图图像对应的图像帧被分割为左右两部分;当Vp2_y(H)+Vp2_h(H)≥Vh(H),y位置与截取纵向宽度之和超过了该码率图像全景纵向高度,则如图4中场景,即可确定截图图像对应的图像帧被分割为上下两部分。 其中,Vp2_x(H)为第二FOV成像的左上角视点与高码率全景画面的左侧边缘的距离,Vp2_w(H)为第二FOV的视角画面宽(如图3中所示FOV的width),Vw(H)为高码率的全景分辨率横向高值(第二清晰度视频流的全景分辨率的第二高值,如图4中的height);Vp2_y(H)为第二FOV成像的左上角视点与高码率(第二清晰度)视频流全景画面的上侧边缘的距离,Vp2_h(H)为第二FOV的视角画面长(如图3中所示FOV的height),Vh(H)为高码率的全景分辨率纵向宽值(第二清晰度视频流的全景分辨率的第二宽值,如图4中的width)。 示例性的,下面以图3和图4为示例,对从所述N个图像帧中,确定截图画面对应的横向图像帧集合和纵向图像帧集合进行介绍: 一、确定截图画面对应的横向图像帧集合 情况一:图像帧被分割为左右两部分(如图4所示) 先横向定位截图图像涉及多少个视点块,令Uw=Vp2_x(H)+Vp2_w(H)-Vw(H);从图像上拼接为:用户视角左半部分图像帧拼接上用户视角右半部分图像帧。 (一)先提取用户视角左半部分的视点集合La(n): 步骤1-1,确定用户视角左半部分横向宽w1为:w1=Vw(H)-Vp2_x(H),即总宽减去视点横向坐标的值为用户视角左半部分横向宽w1(如图4场景); 步骤1-2,通过w1/w0可以得出,用户视角左半部分分布视点个数Z(left)为:Z(Left)=w1/w0+1;其中,横向4个分块,宽w0一致,每个视点分块宽为总宽/4,也即w0=Vw(H)/4;其中,w1/w0向下取整。 步骤1-3,由于视点分块是连续的,所以可以推导出:用户视角左半部分用户视点集合数列为:La(n)=seq(H)+(n-1);n值范围[1,Z(Left)]。 如图4中,起始流序号为“15”,n值为2,则左视野集合为15、16; (二)提取用户视角右半部分的视点集合Ra(n): 步骤2-1,用户视野右半部分宽w2为:w2=Vp2_w(H)-w1=Vp2_w(H)-Vw(H)+Vp2_x(H),即用户视野宽减去用户视野左半部分宽得出用户视野右半部分宽w2(如图4场景); 步骤2-2,通过w2/w0可以得出,用户视角右半部分分布视点个数Z(Right)为:Z(Right)=w2/w0+1; 步骤2-3,用户视角右半部分用户视点集合数列Ra(n)为: Ra(n)=seq(H)-f(seq(H)%4)×4-seq(H)%4+1+(n-1);n值范围[1,Z(Right)]; 这里,定义f(x)=1,当x等于0;f(x)=0,当x非0。 如图4,seq(H)=15,n=1,则右视角集合为13; (三)确定横向视点数列集合La(n): {{La(n)=seq(H)+(n-1),n值范围[1,Z(Left)]},{Ra(n)=seq(H)-f(seq(H)%4)×4-seq(H)%4+1+(n-1),n值范围[1,Z(Right)]}} 情况二:图像帧横向集中在中间视点组合(如图3所示) 当Vp2_x(H)+Vp2_w(H) {A(n)=seq(H)+(n-1),n值范围[1,(Vp2_x(H)+Vp2_w(H))×4/Vw(H)]}。 其中,(Vp2_x(H)+Vp2_w(H))×4/Vw(H)向下取整。 二、确定截图画面对应的纵向图像帧集合 情况一:图像帧被分割为上下两部分(如图4所示) 同理横向算法,可得出: (一)用户视角纵向上半部分用户视点集合数列Ua(n)为:Ua(n)=seq(H)+(n-1)×4;n值范围[1,(Vh(H)-Vp2_y(H))×4/Vh(H)];其中,(Vh(H)-Vp2_y(H))×4/Vh(H)向下取整。 如[7,15],则上视点起始为7,下一个视点为11和15。 (二)用户视角纵向下半部分用户视点集合数列Da(n)为:Da(n)=f(Seq(H)%4)×4+(n-1)×4;n值范围[1,(Vh(H)-Vp2_y(H))/(Vh(H)/4)];其中,(Vh(H)-Vp2_y(H))/(Vh(H)/4)为向下取整。 纵向方向上半部长度变量为Uh,Uh=Vp2_y(H)+Vp2_h(H)-Vh(H)。 情况二:图像帧纵向集中在中间视点组合(如图3所示) 当Vp2_y(H)+Vp2_h(H) 进一步的,在一实施例中,根据所述横向图像帧集合和所述纵向图像帧集合,从所述N个图像帧中确定出M个图像帧,包括: 该实施例中,结合横向视点流集群与纵向视点流集群形成集合P,横向集群{A1,A2,…,An},如图3中为{2,3},纵向集群{B1,B2,…,Bm},如图3中为{2,6,10}。按前面推算A1=B1,n为横向个数,m为纵向个数,则P=Ai-A1+Bj,i=[1,n],j=[1,m],根据示例图3可知,P={2,6,10,3,7,11}。 最终在高清码率场景下,服务器按序把P拼接出完整的YUV视频原始数据,即可重新生成超高清码率下的图像数据(高清截图图像),通过编码压缩超高清PNG图片,在云端保存。同时返回PNG获取URL回复给终端,由终端进行截图内容展现。 上述方案,在FOV视点传输背景以及终端码率自适应下,可以在任意时刻充分利用服务端全量数据优势,提供高品质截图给客户终端设备。 参见图5,图5是本发明实施例提供的截图方法的流程图,如图5所示,方法应用于终端设备,如VR终端,所述方法包括以下步骤: 步骤21,发送截图请求至服务器;其中,所述截图请求携带有与截图画面对应的第一视场角FOV信息和所述截图画面对应的图像帧的显示时间戳PTS,所述截图画面为所述终端设备当前播放的第一清晰度的视频流中的画面; 本步骤中,示例性的,第一清晰度视频流可以为低帧率低码率背景图视频流、低码率4K流或者中码率8K流。截图画面可以为用户触发截图时对应的用户视角画面。 步骤22,接收所述服务器根据所述PTS和所述第一FOV信息发送的截图图像。 本步骤中,由于划分了高中低码率视点流以及低帧率低码率全景两大类基于视点割分的码率上,服务器根据PTS值以及上述结论一、二和三,在第二清晰度视频流中确定与PTS值对应的截图图像所在的画面;进一步基于第一FOV信息从截图图像所在的第二清晰度视频流的画面中,确定截图图像作为与用户截图画面对应的高清截图图像,并发送给终端设备。 上述实施例中,通过终端设备通过向服务器发送截图请求,并在截图请求中携带有与截图画面对应的第一视场角FOV信息和所述截图画面对应的图像帧的显示时间戳PTS,其中截图画面为所述终端设备当前播放的第一清晰度视频流中的画面;通过服务器,基于所述PTS和所述第一FOV信息,从第二清晰度视频流中确定与所述截图画面对应的截图图像;其中,所述第二清晰度大于所述第一清晰度;最后将所述截图图像发送至所述终端设备。这样能够保证用户截取到超高清清晰度的用户视角截图,避免用户在VR设备上看到的视频数据在切换至低清晰度的视频流上时,导致用户此时截取的画面是低清晰度的质量较差的图片的问题。 在一实施例中,如图2和3中,第一FOV信息包括以下至少一项信息: 第一FOV成像的左上角视点对应的流序号:Seq(流序号)、第一FOV成像的左上角视点的坐标信息:(Vp1_x(X),Vp1_y(X))、第一FOV的视角高:Vp1_h(X)和第一FOV的视角宽:Vp1_w(X);其中,所述第一FOV为所述截图画面对应所述第一清晰度视频流的视场角。其中,(X)为高(H)、中(M)、低(L)或全景低帧率低码率流(D);Vp1_x(X)为第一FOV成像的左上角视点与第一清晰度视频流全景画面的左侧边缘的距离,Vp1_y(X)为第一FOV成像的左上角视点与第一清晰度视频流全景画面的上侧边缘的距离。 需要说明的是,若当前终端设备播放的是低码率低帧率全景图,则实际流序号为0,需要虚拟出FOV成像的左上角视点所在的流序号:例如,将全景图按像素划分为16份(流序号为1至16),虚拟的第一FOV成像的左上角视点对应的流序号:Seq(流序号=(Vp1_x(D)/(Vw(D)/4)+1)+4×Vp1_y(D)/(Vh(D)/4);其中,Vp1_x(D)/(Vw(D)/4)向下取整,Vp1_y(D)/(Vh(D)/4向下取整。 其中,Vw(D)为低码率低帧率全景图分辨率的宽值,Vh(D)为低码率低帧率全景图分辨率的高值,Vp1_x(D)为第一FOV成像的左上角视点与低码率低帧率全景图画面的左侧边缘的距离,Vp1_y(D)为第一FOV成像的左上角视点与低码率低帧率全景画面的上侧边缘的距离。 参见图6,本发明实施例还提供了一种截图装置。图6是本发明实施例提供的截图装置的结构图。 如图6所示,截图装置600,应用于服务器,包括: 第一接收模块601,用于接收终端设备发送的截图请求,所述截图请求中携带有与截图画面对应的第一视场角FOV信息和所述截图画面对应的图像帧的显示时间戳PTS,所述截图画面为所述终端设备当前播放的第一清晰度视频流中的画面; 确定模块602,用于根据所述PTS和所述第一FOV信息,从第二清晰度视频流中确定与所述截图画面对应的截图图像;其中,所述第二清晰度大于所述第一清晰度; 第一发送模块,用于603将所述截图图像发送至所述终端设备。 可选的,所述第二清晰度视频流包括视角独立的N个子视频流,N≥1;确定模块602包括: 第一确定子模块,用于从所述N个子视频流中,确定出与所述PTS对应的N个图像帧; 第二确定子模块,用于根据所述第一FOV信息,从所述N个图像帧中确定出M个图像帧,其中,1≤M≤N; 生成子模块,用于根据所述M个图像帧,生成所述截图图像。 可选的,第二确定子模块包括: 第一确定单元,用于确定第一信息和第二信息;其中,所述第一信息包括:所述第一清晰度视频流的全景分辨率的第一高值和第一宽值,所述第二信息包括:所述第二清晰度视频流的全景分辨率的第二高值和第二宽值; 第二确定单元,用于根据所述第一FOV信息、所述第一信息和第二信息,确定所述第二清晰度视频流对应的第二FOV信息; 第三确定单元,用于根据所述第二FOV信息和所述第二信息,从所述N个图像帧中确定出M个图像帧。 可选的,第三确定单元在根据所述第二FOV信息和所述第二信息,从所述N个图像帧中确定出M个图像帧时,具体用于: 根据所述第二FOV信息和所述第二信息,确定所述截图画面是否处于所述第二清晰度视频流的全景图像的边缘位置;其中,所述截图画面对应的所述第二清晰度视频流的全景图像由所述N个图像帧组成; 在确定所述截图画面处于所述第二清晰度视频流的全景图像中的边缘位置时,从所述N个图像帧中,确定出与所述截图画面对应的横向图像帧集合和纵向图像帧集合; 根据所述横向图像帧集合和所述纵向图像帧集合,从所述N个图像帧中确定出M个图像帧; 其中,所述横向为第二FOV成像的左上角视点所在的横向;所述纵向为第二FOV成像的左上角视点所在的纵向;其中,所述第二FOV为所述截图画面对应所述第二清晰度视频流中的视场角。 可选的,所述第一FOV信息包括以下至少一项信息: 第一FOV成像的左上角视点对应的流序号、第一FOV成像的左上角视点的坐标信息、第一FOV的视角高和第一FOV的视角宽;其中,所述第一FOV为所述截图画面对应所述第一清晰度视频流的视场角。 可选的,所述第二FOV信息包括以下至少一项信息: 第二FOV成像的左上角视点对应的流序号、第二FOV成像的左上角视点的坐标信息、第二FOV的视角高和第二FOV的视角宽;其中,所述第二FOV为所述截图画面对应所述第二清晰度视频流的视场角。 本发明实施例提供的上述装置600,可以执行上述服务器侧的截图方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。 参见图7,本发明实施例还提供了一种截图装置。图7是本发明实施例提供的截图装置的结构图。 如图7所示,截图装置700包括: 第二发送模块701,用于发送截图请求至服务器;其中,所述截图请求携带有与截图画面对应的第一视场角FOV信息和所述截图画面对应的图像帧的显示时间戳PTS,所述截图画面为所述终端设备当前播放的第一清晰度的视频流中的画面; 第二接收模块702,用于接收所述服务器根据所述PTS和所述第一FOV信息发送的截图图像。 可选的,所述第一FOV信息包括以下至少一项信息: 第一FOV成像的左上角视点对应的流序号、第一FOV成像的左上角视点的坐标信息、第一FOV的视角高、和第一FOV的视角宽;其中,所述第一FOV为所述截图画面对应所述第一清晰度视频流的视场角。 本发明上述实施例提供的上述装置700,可以执行上述终端设备侧的截图方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。 参见图8,本发明实施例提供一种服务器,包括:收发机810、存储器820、总线接口、处理器800及存储在所述存储器820上并可在所述处理器800上运行的计算机程序;处理器800,用于读取存储器820中的程序,执行下列过程: 接收终端设备发送的截图请求,所述截图请求中携带有与截图画面对应的第一视场角FOV信息和所述截图画面对应的图像帧的显示时间戳PTS,所述截图画面为所述终端设备当前播放的第一清晰度视频流中的画面; 根据所述PTS和所述第一FOV信息,从第二清晰度视频流中确定与所述截图画面对应的截图图像;其中,所述第二清晰度大于所述第一清晰度; 将所述截图图像发送至所述终端设备。 收发机810,用于在处理器800的控制下接收和发送数据。 其中,在图8中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器800代表的一个或多个处理器和存储器820代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。收发机810可以是多个元件,即包括发送机和收发机,提供用于在传输介质上与各种其他装置通信的单元。处理器800负责管理总线架构和通常的处理,存储器820可以存储处理器800在执行操作时所使用的数据。处理器800负责管理总线架构和通常的处理,存储器820可以存储处理器800在执行操作时所使用的数据。 可选的,所述第二清晰度视频流包括视角独立的N个子视频流,N≥1;处理器800还用于读取所述计算机程序,执行如下步骤: 从所述N个子视频流中,确定出与所述PTS对应的N个图像帧; 根据所述第一FOV信息,从所述N个图像帧中确定出M个图像帧,其中,1≤M≤N; 根据所述M个图像帧,生成所述截图图像。 可选的,处理器800还用于读取所述计算机程序,执行如下步骤: 确定第一信息和第二信息;其中,所述第一信息包括:所述第一清晰度视频流的全景分辨率的第一高值和第一宽值,所述第二信息包括:所述第二清晰度视频流的全景分辨率的第二高值和第二宽值; 根据所述第一FOV信息、所述第一信息和第二信息,确定所述第二清晰度视频流对应的第二FOV信息; 根据所述第二FOV信息和所述第二信息,从所述N个图像帧中确定出M个图像帧。 可选的,处理器800还用于读取所述计算机程序,执行如下步骤: 根据所述第二FOV信息和所述第二信息,确定所述截图画面是否处于所述第二清晰度视频流的全景图像的边缘位置;其中,所述截图画面对应的所述第二清晰度视频流的全景图像由所述N个图像帧组成; 在确定所述截图画面处于所述第二清晰度视频流的全景图像中的边缘位置时,从所述N个图像帧中,确定出与所述截图画面对应的横向图像帧集合和纵向图像帧集合; 根据所述横向图像帧集合和所述纵向图像帧集合,从所述N个图像帧中确定出M个图像帧; 其中,所述横向为第二FOV成像的左上角视点所在的横向;所述纵向为第二FOV成像的左上角视点所在的纵向;其中,所述第二FOV为所述截图画面对应所述第二清晰度视频流中的视场角。 可选的,所述第一FOV信息包括以下至少一项信息: 第一FOV成像的左上角视点对应的流序号、第一FOV成像的左上角视点的坐标信息、第一FOV的视角高和第一FOV的视角宽;其中,所述第一FOV为所述截图画面对应所述第一清晰度视频流的视场角。 可选的,所述第二FOV信息包括以下至少一项信息: 第二FOV成像的左上角视点对应的流序号、第二FOV成像的左上角视点的坐标信息、第二FOV的视角高和第二FOV的视角宽;其中,所述第二FOV为所述截图画面对应所述第二清晰度视频流的视场角。 本发明实施例提供的服务器,可以执行上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。 如图9所示,本发明实施例的终端设备,包括:收发机910、存储器920、总线接口、处理器900及存储在所述存储器920上并可在所述处理器900上运行的计算机程序;处理器900,用于读取存储器920中的程序,执行下列过程: 发送截图请求至服务器;其中,所述截图请求携带有与截图画面对应的第一视场角FOV信息和所述截图画面对应的图像帧的显示时间戳PTS,所述截图画面为所述终端设备当前播放的第一清晰度的视频流中的画面; 接收所述服务器根据所述PTS和所述第一FOV信息发送的截图图像。 收发机910,用于在处理器900的控制下接收和发送数据。 其中,在图9中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器900代表的一个或多个处理器和存储器920代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。收发机910可以是多个元件,即包括发送机和收发机,提供用于在传输介质上与各种其他装置通信的单元。针对不同的终端,用户接口930还可以是能够外接内接需要设备的接口,连接的设备包括但不限于小键盘、显示器、扬声器、麦克风、操纵杆等。处理器900负责管理总线架构和通常的处理,存储器920可以存储处理器900在执行操作时所使用的数据。 可选的,所述第一FOV信息包括以下至少一项信息: 第一FOV成像的左上角视点对应的流序号、第一FOV成像的左上角视点的坐标信息、第一FOV的视角高、和第一FOV的视角宽;其中,所述第一FOV为所述截图画面对应所述第一清晰度视频流的视场角。 另外,本发明具体实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述的截图方法中的步骤。且能达到相同的技术效果,为避免重复,这里不再赘述。 在本申请所提供的几个实施例中,应该理解到,所揭露方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。 上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述收发方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。 以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
- 一种截图方法、服务器、终端设备及计算机可读存储介质
- 一种服务器连接方法、计算机可读存储介质及终端设备