直播间图像渲染方法、装置、计算机设备及存储介质与流程

文档序号:25367238发布日期:2021-06-08 16:18阅读:50来源:国知局
直播间图像渲染方法、装置、计算机设备及存储介质与流程

1.本发明实施例涉及直播间领域,尤其涉及一种直播间图像渲染方法、装置、计算机设备及存储介质。


背景技术:

2.在直播应用中,主播端将视频流发送到推流服务器,推流服务器将视频流推送到观众端,以实现在各观众端根据视频流显示主播端采集的视频。
3.在开发的过程中,开发人员会将开发的用户界面图像数据,放在服务端进行渲染,并合并到视频流中,转推送给观众端。
4.此时主播端只能通过接收服务器端推送的视频流,才能浏览到用户界面的图像数据的显示效果,降低开发效率。同时,在需要用户界面图像数据更新时,主播端需要频繁传输布局文件和业务数据给服务端,占用大量的带宽传输资源。


技术实现要素:

5.本发明实施例提供一种直播间图像渲染方法、装置、计算机设备及存储介质,可以提高用户界面的开发效率,减少响应用户界面更新的传输资源。
6.第一方面,本发明实施例提供了一种直播间图像渲染方法,包括:
7.获取渲染图像标识;
8.根据所述渲染图像标识,查询与所述渲染图像标识匹配的目标渲染数据;
9.根据所述目标渲染数据生成渲染图像,并在直播间的用户界面中显示,所述渲染图像用于添加到所述直播间对应的视频流中,并在观众端进行显示。
10.第二方面,本发明实施例还提供了一种直播间图像渲染装置,包括:
11.渲染图像标识获取模块,用于获取渲染图像标识;
12.渲染数据查询模块,用于根据所述渲染图像标识,查询与所述渲染图像标识匹配的目标渲染数据;
13.渲染图像显示模块,用于根据所述目标渲染数据生成渲染图像,并在直播间的用户界面中显示,所述渲染图像用于添加到所述直播间对应的视频流中,并在观众端进行显示。
14.第三方面,本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序所述处理器执行所述程序时实现如本发明实施例中任一所述的直播间图像渲染方法。
15.第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例中任一所述的直播间图像渲染方法。
16.本发明实施例通过在主播端获取渲染图像标识,并根据渲染图像标识,查询匹配的目标渲染数据,以及根据目标渲染数据生成第一渲染图像,在直播间用户界面中进行显示,同时,第一渲染图像还用于与添加到视频流中的第二渲染图像对齐,实现在主播端直接
显示渲染图像在视频流中的渲染效果,解决了现有技术中主播端接收到推流服务器渲染的图像才能显示用户界面图像,导致开发效率低以及传输资源占用多的问题,可以省略主播端获取推流服务器提供的渲染图像与视频流的叠加图像的步骤,主播端直接在用户界面中显示渲染图像,以使开发人员快速获取渲染图像在用户界面的显示效果,从而,提高开发效率,同时减少主播端和推流服务器之间针对渲染图像的传输次数和传输数据量,减少占用传输资源。
附图说明
17.图1是本发明实施例一中的一种直播间图像渲染方法的流程图;
18.图2a是本发明实施例二中的一种直播间图像渲染方法的流程图;
19.图2b是本发明实施例二中的一种直播间用户界面的示意图;
20.图3a是本发明实施例所适用的一种应用场景的流程图;
21.图3b是本发明实施例所适用的一种应用场景的流程图;
22.图4是本发明实施例四中的一种直播间图像渲染装置的结构示意图;
23.图5是本发明实施例五中的一种计算机设备的结构示意图。
具体实施方式
24.下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
25.实施例一
26.图1为本发明实施例一中的一种直播间图像渲染方法的流程图,本实施例可适用于在主播端的直播间的用户界面中显示渲染图像的情况,该方法可以由本发明实施例提供的直播间图像渲染装置来执行,该装置可采用软件和/或硬件的方式实现,并一般可集成计算机设备中,具体是主播用户使用的客户端。如图1所示,本实施例的方法具体包括:
27.s110,获取渲染图像标识。
28.渲染图像标识用于查询到匹配的目标渲染数据,以生成对应的渲染图像。不同渲染图像的渲染图像标识不同。渲染图像标识可以理解为针对不同应用场景,或不同业务,进行开发形成的渲染图像的标识。
29.通常,直播间存在多种应用场景,可以针对每一种应用场景,分别对应配置渲染图像,并针对每个渲染图像配置渲染图像标识以区分。示例性的,第一应用场景为多个主播用户连麦的应用场景,可以配置连麦特效的渲染图像,对应配置渲染图像标识a;第二应用场景为多个主播用户竞争(play kill,pk)的应用场景,可以配置竞争特效的渲染图像,对应配置渲染图像标识b。
30.s120,根据所述渲染图像标识,查询与所述渲染图像标识匹配的目标渲染数据。
31.目标渲染数据用于进行渲染,生成第一渲染图像。目标渲染数据与渲染图像标识对应。不同渲染图像标识对应不同的目标渲染数据,可以预先建立渲染图像标识与渲染数据之间的对应关系。根据渲染图像标识,渲染图像标识与渲染数据之间的对应关系,查询渲染图像标识匹配的目标渲染数据。
32.s130,根据所述目标渲染数据生成第一渲染图像,并在直播间的用户界面中显示,以使所述第一渲染图像对齐第二渲染图像,所述第二渲染图像为添加到所述直播间对应的视频流中的渲染图像。
33.第一渲染图像用于在主播端的直播间用户界面进行显示,第二渲染图像用于添加到直播间对应的视频流中。第一渲染图像与第二渲染图像对齐,可以理解为:在主播端的直播间用户界面中显示的第一渲染图像的显示效果,与在推流服务器或观众端的直播间播放的视频流中显示的第二渲染图像的显示效果相同。第一渲染图像对齐第二渲染图像可以包括下述至少一项:第一渲染图像的内容和第二渲染图像的内容相同;第一渲染图像的分辨率和所述第二渲染图像的分辨率相同;以及第一渲染图像在直播间播放的视频图像的布局样式和第二图像在直播间播放的视频图像的布局样式相同等。
34.现有主播端显示渲染图像的方式是:接收推流服务器将视频流与渲染图像进行合成得到的视频流,并进行播放,以在主播端的直播间用户界面中显示渲染图像,这种方式在主播端无法实时预览布局的结果,需要经过服务端解析渲染流程才能看到效果。而本发明实施例通过直接生成第一渲染图像并在直播间的用户界面进行显示,以使第一渲染图像对齐在添加到视频流的第二渲染图像,可以实现主播端直接显示渲染图像添加到视频流后的显示效果,从而,开发人员在开发各应用场景的渲染图像时,可以直接从主播端浏览到各渲染图像在直播间用户界面的显示效果,省略等待服务器进行对视频流和渲染图像进行合成渲染,并传输的时间,加快主播端显示渲染图像的速度,从而,开发人员可以针对显示效果进行调整,提高开发效率。
35.现有的服务器渲染通常是:主播端将本地布局代码转换成布局文本,将布局文本和业务数据打包,传输到服务器;服务器解析布局文本,根据布局文本和业务数据进行渲染,将渲染出来的画面与视频流合成传输到观众端,服务器将合成的视频流传输到主播端,主播端在接收到合成的视频流之后,对合成的视频流显示,开发人员才能在主播端中浏览到渲染图像在直播间中的显示效果;该渲染过程中服务器与主播端之间需要传输布局文本、业务数据和合成后的视频流,占用带宽传输资源。
36.本发明实施例通过在主播端进行渲染,可以无需传输布局文本、业务数据和合成后的视频流,减少带宽传输资源的占用,以提供给其他传输需求的数据,合理配置带宽传输资源,同时减少贷款传输资源的浪费,同时带宽传输资源可以提供给传输视频流,提高视频流的传输稳定性和传输效率,从而,提高直播间的直播视频流的直播效果,提高用户体验。
37.本发明实施例通过在主播端获取渲染图像标识,并根据渲染图像标识,查询匹配的目标渲染数据,以及根据目标渲染数据生成第一渲染图像,在直播间用户界面中进行显示,同时,第一渲染图像还用于与添加到视频流中的第二渲染图像对齐,实现在主播端直接显示渲染图像在视频流中的渲染效果,解决了现有技术中主播端接收到推流服务器渲染的图像才能显示用户界面图像,导致开发效率低以及传输资源占用多的问题,可以省略主播端获取推流服务器提供的渲染图像与视频流的叠加图像的步骤,主播端直接在用户界面中显示渲染图像,以使开发人员快速获取渲染图像在用户界面的显示效果,从而,提高开发效率,同时减少主播端和推流服务器之间针对渲染图像的传输次数和传输数据量,减少占用传输资源。
38.实施例二
39.图2a为本发明实施例二中的一种直播间图像渲染方法的流程图,本实施例以上述实施例为基础进行具体化。本实施例的方法具体包括:
40.s210,获取渲染图像标识。
41.本发明实施例中未详细介绍的描述可以参考上述实施例的描述。
42.s220,根据所述渲染图像标识,查询与所述渲染图像标识匹配的目标渲染数据。
43.s230,根据所述目标渲染数据生成渲染图像,并在直播间的用户界面中显示,所述渲染图像用于添加到所述直播间对应的视频流中,并在观众端进行显示。
44.s240,接收直播服务器发送的渲染更新数据。
45.直播服务器用于与主播端进行交互,并为客户端提供直播服务,例如发送直播业务数据。渲染更新数据用于对第一渲染图像进行更新。渲染更新数据可以是指直播服务器指示主播端对第一渲染图像进行更新的数据。示例性的,渲染更新数据可以是指直播服务器针对该直播间获取的用户行为数据,用户行为数据可以包括该直播间关联的主播用户的行为数据和/或该直播间关联的观众用户的行为数据。渲染更新数据可以用于调整渲染图像的颜色、对比度、饱和度、亮度、阴影效果、图像形状、图像尺寸、布局位置和包括的文本的样式等等。
46.s250,根据所述渲染更新数据对所述第一渲染图像进行更新。
47.第一渲染图像可以实时进行更新。主播端接收到渲染更新数据可以对第一渲染图像进行更新。相应的,推流服务器生成的第二渲染图像同步进行更新,仍使更新后的第一渲染图像对齐更新后的第二渲染图像。在一个例子中,渲染更新数据为背景颜色更新的数据,例如,背景颜色更新为黄色。第一渲染图像的背景颜色由任意一种颜色更新为黄色;相应的,第二渲染图像的背景颜色由任意一种颜色更新为黄色。
48.可选的,所述第一渲染图像包括直播互动状态图像,所述渲染更新数据包括实时互动数据;所述根据所述渲染更新数据对所述第一渲染图像进行更新,包括:根据所述实时互动数据,确定至少两个直播连麦的主播用户的实时分数比值;根据所述实时分数比值,对所述直播互动状态图像中分数比值进度区域进行更新。
49.直播互动状态图像用于展示至少两个主播用户之间的互动状态。示例性的,直播互动状态图像为两个主播用户的pk状态图像。实时互动数据用于确定第一渲染图的更新内容,可以包括至少两个主播用户之间的互动行为数据和/或主播用户与观众用户之间的互动行为数据等。示例性的,实时互动数据为两个主播用户之间的资源比较结果,可以用分数比值表示。直播连麦的主播用户可以是指在直播过程中存在互动行为的主播用户,存在互动行为的主播用户具体可以是指通过麦克风和/或摄像头等采集工具进行实时的视频互动的主播用户。实时分数比值用于表示多个主播用户获取的资源的比较结果。资源可以包括观众用户赠送的礼物的数量和金额等。分数比值进度区域用于实时展示实时分数比值。实时分数比值会实时根据直播服务器统计的主播用户的资源进行更新。在一个具体的例子中,分数比值进度区域可以通过不同长度的矩形来表示不同主播用户对应的分数。如图2b所示,直播间的用户界面上播放有直播视频,在主播端直接实时显示采集的直播视频,在观众端显示视频流。分数比值进度区域201,显示了主播用户a和主播用户b之间的实时分数比值,其中,矩形202表示主播用户a的实时分数;矩形203表示主播用户b的实时分数。矩形202的长度和矩形203的长度的比值表示实时分数比值,即通过矩形202的长度和矩形203的长
度,可以直观的了解到主播用户a和主播用户b之间的实时分数比值。
50.通过在直播互动的应用场景中,获取直播服务器提供的实时互动数据作为渲染更新数据,更新第一渲染图像,以对分数比值进度区域表示实时分数比值进行实时更新,可以快速在主播端更新第一渲染图像,提高第一渲染图像的更新效率,提高用户体验,同时省略通过推流服务器发送获取更新后的第一渲染图像的操作,提高第一渲染图像的更新实时性,同时,减少主播端与推流服务器之间的带宽传输资源。
51.s260,在所述用户界面中显示更新后的第一渲染图像。
52.用户界面中显示更新后的第一渲染图像,可以在用户界面中实时根据渲染更新数据,对第一渲染图像进行更新显示。现有的用户界面更新都需要依赖客户端通知推流服务器,在网络差的情况下更新可能会延迟,同时频繁更新通信会浪费客户端与推流服务器之间的带宽传输资源。
53.可选的,所述获取渲染图像标识,包括:采集直播视频;在直播间的用户界面中实时显示所述直播视频,所述第一渲染图像用于与所述直播视频进行叠加显示;接收直播服务器发送的渲染图像标识。
54.直播视频用于在直播间进行播放。主播端将直播视频推送到推流服务器,并由推流服务器推送到各观众端。直播视频通常以视频流的形式进行传输。直播间对应的视频流,为直播视频对应的视频流。主播端采集直播视频,并在主播端的直播间用户界面中进行实时显示。用户界面中配置有直播区域,在直播区域中显示直播视频。第一渲染图像用于与直播视频进行叠加显示,第一渲染图像同样在直播区域中进行显示。例如,第一渲染图像覆盖于直播视频上显示。需要说明的是,第一渲染图像与直播视频叠加显示的显示效果,与第二渲染图像添加到该直播视频对应的视频流中的显示效果相同。渲染图像标识为直播服务器发送的数据。直播服务器可以在确定主播端满足触发条件下,向主播端发送渲染图像标识。示例性的,主播端满足触发条件可以包括在直播服务器接收到主播端发送的渲染图像标识的获取请求时,确定主播端满足触发条件;在直播服务器根据统计得到的主播端用户行为数据,确定主播端满足触发条件,例如,根据主播端用户行为数据,确定主播端对应的观看人数达到设定阈值,确定主播端满足触发条件;又如,根据主播端用户行为数据,确定主播端对应的赠送礼物价值达到设定金额,确定主播端满足触发条件等等。直播服务器控制主播端显示不同应用场景对应的图像。直播服务器可以统计主播端的用户行为数据和/或观众端的用户行为数据,以及向主播端和观众端提供直播业务数据。直播服务器可以向主播端下发渲染图像标识,或响应主播端的请求,反馈渲染图像标识。
55.通过在主播端采集直播视频并实时播放直播视频时,将第一渲染图像与直播视频进行叠加显示,可以准确对齐第二渲染图像添加到视频流中的显示效果,在主播端准确直接显示渲染图像与视频流的合成显示效果,提高渲染图像的显示效率,同时由直播服务器直接发送渲染图像标识,以控制主播端显示第一渲染图像,避免直播服务器传输更多的数据,控制主播端显示第一渲染图像,可以减少直播服务器与主播端之间的带宽传输资源占用,同时加快主播端显示第一渲染图像的速度。
56.可选的,在根据所述目标渲染数据生成渲染图像,并在用户界面中显示之后,还包括:将所述直播视频中各图像帧分别转换为视频流,并发送给推流服务器,以使所述推流服务器将所述第二渲染图像添加到各所述视频流中,并发送给观众端进行显示。
57.直播视频是通过视频流的方式进行传输。直播视频实际为一帧一帧的图像帧,播放直播视频实际是按照顺序播放各图像帧。将图像帧转换为视频流,可以是对该图像帧进行打包,形成数据包。将直播视频中各图像帧分别转换为视频流,实际是将实时采集的图像帧转换为视频流。实时采集直播视频,将当前阶段采集的最新的至少一个图像帧打包形成的数据包传输给推流服务器,持续采集直播视频,从而持续生成数据包,并持续将数据包传输给推流服务器,其中,每个数据包可以视为一个视频流数据。可以将一帧图像帧打包成一个数据包,也可以将播放时间上连续的多个图像帧打包成一个数据包。推流服务器用于接收主播端发送的视频流,并将视频流转推给主播端所在直播间中的观众端。推流服务器还用于生成第二渲染图像,并将第二渲染图像添加到相应的视频流中,以在观众端显示直播视频和第二渲染图像的叠加结果,同时该叠加结果与第一渲染图像和直播视频的叠加结果相同。其中,在视频流中第n帧图像开始添加第二渲染图像,相应的,直播视频中第n帧开始添加第一渲染图像;在视频流中第m帧图像停止添加第二渲染图像,相应的,直播视频中第m帧停止添加第一渲染图像。n和m为整数。第一渲染图像的添加起止时间(戳)与第二渲染图像的添加起止时间(戳)相同。
58.通过将采集的直播视频中的图像帧转换为视频流,并发送给推流服务器,由推流服务器将视频流和第二渲染图像进行合成,并转推给观众端,以使观众端浏览到添加渲染图像的直播视频,可以准确在视频流中添加渲染图像,提高主播端显示的直播视频和观众端显示的直播视频的一致性。
59.可选的,所述直播间图像渲染方法,还包括:将所述渲染图像标识发送至推流服务器,以使所述推流服务器根据所述渲染图像标识生成所述第二渲染图像。
60.主播端可以将渲染图像标识发送给推流服务器,以使推流服务器,根据渲染图像标识生成所述第二渲染图像。通过主播端与推流服务器之间,仅存在主播端向推流服务器传输渲染图像标识,替代二者传输布局文本、业务数据和合成后的视频流的传输,减少推流服务器和主播端之间的宽带传输资源的占用。
61.可选的,所述根据所述目标渲染数据生成渲染图像,包括:获取可支持的渲染模式,并根据所述渲染模式,初始化对应的运行环境;配置渲染画布;在所述运行环境中启动和运行渲染模块;配置渲染分辨率;通过所述渲染模块采用所述渲染模式,基于所述渲染分辨率在所述渲染画布中对所述目标渲染数据进行渲染,生成第一渲染图像。
62.通过渲染数据生成渲染图像,可以执行基于flutter框架的代码文件实现。flutter在ios和安卓(android)的跨平台性,可以统一android和ios的布局代码,避免针对不同系统进行不同代码开发,减少开发的代码量,提高开发效率。渲染模式用于确定运行环境。渲染模式可以是指采用什么方式进行渲染。示例性的,渲染模式可以包括开放图形库(opengl)渲染模式或中央处理器(central processing unit,cpu)渲染模式。渲染模式与运行环境对应,不同渲染模式,需要在不同的运行环境下执行。可以根据主播端的操作系统,确定渲染模式,示例性的,主播端的操作系统为安卓系统或ios系统,渲染模式为opengl渲染模式;主播端的操作系统为linux系统,渲染模式为cpu渲染模式。初始化运行环境,并配置运行环境的上下文。
63.渲染画布用于绘制图形,形成第一渲染图像。flutter中用画布(canvas)进行绘制。canvas内部封装了用于绘制基本图形的接口,比如矩形、圆形、点和线等。flutter中提
供了封装好的组件customer paint widget,这个组件与画笔paint widget组合使用就可以绘制出需要的图形。在运行环境中启动和运行渲染模块。渲染模块用于执行渲染操作。渲染模块为基于flutter框架生成的代码文件。渲染分辨率根据主播端确定。渲染分辨率用于调整第一渲染图像的显示效果,以对齐第二渲染图像。此外,还可以配置渲染模块的参数,例如,代码的路径和依赖库的路径等。
64.通过渲染模块采用渲染模式,基于渲染分辨率在渲染画布中对目标渲染数据进行渲染,生成第一渲染图像。同时,可以开启渲染模块的事件消息循环,不断接收渲染事件通知消息,并不断对各渲染事件通知消息分别指定的渲染图像标识进行渲染。
65.通过配置渲染模块运行渲染操作,并生成第一渲染图像,可以准确基于主播端的属性,配置渲染模式和分辨率,准确生成与第二渲染图像对齐的第一渲染图像,从而提高主播端显示的直播视频和观众端显示的直播视频的一致性。
66.本发明实施例通过获取直播服务器发送的渲染更新数据,对第一渲染图像进行更新,可以在用户界面中实时显示最新的第一渲染图像,实现快速在主播端更新第一渲染图像,提高第一渲染图像的更新效率,提高用户体验,同时省略通过推流服务器发送获取更新后的第一渲染图像的操作,提高第一渲染图像的更新实时性,同时,减少主播端与推流服务器之间的带宽传输资源。
67.实施例三
68.图3为本发明实施例适用的一种应用场景的示意图。如图3所示,直播间图像渲染方法具体可以包括:
69.s301,通过业务服务器发起渲染,发送渲染图像标识到客户端。
70.业务服务器可以是指直播服务器。
71.s302,通过客户端接收到渲染图像标识。
72.客户端可以是指主播端。
73.s303,通过客户端启动渲染引擎,加载渲染模块。
74.渲染模块为flutter代码产物。
75.s304,通过客户端的渲染模块加载与所述渲染图像标识对应的目标渲染数据,生成第一渲染图像。
76.s305,通过客户端的渲染模块将第一渲染图像嵌入到用户界面。
77.s306,通过客户端监听业务服务器推送,根据数据变化更新用户界面。
78.s307,通过客户端将该用户界面的直播间对应的视频流推流到推流服务器,同时发送渲染图像标识。
79.渲染图像标识还可以由业务服务器直接发送给推流服务器。
80.s308,推流服务器接收到渲染图像标识。
81.s309,通过推流服务器启动渲染引擎,加载渲染模块。
82.s310,通过推流服务器的渲染模块加载与所述渲染图像标识对应的目标渲染数据,生成第二渲染图像。
83.s311,通过推流服务器设置帧回调接口。
84.s312,通过推流服务器的渲染模块将第二渲染图像添加到视频流的图像帧中,并调用帧回调接口将合成后的图像帧,返回给推流服务器。
85.推流服务器调用渲染模块生成第二渲染图像,渲染模块生成第二渲染图像之后,调用帧回调接口,将第二渲染图像反馈给推流服务器。具体的,推流服务器可以是指推流服务器的主程序,或者推流服务器的推流模块。
86.s313,推流服务器监听业务服务器推送,根据数据变化更新第二渲染图像。
87.推流服务器的渲染模块对应的代码文件和客户端的渲染模块对应的代码文件可以相同,从而可以减少渲染模块代码开发的工作量,提高渲染模块代码开发效率,从而提高客户端和服务器端一体业务的开发效率。
88.本发明实施例通过客户端根据渲染图像标识直接在用户界面中添加第一渲染图像,并通过推流服务器根据渲染图像标识在视频流中添加第二渲染图像,并对齐第一渲染图像和第二渲染图像,可以避免推流服务器与客户端之间的频繁通信,大大节省了带宽传输资源,而且,可以在客户端直接快速预览到第一渲染图像的显示效果,便于开发人员根据显示效果对第一渲染图像进行调整,加快渲染图像对应的业务开发效率,同时在接收到渲染更新数据时,对第一渲染图像进行响应更新,实时显示更新后的第一渲染图像,提高更新响应效率。
89.可选的,推流服务器可以实现视频流图像渲染方法。
90.视频流图像渲染方法,应用于推流服务器,包括:接收视频流,并从中提取图像帧;通过渲染模块根据预存的目标渲染数据生成渲染图像,并在所述图像帧中添加所述渲染图像;获取添加后的图像帧,并更新所述视频流。
91.推流服务器用于对视频流进行拉流和/或推流,视频流可以是指承载至少一个视频图像帧的数据包。视频流中包括图像帧,图像帧为视频中的图像。多个连续的视频流,可以提取出多个播放时间连续的图像帧,按照播放时间顺序播放各图像帧,可以形成视频的播放效果。渲染模块用于执行渲染步骤,生成渲染图像,渲染模块可以是指预先配置在推流服务器中的模块。示例性的,渲染模块为基于flutter框架生成的代码文件。目前,linux平台的渲染引擎依赖glfw框架,glfw框架需要在运行了图形用户接口(graphical user interface,gui)环境的linux系统上才能运行,而部署在服务器中的linux系统普遍没有gui环境。渲染模块为在缺乏gui环境的linux运行flutter框架的渲染程序。目标渲染数据用于进行渲染,生成渲染图像。在图像帧中添加渲染图像,是指将图像帧与渲染图像进行合成,例如,将渲染图像覆盖于图像帧上。添加后的图像帧为接收的图像帧与渲染图像的合成图像。根据添加后的图像帧更新视频流可以在视频流对应的数据包中将图像帧替换为添加后的图像帧;或者根据添加后的图像帧重新进行打包。按照时间戳,将更新后的视频流发送至观众端或指定的推流地址。
92.通过在推流服务器中从视频流中提取图像帧,并生成渲染图像,添加到图像帧中,更新视频流,可以实现在推流服务器端实现图像渲染,解决了现有技术中推流服务器基于主播端发送的渲染数据进行渲染以及更新渲染,导致开发效率低以及传输资源占用多的问题,可以省略推流服务器接收主播端发送的布局文本并进行解析和渲染的步骤,减少主播端和推流服务器之间针对渲染图像的传输次数和传输数据量,减少占用传输资源,同时还可以减少内存占用,提高渲染图像的运行效率。
93.可选的,所述接收视频流,包括:接收主播端发送的直播视频流,更新后的直播视频流用于提供给观众端进行显示,以使所述观众端生成所述添加后的直播图像帧并显示。
94.视频流为主播端发送的直播视频流。主播端实时采集直播视频,并转换为直播视频流进行传输。直播视频实际为一帧一帧的图像帧,播放直播视频实际是按照顺序播放各图像帧。实时采集直播视频,可以是指实时采集直播视频的图像帧,并对至少一个图像帧进行打包,形成数据包。实时采集直播视频,主播端将当前阶段采集的最新的至少一个图像帧打包形成的数据包传输给推流服务器,持续采集直播视频,从而持续生成数据包,并持续将数据包传输给推流服务器,其中,每个数据包可以视为一个视频流数据。可以将一帧图像帧打包成一个数据包,也可以将播放时间上连续的多个图像帧打包成一个数据包。直播视频用于在直播间进行播放。主播端将直播视频推送到推流服务器,并由推流服务器推送到各观众端,或者推送到指定推流地址,由各观众端进行拉取。更新后的视频流携带渲染图像,观众端对更新后的视频流进行显示,可以浏览到图像帧与渲染图像的叠加结果
95.通过在直播应用场景中,接收直播视频流,并将更新后的直播视频流提供给观众端进行显示,观众端可以准确浏览到渲染图像与直播视频流的叠加结果,可以准确在直播视频中添加渲染图像。
96.可选的,所述通过渲染模块根据预存的目标渲染数据生成渲染图像,包括:获取渲染图像标识;根据渲染图像标识,在预存的渲染数据中,查询与所述渲染图像标识匹配的目标渲染数据;通过所述渲染模块根据所述目标渲染数据生成渲染图像。
97.渲染图像标识用于查询到匹配的目标渲染数据,以生成对应的渲染图像。不同渲染图像的渲染图像标识不同。渲染图像标识可以理解为针对不同应用场景,或不同业务,进行开发形成的渲染图像的标识。不同渲染图像标识对应不同的目标渲染数据,可以预先建立渲染图像标识与渲染数据之间的对应关系。根据渲染图像标识,渲染图像标识与渲染数据之间的对应关系,查询渲染图像标识匹配的目标渲染数据。预先针对每个渲染图像标识,分别预先获取对应的渲染数据并存储。
98.现有的推流服务器的渲染过程包括:主播端发送布局文本给推流服务器;推流服务器解析布局文本,其中,布局本文是一颗控件树,控件树描述了控件的嵌套关系,控件树的每个节点定义了控件的结构、位置、大小、属性和子控件等;推流服务器将解析完的布局文本转换成推流服务器的渲染代码,并执行渲染;推流服务器向主播端和观众端输出渲染完成的数据。现有的推流服务器只能完成渲染操作,仅具备解析布局文本,并渲染的能力。
99.推流服务器实现的,视频流图像渲染方法可以将布局操作和渲染操作,整合到推流服务器中,可以自主执行布局处理逻辑。通过仅获取渲染图像标识,可以在预先获取的渲染数据中查询目标渲染数据,并生成渲染图像,可以减少推流服务器对客户端的依赖,节省了频繁通信所带来的带宽传输资源的浪费,减少解析布局文件,减少推流服务器的内存占用,提高运行效率。
100.可选的,在通过所述渲染模块生成渲染图像之后,还包括:接收业务服务器发送的渲染更新数据;根据所述渲染更新数据对所述渲染图像进行更新。
101.业务服务器用于为客户端提供业务数据。渲染更新数据用于对渲染图像进行更新。渲染更新数据可以是指业务服务器指示推流服务器对渲染图像进行更新的数据。示例性的,业务服务器为直播服务器,渲染更新数据可以是指直播服务器针对直播间获取的用户行为数据,用户行为数据可以包括该直播间关联的主播用户的行为数据和/或该直播间关联的观众用户的行为数据。渲染更新数据可以用于调整渲染图像的颜色、对比度、饱和
度、亮度、阴影效果、图像形状、图像尺寸、布局位置和包括的文本的样式等等。渲染图像可以实时进行更新。推流服务器接收到渲染更新数据可以对渲染图像进行更新。在一个例子中,渲染更新数据为背景颜色更新的数据,例如,背景颜色更新为黄色。渲染图像的背景颜色由任意一种颜色更新为黄色。
102.通过获取业务服务器发送的渲染更新数据,对渲染图像进行更新,可以在观众端中实时显示最新的渲染图像,实现快速在观众端更新渲染图像,提高渲染图像的更新效率,提高用户体验,提高第一渲染图像的更新实时性,同时,可以避免主播端与推流服务器传输布局文本,以减少主播端与推流服务器之间的带宽传输资源。
103.可选的,所述通过渲染模块生成渲染图像,并在所述图像帧中添加所述渲染图像,包括:获取可支持的渲染模式,并根据所述渲染模式,初始化对应的运行环境;配置帧回调接口;配置渲染画布;在所述运行环境中启动和运行渲染模块;配置渲染分辨率;通过所述渲染模块采用所述渲染模式,基于所述渲染分辨率在所述渲染画布中进行渲染,生成渲染图像;通过所述渲染模块获取所述图像帧,并在所述图像帧中添加所述渲染图像;所述获取添加后的图像帧,包括:通过所述渲染模块调用所述帧回调接口,传输添加后的图像帧;通过所述帧回调接口获取添加后的图像帧。
104.渲染模式用于确定运行环境。渲染模式可以是指采用什么方式进行渲染。示例性的,渲染模式可以包括开放图形库(opengl)渲染模式或中央处理器(central processing unit,cpu)渲染模式。渲染模式与运行环境对应,不同渲染模式,需要在不同的运行环境下执行。可以根据服务器是否支持图形处理器(graphics processing unit,gpu)渲染,确定渲染模式。示例性的,服务器支持gpu渲染,确定opengl渲染模式,并对应初始化opengl运行环境。服务器不支持gpu渲染,确定cpu渲染模式,并对应初始化cpu运行环境。初始化运行环境,并配置运行环境的上下文。帧回调接口在渲染模块被调用时用于渲染模块将图像帧传输给推流模块,以使推流模块根据渲染图像更新视频流。配置帧回调接口,以便渲染模块可以调用帧回调接口。渲染画布用于绘制图形,形成第一渲染图像。flutter中用画布(canvas)进行绘制。canvas内部封装了用于绘制基本图形的接口,比如矩形、圆形、点和线等。flutter中提供了封装好的组件customer paint widget,这个组件与画笔paint widget组合使用就可以绘制出需要的图形。在运行环境中启动和运行渲染模块。渲染模块用于执行渲染操作。渲染模块为基于flutter框架生成的代码文件。渲染分辨率通常根据观众端或主播端的显示效果确定。渲染分辨率用于调整渲染图像的显示效果。此外,还可以配置渲染模块的参数,例如,代码的路径和依赖库的路径等。通过渲染模块采用渲染模式,基于渲染分辨率在渲染画布中对目标渲染数据进行渲染,生成渲染图像。同时,可以开启渲染模块的事件消息循环,不断接收渲染事件通知消息,并不断对各渲染事件通知消息分别指定的渲染图像标识进行渲染。通过渲染模块调用帧回调接口,传输添加后的图像帧,用于推流的推流模块通过帧回调接口获取添加后的图像帧,更新视频流,并将更新后的视频流进行推流。
105.通过配置渲染模块运行渲染操作,并生成渲染图像,可以适应性配置渲染模式和分辨率,准确生成渲染图像。
106.可选的,所述在所述运行环境中启动和运行渲染模块,包括:获取所述渲染模块的编译模式,所述编译模式包括运行时编译模式或运行前编译模式;根据所述渲染模式的编
译模式,确定所述编译模式匹配的编译模块;通过编译模块,在所述编译模式下,对所述渲染模块的代码文件进行编译,生成编译文件;在所述运行环境中根据所述编译文件启动和运行所述渲染模块。
107.渲染模块的编译模式用于确定如何编译渲染模块。编译模式包括运行时编译模式或运行前编译模式。运行时编译模式(just in time,jit)是指在代码文件启动运行的同时对代码文件进行编译;运行前编译模式(ahead of time,aot)是指在代码文件启动运行前对代码文件进行编译。编译模块用于编译渲染模块对应的代码文件,形成对应的编译文件。编译文件用于启动和运行渲染模块。可以预先配置编译模块的参数,通过该参数指定渲染模块的编译模式。不同编译模式对应不同的编译模块。不同编译模式的渲染模块的应用场景不同。相对于jit模式,aot模式下的内存占用更少,执行效率更高。例如,编译模块在aot模式下编译渲染模块对应的代码文件。aot模式对应的编译模块能够将flutter框架编写的代码文件编译成对应的二进制机器码,二进制机器码可以直接被推流服务器识别并运行。
108.现有的flutter代码文件是基于jit模式编译并运行的渲染模块进行渲染。通过增加配置aot模式对渲染模块的代码文件进行编译,可以降低渲染模块运行时的内存占用,经试验可以减少50%,同时提高执行效率,而且可以适配应用场景配置不同的编译模式,可以丰富渲染模块的应用场景,合理配置资源。aot模式对应的编译模块的编译过程为:运行flutter的构建命令,将flutter代码文件编译成能在jit模式下运行的产物;设置编译参数、jit产物的路径、以及二进制文件的名称和路径等;执行flutter的编译模块,将jit模式的产物转换成二进制文件;将二进制文件输出到指定路径。
109.通过配置运行前编译的编译模式,并采用对应的编译模块对渲染模块的代码文件进行编译,形成编译文件,并根据编译文件启动和运行渲染模块,可以减少内存占用,提高执行效率。
110.实施例四
111.图4为本发明实施例四中的一种直播间图像渲染装置的示意图。实施例三是实现本发明上述实施例提供的直播间图像渲染方法的相应装置,该装置可采用软件和/或硬件的方式实现,并一般可集成计算机设备中。
112.相应的,本实施例的装置可以包括:
113.渲染图像标识获取模块410,用于获取渲染图像标识;
114.渲染数据查询模块420,用于根据所述渲染图像标识,查询与所述渲染图像标识匹配的目标渲染数据;
115.渲染图像显示模块430,用于根据所述目标渲染数据生成渲染图像,并在直播间的用户界面中显示,所述渲染图像用于添加到所述直播间对应的视频流中,并在观众端进行显示。
116.本发明实施例通过在主播端获取渲染图像标识,并根据渲染图像标识,查询匹配的目标渲染数据,以及根据目标渲染数据生成第一渲染图像,在直播间用户界面中进行显示,同时,第一渲染图像还用于与添加到视频流中的第二渲染图像对齐,实现在主播端直接显示渲染图像在视频流中的渲染效果,解决了现有技术中主播端接收到推流服务器渲染的图像才能显示用户界面图像,导致开发效率低以及传输资源占用多的问题,可以省略主播端获取推流服务器提供的渲染图像与视频流的叠加图像的步骤,主播端直接在用户界面中
显示渲染图像,以使开发人员快速获取渲染图像在用户界面的显示效果,从而,提高开发效率,同时减少主播端和推流服务器之间针对渲染图像的传输次数和传输数据量,减少占用传输资源。
117.进一步的,所述直播间图像渲染装置,还包括:渲染更新模块,用于接收直播服务器发送的渲染更新数据;根据所述渲染更新数据对所述第一渲染图像进行更新;在所述用户界面中显示更新后的第一渲染图像。
118.进一步的,所述渲染图像标识获取模块410,包括:直播视频实时采集单元,用于采集直播视频;在直播间的用户界面中实时显示所述直播视频,所述第一渲染图像用于与所述直播视频进行叠加显示;接收直播服务器发送的渲染图像标识。
119.进一步的,所述直播间图像渲染装置,还包括:视频流推送模块,用于在根据所述目标渲染数据生成渲染图像,并在用户界面中显示之后,将所述直播视频中各图像帧分别转换为视频流,并发送给推流服务器,以使所述推流服务器将所述第二渲染图像添加到各所述视频流中,并发送给观众端进行显示。
120.进一步的,所述直播间图像渲染装置,还包括:渲染图像标识发送模块,用于将所述渲染图像标识发送至推流服务器,以使所述推流服务器根据所述渲染图像标识生成所述第二渲染图像。
121.进一步的,所述渲染图像显示模块430,包括:渲染单元,用于获取可支持的渲染模式,并根据所述渲染模式,初始化对应的运行环境;配置渲染画布;在所述运行环境中启动和运行渲染模块;配置渲染分辨率;通过所述渲染模块采用所述渲染模式,基于所述渲染分辨率在所述渲染画布中对所述目标渲染数据进行渲染,生成第一渲染图像。
122.进一步的,所述第一渲染图像包括直播互动状态图像,所述渲染更新数据包括实时互动数据;所述渲染更新模块,具体用于:根据所述实时互动数据,确定至少两个直播连麦的主播用户的实时分数比值;根据所述实时分数比值,对所述直播互动状态图像中分数比值进度区域进行更新。
123.上述装置可执行本发明实施例所提供的方法,具备执行方法相应的功能组件和有益效果。
124.实施例五
125.图5为本发明实施例五提供的一种计算机设备的结构示意图。图5示出了适于用来实现本发明实施方式的示例性计算机设备12的框图。图5显示的计算机设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
126.如图5所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。计算机设备12可以是挂接在总线上的设备。
127.总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(industry standard architecture,isa)总线,微通道体系结构(micro channel architecture,mca)总线,增强型isa总线、视频电子标准协会(video electronics standards association,vesa)局域总线以及外围组件互连(peripheral component interconnect,pci)总线。
128.计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
129.系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(ram)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图5未显示,通常称为“硬盘驱动器”)。尽管图5中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如紧凑磁盘只读存储器(compact disc read

only memory,cd

rom),数字视盘(digital video disc

read only memory,dvd

rom)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。系统存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序组件,这些程序组件被配置以执行本发明各实施例的功能。
130.具有一组(至少一个)程序组件42的程序/实用工具40,可以存储在例如系统存储器28中,这样的程序组件42包括但不限于操作系统、一个或者多个应用程序、其它程序组件以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序组件42通常执行本发明所描述的实施例中的功能和/或方法。
131.计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(input/output,i/o)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(local area network,lan),广域网(wide area network,wan)通信。如图所示,网络适配器20通过总线18与计算机设备12的其它组件通信。应当明白,尽管图5中未示出,可以结合计算机设备12使用其它硬件和/或软件组件,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列(redundant arrays of inexpensive disks,raid)系统、磁带驱动器以及数据备份存储系统等。
132.处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明任意实施例所提供的方法。
133.实施例六
134.本发明实施例六提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请所有发明实施例提供的直播间图像渲染方法:
135.也即,该程序被处理器执行时实现:获取渲染图像标识;根据所述渲染图像标识,查询与所述渲染图像标识匹配的目标渲染数据;根据所述目标渲染数据生成第一渲染图像,并在直播间的用户界面中显示,以使所述第一渲染图像对齐第二渲染图像,所述第二渲染图像为添加到所述直播间对应的视频流中的渲染图像。
136.本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具
有一个或多个导线的电连接、便携式计算机磁盘、硬盘、ram、只读存储器(read only memory,rom)、可擦式可编程只读存储器(erasable programmable read only memory,eprom)、闪存、光纤、便携式cd

rom、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
137.计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
138.计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、无线电频率(radiofrequency,rf)等等,或者上述的任意合适的组合。
139.可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括lan或wan——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
140.注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1