一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

视频分屏显示方法及计算机可读存储介质与流程

2022-04-30 16:42:48 来源:中国专利 TAG:


1.本发明涉及分屏显示技术领域,尤其涉及一种视频分屏显示方法及计算机可读存储介质。


背景技术:

2.随着技术的发展,大屏显示的效果越来越受到人们的青睐,采用多块显示屏拼接来达到大屏显示的效果是一种经济且可行的方案。
3.然而,在多屏拼接的时候,由于屏幕边框的存在,造成普通视频在拼接缝位置容易出现变形,过度生硬,无法达到好的显示效果。如果通过定制视频以达到好的显示效果,则成本和局限性都太大,无法满足各种情况下的屏幕拼接方式。


技术实现要素:

4.本发明所要解决的技术问题是:提供一种视频分屏显示方法及计算机可读存储介质,可避免分屏显示的画面由于相邻显示屏之间的黑边而导致的画面变形。
5.为了解决上述技术问题,本发明采用的技术方案为:一种视频分屏显示方法,包括:
6.对待播放视频源进行解码,并绑定到纹理对象,得到原始视频纹理;
7.将所述原始视频纹理中对应显示屏拼接位置的像素点剔除,生成新的视频纹理;
8.根据显示屏的数量及排列方式,划分所述新的视频纹理,得到各显示屏对应的视频纹理,并将各划分后的视频纹理分别输出至对应的显示屏。
9.本发明还提出一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上所述的方法。
10.本发明的有益效果在于:在多屏显示同一视频源时,通过去除视频画面中对应显示屏拼接位置的像素点,生成一个新的视频画面,并将新的视频画面根据显示屏个数均分,作为各个显示屏的输入,避免各个分屏显示的画面由于相邻屏幕之间的黑边而导致的画面变形,提高视频的分屏显示效果。
附图说明
11.图1为本发明的一种视频分屏显示方法的流程图;
12.图2为本发明实施例一的方法流程图;
13.图3为本发明实施例一中多个显示屏横向单行排列的示意图;
14.图4为本发明实施例一中原始视频纹理和新的视频纹理的映射示意图;
15.图5为现有技术的多屏拼接显示效果的示意图;
16.图6为本发明实施例一的分屏显示效果的示意图;
17.图7为本发明实施例二的横向镜像显示效果的示意图。
具体实施方式
18.为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图详予说明。
19.请参阅图1,一种视频分屏显示方法,包括:
20.对待播放视频源进行解码,并绑定到纹理对象,得到原始视频纹理;
21.将所述原始视频纹理中对应显示屏拼接位置的像素点剔除,生成新的视频纹理;
22.根据显示屏的数量及排列方式,划分所述新的视频纹理,得到各显示屏对应的视频纹理,并将各划分后的视频纹理分别输出至对应的显示屏。
23.从上述描述可知,本发明的有益效果在于:可避免分屏显示的画面由于相邻显示屏之间的黑边而导致的画面变形。
24.进一步地,所述将所述原始视频纹理中对应显示屏拼接位置的像素点剔除,生成新的视频纹理具体为:
25.获取显示屏边缘的黑边宽度和黑边高度,并根据显示屏的排列方式以及所述黑边宽度和黑边高度,确定所述原始视频纹理中对应显示屏拼接位置的像素点坐标区间,作为需剔除的纹理区间;
26.剔除所述原始视频纹理中所述需剔除的纹理区间内的像素点,并根据所述原始视频纹理中剩余的像素点,绘制新的视频纹理。
27.由上述描述可知,通过确定原始视频纹理中对应显示屏拼接位置的区间,以确定出需要剔除的纹理区间,从而可准确地剔除对应显示屏拼接位置的像素点。
28.进一步地,所述显示屏的排列方式为n
×
m阵列分布;所述需剔除的纹理区间包括x∈[ic 2(i-1)w,ic 2iw],i=1,2,

,n,以及y∈[jd 2(j-1)h,jd 2jh],j=1,2,

,m,其中,(x,y)表示所述原始视频纹理中的像素点坐标,c为每个显示屏对应的纹理宽度,c=(1-2w(n-1))/n,d为每个显示屏对应的纹理高度,d=(1-2h(m-1))/m,w为黑边宽度对应的纹理宽度,h为黑边高度对应的纹理高度。
[0029]
进一步地,所述根据所述原始视频纹理中剩余的像素点,绘制新的视频纹理具体为:
[0030]
根据第一公式和第二公式,分别确定新的视频纹理中各像素点在原始视频纹理中对应的坐标,所述第一公式为xk=(1 2w-2w
×
n)xk 2w
×
floor(xk×
n),所述第二公式为yk=(1 2h-2h
×
m)yk 2h
×
floor(yk×
m),其中,(xk,yk)为新的视频纹理中的一像素点的坐标,(xk,yk)为所述一像素点在原始视频纹理中对应的坐标,floor()为向下取整函数;
[0031]
分别获取原始视频纹理中位于所述对应的坐标的像素点的像素值,作为新的视频纹理中各像素点的像素值,并根据所述新的视频纹理中各像素点的像素值,绘制得到新的视频纹理。
[0032]
由上述描述可知,通过第一公式和第二公式,快速地确定出新旧视频纹理中相应像素点的映射关系,从而可快速地获取到新的视频纹理中各像素点的像素值,进而快速得到新的视频纹理。
[0033]
进一步地,所述将所述对待播放视频源进行解码,并绑定到纹理对象,得到原始视频纹理之后,进一步包括:
[0034]
若要对一显示屏中预设区域的显示内容进行横向镜像显示,则对所述原始视频纹
理中所述预设区域对应的纹理区间进行横向镜像处理,生成横向镜像视频纹理;
[0035]
若要对一显示屏中预设区域的显示内容进行纵向镜像显示,则对所述原始视频纹理中所述预设区域对应的纹理区间进行竖向镜像处理,生成竖向镜像视频纹理。
[0036]
进一步地,所述将所述原始视频纹理中对应显示屏拼接位置的像素点剔除,生成新的视频纹理具体为:
[0037]
将所述横向镜像视频纹理或竖向镜像视频纹理中对应显示屏拼接位置的像素点剔除,生成新的视频纹理。
[0038]
由上述描述可知,通过先进行镜像处理再进行纹理剔除处理,可在不同拼接方式的显示屏上实现良好的镜像显示效果。
[0039]
进一步地,所述对所述原始视频纹理中所述预设区域对应的纹理区间进行横向镜像处理,生成横向镜像视频纹理具体为:
[0040]
根据第三公式,分别确定所述原始视频纹理中所述预设区域内的各像素点对应的横向镜像点,所述第三公式为x
t
=s1 ((2s
1-1)
×2×
max(sign(s
1-(2s
1-1)
×
p-x
t1
),0) (2s
1-1))
×
(x
t1
(2s
1-1)
×
p-s1)/(1-p),y
t
=y
t1
,其中,(x
t
,y
t
)为预设区域内的一像素点的坐标,(x
t1
,y
t1
)为所述一像素点对应的横向镜像点的坐标,s1表示横向镜像位置,当s1=0时,表示镜像屏位于所述一显示屏的左边,当s1=1时,表示镜像屏位于所述一显示屏的右边,p为镜像宽度,p=1/n 2w/n-w,n为横向的显示屏个数,w为显示屏边缘的黑边宽度对应的纹理宽度,max()表示取最大值,sign()为符号函数;
[0041]
根据所述预设区域内各像素点的像素值,分别对所述原始视频纹理中所述各像素点对应的横向镜像点的像素值进行修改,生成横向镜像视频纹理。
[0042]
进一步地,所述对所述原始视频纹理中所述预设区域对应的纹理区间进行竖向镜像处理,生成竖向镜像视频纹理具体为:
[0043]
根据第四公式,分别确定所述原始视频纹理中所述预设区域内的各像素点对应的竖向镜像点,所述第四公式为x
t
=x
t2
,y
t
=s2 ((2s
2-1)
×2×
max(sign(s
2-(2s
2-1)
×
q-y
t2
),0) (2s
2-1))
×
(y
t2
(2s
2-1)
×
q-s2)/(1-q),其中,(x
t
,y
t
)为预设区域内的一像素点的坐标,(x
t2
,y
t2
)为所述一像素点对应的竖向镜像点的坐标,s2表示竖向镜像位置,当s2=0时,表示镜像屏位于所述一显示屏的上方,当s2=1时,表示镜像屏位于所述一显示屏的下方,q为镜像高度,q=1/m 2h/m-h,m为竖向的显示屏个数,h为显示屏边缘的黑边高度对应的纹理高度,max()表示取最大值,sign()为符号函数;
[0044]
根据所述预设区域内各像素点的像素值,分别对所述原始视频纹理中所述各像素点对应的竖向镜像点的像素值进行修改,生成竖向镜像视频纹理。
[0045]
由上述描述可知,通过第三公式和第四公式,可快速地确定要镜像处理的区域内的像素点对应的镜像像素点,从而快速实现镜像处理。
[0046]
本发明还提出一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上所述的方法。
[0047]
实施例一
[0048]
请参照图2-6,本发明的实施例一为:一种视频分屏显示方法,可应用于多块显示屏拼接显示的场景,如图2所示,包括如下步骤:
[0049]
s1:对待播放视频源进行解码,并绑定到纹理对象,得到原始视频纹理。
[0050]
具体地,将待播放视频源通过android播放器解码,并绑定到opengl纹理对象,得到原始视频纹理。
[0051]
s2:获取显示屏边缘的黑边宽度和黑边高度,并根据显示屏的排列方式以及所述黑边宽度和黑边高度,确定所述原始视频纹理中对应显示屏拼接位置的像素点坐标区间,作为需剔除的纹理区间。
[0052]
具体地,获取屏幕边缘的黑边宽度和黑边高度,并转换为opengl坐标系的值,假设为w和h,作为后续剔除纹理像素的宽度和高度,然后结合显示屏的排列方式,计算需要剔除纹理的区间;在后续的显示过程中,需剔除纹理的区间内的像素不再显示。进一步地,若显示屏为横向分屏,则仅需获取黑边宽度;若显示屏为竖向分屏,则仅需获取黑边高度;当显示屏为网格分屏时,才需同时获取黑边宽度和黑边高度。
[0053]
本实施例中,以左上角为原点,向右方向为x轴正反向,向下方向为y轴正方向,建立opengl坐标系,并且,在opengl坐标系中,视频纹理的x、y的范围均为[0,1]。
[0054]
当多个显示屏横向单行排列时,即显示屏的排列方式为n
×
1,如图3所示(图3中n=3),各个显示屏从左到右排列,第一个显示屏的左侧边缘和最后一个显示屏右侧边缘不需要进行纹理剔除,相邻两个显示屏之间的黑边需要进行纹理剔除,此时,每个显示屏显示的纹理宽度c=(1-2w(n-1))/n,w为黑边宽度对应的纹理宽度,需要剔除的纹理区间包括x∈[c,c 2w]、[c 2w c,c 2w c 2w]、...、[nc 2(n-1)w,nc 2nw],即x∈[ic 2(i-1)w,ic 2iw],i=1,2,

,n。
[0055]
当多个显示屏竖向单列排列时,即显示屏的排列方式为1
×
m,各个显示屏从上到下排列,第一个显示屏的上方边缘和最后一个显示屏下方边缘不需要进行纹理剔除,相邻两个显示屏之间的黑边需要进行纹理剔除,此时,每个显示屏显示的纹理高度d=(1-2h(m-1))/m,h为黑边高度对应的纹理高度,需要剔除的纹理区间包括y∈[d,d 2h]、[d 2h d,d 2h d 2h]、...、[md 2(m-1)h,md 2mh],即y∈[jd 2(j-1)h,jd 2jh],j=1,2,

,m。
[0056]
当多个显示屏网格排列时,即显示屏的排列方式为n
×
m阵列分布,需要剔除的纹理区间包括x∈[ic 2(i-1)w,ic 2iw],i=1,2,

,n,以及y∈[jd 2(j-1)h,jd 2jh],j=1,2,

,m,其中,(x,y)表示所述原始视频纹理中的像素点坐标。
[0057]
s3:剔除所述原始视频纹理中所述需剔除的纹理区间内的像素点,并根据所述原始视频纹理中剩余的像素点,绘制新的视频纹理。
[0058]
即获取原始视频纹理中各个像素点的坐标,将需要剔除的纹理区间内的像素点剔除后,将剩余的像素点绘制到新的纹理区间中,得到新的视频纹理。
[0059]
具体地,先分别确定新的视频纹理中各像素点在原始视频纹理中对应的坐标。例如,假设一像素点在原始视频纹理中对应的坐标为(xk,yk),其在新的视频纹理中的坐标为(xk,yk)。
[0060]
当多个显示屏横向单行排列时,即显示屏的排列方式为n
×
1时,由于在新的视频纹理中,每个显示屏对应的纹理宽度为1/n,因此需要将原始视频纹理中剔除掉拼接处像素后,对应的纹理宽度为c=(1-2w(n-1))/n的显示屏中的纹理映射到对应的纹理宽度为1/n的显示屏中,如图4所示,即xk=c/(1/n)
×
xk 2w
×
floor(xk/(1.0/n))=((1-2w(n-1))/n)
×n×
xk 2w
×
floor(xk×
n),其中,floor()为向下取整函数。因此,(xk,yk)与(xk,yk)的映射公式为:
[0061]
xk=(1 2w-2wn)xk 2w
×
floor(xk×
n),yk=yk。
[0062]
同理,当多个显示屏竖向单列排列时,即显示屏的排列方式为1
×
m时,(xk,yk)与(xk,yk)的映射公式为:
[0063]
xk=xk,yk=(1 2h-2hm)yk 2h
×
floor(yk×
m)。
[0064]
当多个显示屏网格排列时,即显示屏的排列方式为n
×
m阵列分布时,(xk,yk)与(xk,yk)的映射公式为:
[0065]
xk=(1 2w-2wn)xk 2w
×
floor(xk×
n),
[0066]
yk=(1 2h-2hm)yk 2h
×
floor(yk×
m)。
[0067]
确定新的视频纹理中各像素点在原始视频纹理中对应的坐标后,分别获取原始视频纹理中位于对应的坐标的像素点的像素值,作为新的视频纹理中各像素点的像素值,并根据新的视频纹理中各像素点的像素值,绘制得到新的视频纹理。即获取坐标为(xk,yk)的原像素点的rgb值,作为坐标为(xk,yk)的新视频纹理位置的rgb值,依次重新绘制各像素点,得到新的视频纹理。
[0068]
s4:根据显示屏的数量及排列方式,划分所述新的视频纹理,得到各显示屏对应的视频纹理,并将各划分后的视频纹理分别输出至对应的显示屏。
[0069]
具体地,当多个显示屏横向单行排列时,即显示屏的排列方式为n
×
1时,则将新的视频纹理通过分屏器均分n个输出,作为n个显示屏的输入。
[0070]
当多个显示屏竖向单列排列时,即显示屏的排列方式为1
×
m时,则将新的视频纹理通过分屏器均分m个输出,作为m个显示屏的输入。
[0071]
当多个显示屏网格排列时,即显示屏的排列方式为n
×
m阵列分布时,则将新的视频纹理通过分屏器均分n
×
m个输出,作为n
×
m个显示屏的输入。
[0072]
例如,现有技术中的多屏拼接显示的效果如图5所示,通过本实施例剔除拼接位置处的像素后的显示效果如图6所示,可以看出,本实施例可以解决由于相邻屏幕之间的黑边而导致的画面变形的问题,可提高视频的分屏显示效果。
[0073]
本实施例可实现普通视频在多块拼接的显示屏上的分屏显示,无需定制视频即可达到良好的显示效果,成本低,且可满足各种情况下的屏幕拼接方式。
[0074]
实施例二
[0075]
请参照图7,本实施例是实施例一的进一步拓展,相同之处不再累述,区别在于,步骤s1之后,还对原始视频纹理进行镜像处理,得到横向镜像视频纹理或竖向镜像视频纹理,然后在步骤s2-s3中,对横向镜像视频纹理或竖向镜像视频纹理进行纹理剔除处理,得到新的视频纹理。
[0076]
本实施例中,对于镜像处理,具体如下所示。
[0077]
当多个显示屏横向单行排列时,即显示屏的排列方式为n
×
1时,若要对一显示屏中预设区域的显示内容进行横向镜像显示,则对原始视频纹理中所述预设区域对应的纹理区间进行横向镜像处理,生成横向镜像视频纹理。
[0078]
例如,假设要横向镜像显示的预设区域内的一像素点的坐标为(x
t
,y
t
),其对应的横向镜像点的坐标为(x
t1
,y
t1
);s1表示横向镜像位置,当s1=0时,表示镜像屏位于所述一显示屏的左边,即横向镜像点位于所述一像素点的左边,当s1=1时,表示镜像屏位于所述一显示屏的右边,即横向镜像点位于所述一像素点的右边;镜像宽度p=1/n 2w/n-w,w为显示
屏边缘的黑边宽度对应的纹理宽度。
[0079]
此时,当s1=0时,(x
t
,y
t
)与(x
t1
,y
t1
)的映射公式为:
[0080]
x
t
=abs(x
t1-p)/(1-p)或x
t1
=(-2
×
max(sign(p-x
t1
),0) 1)
×
(x
t1-p)/(1-p),y
t
=y
t1

[0081]
其中,abs()用于求整数的绝对值,max()表示取最大值,sign()为符号函数。
[0082]
当s1=1时,(x
t1
,y
t1
)与(x
t
,y
t
)的映射公式为:
[0083]
x
t
=1 (2
×
max(sign((1-p)-x
t1
),0)-1)
×
(x
t1
p-1))/(1-p),y
t
=y
t1

[0084]
带入参数s,合并上述公式可得:
[0085]
第三公式:x
t
=s1 ((2s
1-1)
×2×
max(sign(s
1-(2s
1-1)
×
p-x
t1
),0) (2s
1-1))
×
(x
t1
(2s
1-1)
×
p-s1)/(1-p),y
t
=y
t1

[0086]
在原始视频纹理中,将坐标为(x
t1
,y
t1
)的像素点的rgb值修改为坐标为(x
t
,y
t
)的像素点的rgb值,即可得到横向镜像视频纹理,如图7所示。
[0087]
当多个显示屏竖向单列排列时,即显示屏的排列方式为1
×
m时,若要对一显示屏中预设区域的显示内容进行纵向镜像显示,则对原始视频纹理中所述预设区域对应的纹理区间进行竖向镜像处理,生成竖向镜像视频纹理。
[0088]
例如,假设要竖向镜像显示的预设区域内的一像素点的坐标为(x
t
,y
t
),其对应的竖向镜像点的坐标为(x
t2
,y
t2
);s2表示竖向镜像位置,当s2=0时,表示镜像屏位于所述一显示屏的上方,即竖向镜像点位于所述一像素点的上方,当s2=1时,表示镜像屏位于所述一显示屏的下方,即竖向镜像点位于所述一像素点的下方;镜像高度q=1/m 2h/m-h,h为显示屏边缘的黑边高度对应的纹理高度。
[0089]
此时,(x
t
,y
t
)与(x
t2
,y
t2
)的映射公式为:
[0090]
第四公式:x
t
=x
t2
,y
t
=s2 ((2s
2-1)
×2×
max(sign(s
2-(2s
2-1)
×
q-y
t2
),0) (2s
2-1))
×
(y
t2
(2s
2-1)
×
q-s2)/(1-q)。
[0091]
在原始视频纹理中,将坐标为(x
t2
,y
t2
)的像素点的rgb值修改为坐标为(x
t
,y
t
)的像素点的rgb值,即可得到竖向镜像视频纹理。
[0092]
当多个显示屏网格排列时,即显示屏的排列方式为n
×
m阵列分布时,若要对一显示屏中预设区域的显示内容进行横向镜像显示或纵向镜像显示,则对原始视频纹理中预设区域对应的纹理区间进行横向镜像显示或竖向镜像处理,生成横向镜像视频纹理或竖向镜像视频纹理,再通过通过分屏器均分n
×
m个输出,作为n
×
m个显示屏的输入。具体实现步骤可参照上述描述。
[0093]
进一步地,若要同时对一显示屏中预设区域的显示内容进行横向镜像显示和纵向镜像显示,则可分别根据上述第三公式和第四公式,确定预设区域内的像素点(x
t
,y
t
)对应的横向镜像点(x
t1
,y
t1
)和竖向镜像点(x
t2
,y
t2
),然后在原始视频纹理中,将坐标为(x
t1
,y
t1
)的像素点的rgb值和坐标为(x
t2
,y
t2
)的像素点的rgb值修改为坐标为(x
t
,y
t
)的像素点的rgb值,得到网格镜像视频纹理。
[0094]
后续在步骤s2-s3中,对网格镜像视频纹理进行纹理剔除处理,得到新的视频纹理。
[0095]
本实施例可在不同拼接方式的显示屏上实现镜像显示效果。
[0096]
实施例三
[0097]
本实施例是对应上述实施例的一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的视频分屏显示方法实施例中的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0098]
综上所述,本发明提供的一种视频分屏显示方法及计算机可读存储介质,在多屏显示同一视频源时,通过去除视频画面中对应显示屏拼接位置的像素点,生成一个新的视频画面,并将新的视频画面根据显示屏个数均分,作为各个显示屏的输入,避免各个分屏显示的画面由于相邻屏幕之间的黑边而导致的画面变形,提高视频的分屏显示效果;同时,可在不同拼接方式的显示屏上实现镜像显示效果。
[0099]
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献