本发明涉及图像处理,具体而言,涉及一种弹幕渲染方法、装置、电子设备及存储介质。
背景技术:
1、弹幕是指用户通过视频应用程序在观看视频过程中发送的评论并且以动态的方式显示。用户可以看到其他人发送的弹幕并进行交流。对于安装在pc端的视频应用程序,通常是将dx11(directx11)着色器内嵌在视频播放器中来对视频流和弹幕进行同时渲染,但是这种方式的实现难度大且兼容性差,常常会将弹幕编码为乱码的字符,出现弹幕乱码的情况。
技术实现思路
1、有鉴于此,本发明的目的在于提供一种弹幕渲染方法、装置、电子设备及存储介质。
2、为了实现上述目的,本发明采用的技术方案如下:
3、第一方面,本发明提供一种弹幕渲染方法,所述方法包括:
4、根据获得的多个弹幕内容及其色彩值进行绘制,得到多个纹理图像;所述纹理图像包括至少一个所述弹幕内容;
5、根据当前时刻确定每个所述弹幕内容在视频画面中的当前显示位置;
6、根据每个所述弹幕内容的当前显示位置及其所在的纹理图像,确定所述视频画面中每个像素点的当前色彩值;
7、利用像素着色器根据每个所述像素点的当前色彩值,对每个所述弹幕内容进行渲染得到弹幕图像。
8、在可选的实施方式中,所述根据每个所述弹幕内容的当前显示位置及其所在的纹理图像,确定所述视频画面中每个像素点的当前色彩值的步骤,包括:
9、根据每个所述弹幕内容的当前显示位置,确定每个所述弹幕内容的当前显示范围;
10、对于每个所述像素点,判断是否存在与所述像素点位置匹配的目标弹幕内容,所述目标弹幕内容的当前显示范围包含所述像素点;
11、若不存在,则将预设色彩值作为所述像素点的当前色彩值;
12、若存在,则根据每个所述目标弹幕内容所在的目标纹理图像,确定所述像素点的当前色彩值;
13、遍历每个所述像素点,得到每个所述像素点的当前色彩值。
14、在可选的实施方式中,所述纹理图像中的全部弹幕内容横向排列,所述纹理图像的高度等于所述弹幕内容的显示高度;所述纹理图像包括多个纹理像素点的色彩值;
15、所述根据每个所述目标弹幕内容所在的目标纹理图像,确定所述像素点的当前色彩值的步骤,包括:
16、对于每个所述目标纹理图像,在所述目标纹理图像中确定所述目标弹幕内容所在的目标区域,并从所述目标区域中获取与所述像素点对应的目标纹理像素点,得到每个所述目标纹理像素点;
17、将全部目标纹理像素点的色彩值进行混合,得到所述像素点的当前色彩值。
18、在可选的实施方式中,所述方法还包括:
19、根据所述视频画面中目标对象的当前位置,绘制当前蒙层缩略图像;所述目标对象表示防止弹幕遮挡的对象,所述当前蒙层缩略图像包括透明区域和不透明区域,所述当前蒙层缩略图像的透明区域表示所述目标对象;
20、利用蒙层着色器根据所述视频画面的尺寸,对所述当前蒙层缩略图像进行放大操作得到当前蒙层图像;所述当前蒙层图像中的透明区域与所述目标对象的尺寸匹配,所述当前蒙层图像中的透明区域与不透明区域的接壤处呈半透明状态;
21、将所述当前蒙层图像与所述弹幕图像进行融合得到弹幕蒙层图像;所述弹幕蒙层图像中位于不透明区域的弹幕内容显示且位于透明区域的弹幕内容不显示。
22、在可选的实施方式中,所述方法还包括:
23、获取弹幕控件的初始尺寸;所述弹幕控件用于控制所述弹幕图像中所有弹幕内容的旋转角度,所述初始尺寸等于所述视频画面的尺寸;
24、根据所述弹幕控件的初始尺寸,计算临界角度;所述临界角度表示所述弹幕控件对应的绘制图像的尺寸为最小时所述弹幕控件的旋转角度;
25、根据目标角度、所述临界角度和所述弹幕控件的初始尺寸,计算所述弹幕控件的目标伸长量;
26、根据所述弹幕控件的初始尺寸和目标伸长量,得到所述弹幕控件的目标尺寸,并按照所述目标角度和所述弹幕控件的目标尺寸,生成所述弹幕控件对应的目标绘制图像;
27、将所述目标绘制图像与所述弹幕图像进行融合得到弹幕旋转图像,所述弹幕旋转图像中所有弹幕内容的旋转角度为所述目标角度。
28、在可选的实施方式中,所述弹幕控件的初始尺寸包括初始宽度和初始高度;
29、所述根据所述弹幕控件的初始尺寸,计算临界角度的步骤,包括:
30、按照预设角度公式、所述初始宽度和所述初始高度,计算临界角度;
31、所述预设角度公式如下:
32、
33、其中,w表示初始宽度;h表示初始高度;θ0表示临界角度。
34、在可选的实施方式中,所述弹幕控件的初始尺寸包括初始宽度和初始高度,所述目标伸长量包括宽度伸长量和高度伸长量;
35、所述根据目标角度、所述临界角度和所述弹幕控件的初始尺寸,计算所述弹幕控件的目标伸长量的步骤,包括:
36、在所述目标角度小于所述临界角度的情况下,按照第一预设公式、所述目标角度、所述初始宽度和所述初始高度,计算所述弹幕控件的宽度伸长量和高度伸长量;
37、所述第一预设公式如下:
38、
39、wm=-γ+γcosθ,
40、hm=γsinθ;
41、其中,所述θ表示目标角度;w表示初始宽度;h表示初始高度;α表示第一中间参数;β表示第二中间参数,γ表示第三中间参数;wm表示宽度伸长量;hm表示高度伸长量;
42、在所述目标角度大于或者等于所述临界角度的情况下,按照第二预设公式、所述目标角度、所述初始宽度和所述初始高度,计算所述弹幕控件的宽度伸长量和高度伸长量;
43、所述第二预设公式如下:
44、
45、wm=0cosθ,
46、
47、其中,所述θ表示目标角度;w表示初始宽度;h表示初始高度;x0表示第四中间参数;y0表示第五中间参数;x1表示第六中间参数;x2表示第七中间参数;wm表示宽度伸长量;hm表示高度伸长量。
48、第二方面,本发明提供一种弹幕渲染装置,所述装置包括:
49、绘制模块,用于根据获得的多个弹幕内容及其色彩值进行绘制,得到多个纹理图像;所述纹理图像包括至少一个所述弹幕内容;
50、确定模块,用于根据当前时刻确定每个所述弹幕内容在视频画面中的当前显示位置;
51、根据每个所述弹幕内容的当前显示位置及其所在的纹理图像,确定所述视频画面中每个像素点的当前色彩值;
52、渲染模块,用于利用像素着色器根据每个所述像素点的当前色彩值,对每个所述弹幕内容进行渲染得到弹幕图像。
53、第三方面,本发明提供一种电子设备,包括处理器和存储器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时,实现前述实施方式中任一项所述的方法。
54、第四方面,本发明提供一种存储介质,所述存储介质上存储有计算机程序,该计算机程序被处理器执行时,实现前述实施方式中任一项所述的方法。
55、本发明提供的弹幕渲染方法、装置、电子设备及存储介质,根据获得的多个弹幕内容及其色彩值进行绘制,得到多个纹理图像且纹理图像包括至少一个弹幕内容;然后根据当前时刻确定每个弹幕内容在视频画面中的当前显示位置;并根据每个弹幕内容的当前显示位置及其所在的纹理图像,确定视频画面中每个像素点的当前色彩值;最后利用像素着色器根据每个像素点的当前色彩值,对每个弹幕内容进行渲染得到弹幕图像。本发明通过将弹幕绘制为纹理图像以进行弹幕渲染,有效地避免了弹幕乱码,提升了弹幕的兼容性,并通过软件绘制纹理图像和硬件渲染弹幕的方式,降低了gpu资源的占用。从而提高了弹幕的兼容性以及渲染性能,提升了弹幕显示效果。
56、为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。