发明内容
本发明实施例所要解决的技术问题在于,提供一种在线直播方法和设备,以提高在线直播的灵活性。
为了解决上述技术问题,本发明实施例提供了一种在线直播方法,包括:
获取直播内容,并在展示窗口中展示所述直播内容的预览画面;
当检测到针对所述直播内容的预览画面的编辑指令时,根据所述编辑指令确定编辑后的预览画面在所述展示窗口中的位置和大小;所述编辑指令包括针对所述预览画面的位置和/或大小的调整指令;
根据所述编辑后的预览画面在所述展示窗口中的位置和大小、展示窗口分辨率,以及合成分辨率,确定所述编辑后的预览画面的合成位置和大小;
根据所述编辑后的预览画面的合成位置和大小将所述编辑后的预览画面合成到第一画布中,所述第一画布的分辨率与所述合成分辨率一致;
将所述第一画布发送给服务端,以使所述服务端将所述第一画布广播至发送方所在的频道内的所有观众客户端。
其中,所述获取直播内容,包括:
通过进程捕捉的方式获取直播内容;或,
通过桌面捕捉的方式获取直播内容;或,
通过摄像头获取直播内容。
其中,所述根据所述编辑后的预览画面在所述展示窗口中的位置和大小、展示窗口分辨率,以及合成分辨率,确定所述编辑后的预览画面的合成位置和大小,包括:
根据所述展示窗口分辨率,以及所述合成分辨率,确定水平比例,以及垂直比例;
根据所述编辑后的预览画面在所述展示窗口中的位置和大小,所述水平比例,以及所述垂直比例,确定所述编辑后的预览画面的合成位置和大小。
其中,所述在展示窗口中展示所述直播内容的预览画面之后,还包括:
当检测到图层添加指令时,根据所述图层添加指令在所述展示窗口中添加对应的图层;
根据所述图层在所述展示窗口中的位置和大小、所述展示窗口当前展示的所述直播内容的预览画面在所述展示窗口中的位置和大小,所述展示窗口分辨率,以及所述合成分辨率,分别确定所述图层的合成位置和大小,以及所述展示窗口当前展示的所述直播内容的预览画面的合成位置和大小;
根据所述图层的合成位置和大小,以及所述展示窗口当前展示的所述直播内容的预览画面的合成位置和大小,将所述图层,以及所述展示窗口展示的所述直播内容的预览画面合成到第二画布中,所述第二画布的分辨率与所述合成分辨率一致;
将所述第二画布发送给服务端,以使所述服务端将所述第二画布广播至发送方所在的频道内的所有观众客户端。
其中,所述根据所述图层添加指令在所述展示窗口中增加对应的图层之后,还包括:
当检测到图层编辑指令时,根据所述图层编辑指令确定编辑后的图层在所述展示窗口中的位置和大小;所述编辑指令包括针对所述图层的位置和/或大小的调整指令;
根据所述编辑后的图层在所述展示窗口中的位置和大小、所述展示窗口当前展示的所述直播内容的预览画面在所述展示窗口中的位置和大小,所述展示窗口分辨率,以及所述合成分辨率,分别确定所述编辑后的图层的合成位置和大小,以及所述展示窗口当前展示的所述直播内容的预览画面的合成位置和大小;
根据所述编辑后的图层的合成位置和大小将所述编辑后的图层,以及所述展示窗口当前展示的所述直播内容的预览画面的合成位置和大小,将所述编辑后的图层,以及所述展示窗口展示的所述直播内容的预览画面合成到第三画布中,所述第三画布的分辨率与所述合成分辨率一致;
将所述第三画布发送给服务端,以使所述服务端将所述第三画布广播至发送方所在的频道内的所有观众客户端。
其中,所述图层包括以下之一或多个:
摄像头图层、文字图层、或图片图层。
其中,所述在展示窗口中展示所述直播内容的预览画面之后,还包括:
当检测到合成分辨率调整指令时,确定调整后的合成分辨率;
根据所述展示窗口中当前展示的所述直播内容的预览画面在所述展示窗口的位置和大小,所述展示窗口分辨率,以及所述调整后的合成分辨率,确定所述展示窗口中当前展示的所述直播内容的预览画面的合成位置和大小;
根据所述展示窗口中当前展示的所述直播内容的预览画面的合成位置和大小,将所述展示窗口中当前展示的所述直播内容的预览画面合成到第四画布中,所述第四画布的分辨率与所述调整后的合成分辨率一致;
将所述第四画布发送给服务端,以使所述服务端将所述第四画布广播至发送方所在的频道内的所有观众客户端。
本发明实施例还提供了一种客户端,包括:
获取模块,用于获取直播内容;
展示模块,用于在展示窗口中展示直播内容的预览画面;
检测模块,用于检测针对所述主播内容的预览画面的编辑指令;
第一确定模块,用于当所述检测模块检测到针对所述直播内容的预览画面的编辑指令时,根据所述编辑指令确定编辑后的预览画面在所述展示窗口中的位置和大小;所述编辑指令包括针对所述预览画面的位置和/或大小的调整指令;
第二确定模块,用于根据所述编辑后的预览画面在所述展示窗口中的位置和大小、展示窗口分辨率,以及合成分辨率,确定所述编辑后的预览画面的合成位置和大小;
合成模块,用于根据所述编辑后的预览画面的合成位置和大小将所述编辑后的预览画面合成到第一画布中,所述第一画布的分辨率与所述合成分辨率一致;
发送模块,用于将所述第一画布发送给服务端,以使所述服务端将所述第一画布广播至发送方所在的频道内的所有观众客户端。
其中,所述获取模块,用于通过进程捕捉的方式获取直播内容;或,通过桌面捕捉的方式获取直播内容;或,通过摄像头获取直播内容。
其中,所述第一确定模块,包括:
第一确定单元,根据所述展示窗口分辨率,以及所述合成分辨率,确定水平比例,以及垂直比例;
第二确定单元,根据所述编辑后的预览画面在所述展示窗口中的位置和大小,所述水平比例,以及所述垂直比例,确定所述编辑后的预览画面的合成位置和大小。
其中,所述检测模块,还用于检测图层添加指令;
所述客户端还包括:
添加模块,用于当所述检测模块检测到图层添加指令时,根据所述图层添加指令在所述展示窗口中添加对应的图层;
所述第二确定模块,还用于根据所述图层在所述展示窗口中的位置和大小、所述展示窗口当前展示的所述直播内容的预览画面在所述展示窗口中的位置和大小,所述展示窗口分辨率,以及所述合成分辨率,分别确定所述图层的合成位置和大小,以及所述展示窗口当前展示的所述直播内容的预览画面的合成位置和大小;
所述合成模块,还用于根据所述图层的合成位置和大小,以及所述展示窗口当前展示的所述直播内容的预览画面的合成位置和大小,将所述图层,以及所述展示窗口展示的所述直播内容的预览画面合成到第二画布中,所述第二画布的分辨率与所述合成分辨率一致;
所述发送模块,还用于将所述第二画布发送给服务端,以使所述服务端将所述第二画布广播至发送方所在的频道内的所有观众客户端。
其中,所述检测模块,还用于检测图层编辑指令;
所述第一确定模块,还用于当所述检测模块检测到图层编辑指令时,根据所述图层编辑指令确定编辑后的图层在所述展示窗口中的位置和大小;所述编辑指令包括针对所述图层的位置和/或大小的调整指令;
所述第二确定模块,还用于根据所述编辑后的图层在所述展示窗口中的位置和大小、所述展示窗口当前展示的所述直播内容的预览画面在所述展示窗口中的位置和大小,所述展示窗口分辨率,以及所述合成分辨率,分别确定所述编辑后的图层的合成位置和大小,以及所述展示窗口当前展示的所述直播内容的预览画面的合成位置和大小;
所述合成模块,还用于根据所述编辑后的图层的合成位置和大小将所述编辑后的图层,以及所述展示窗口当前展示的所述直播内容的预览画面的合成位置和大小,将所述编辑后的图层,以及所述展示窗口展示的所述直播内容的预览画面合成到第三画布中,所述第三画布的分辨率与所述合成分辨率一致;
所述发送模块,还用于将所述第三画布发送给服务端,以使所述服务端将所述第三画布广播至发送方所在的频道内的所有观众客户端。
其中,所述图层包括以下之一或多个:
摄像头图层、文字图层、或图片图层。
其中,所述检测模块,还用于检测合成分辨率调整指令;
所述客户端还包括:
第三确定模块,用于当所述检测模块检测到合成分辨率调整指令时,确定调整后的合成分辨率;
所述第二确定模块,还用于根据所述展示窗口中当前展示的所述直播内容的预览画面在所述展示窗口的位置和大小,所述展示窗口分辨率,以及所述调整后的合成分辨率,确定所述展示窗口中当前展示的所述直播内容的预览画面的合成位置和大小;
所述合成模块,还用于根据所述展示窗口中当前展示的所述直播内容的预览画面的合成位置和大小,将所述展示窗口中当前展示的所述直播内容的预览画面合成到第四画布中,所述第四画布的分辨率与所述调整后的合成分辨率一致;
所述发送模块,还用于将所述第四画布发送给服务端,以使所述服务端将所述第四画布广播至发送方所在的频道内的所有观众客户端。
实施本发明实施例,具有如下有益效果:
检测到针对预览画面的编辑指令时,会根据编辑后的预览画面在展示窗口中的位置和大小,展示窗口分辨率,以及合成分辨率,将编辑后的预览画面合成到分辨率与合成分辨率一致的画布中,并将该画布通过服务端广播给相应频道内的所有观众客户端,从而,不仅可以实现了主播用户在直播过程中对直播内容的编辑,提高在线直播的灵活性,还可以将主播用户对直播内容的编辑实时反映到观众客户端中,即观众客户端可以实时观看到主播用户对直播内容的编辑操作。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了更好理解本发明实施例提供的一种在线直播方法及相关设备、系统,下面先对本发明实施例适用的网络构架进行描述。请参阅图1,图1是本发明实施例提供的一种在线直播的网络构架示意图。如图1所示,该网络构架示意图可以包括服务端以及多个客户端,其中,服务端可以通过互联网与多个客户端进行通信连接。在图1所示的网络构架中,多个客户端中包括至少一个第一类型客户端,其余客户端为第二类型客户端;上述至少一个第一类型客户端可以作为主播客户端,第二类型客户端可以作为观众客户端接入任一主播客户端所在的频道。本发明实施例中,频道简单来讲就是具有频道创建权限的客户端,如频道管理员客户端,创建的一种虚拟空间(或虚拟房间),位于该虚拟空间内的观众客户端不仅可以观看主播客户端的直播内容,还可以和主播客户端进行语音或文字的交互。主播客户端对接入其频道内的其余观众客户端不仅具有接入、踢出控制权,还具体直播主动权。本发明实施例中,主播客户端、观众客户端均可以是包括集合群聊、视频直播、频道K歌、在线游戏、在线影视等功能为一体的客户端。在图1所示的网络构架中,主播客户端、观众客户端可以运行在包括但不限于PC(Personal Computer,个人计算机)、移动电话、移动电脑、平板电脑、个人数字助理(Personal Digital Assistant,PDA)、媒体播放器、智能电视、智能手表、智能眼镜、智能手环等用户设备上。服务端可以为硬件实现的服务端,如服务器,也可以为软件实现的服务端,如服务系统。
基于图1所示的网络构架,本发明实施例提供了的一种在线直播方法。如图2所示,为本发明实施例提供的一种在线直播方法的流程示意图,可以包括以下步骤:
步骤201、获取直播内容,并在展示窗口展示该直播内容的预览画面。
本发明实施例中,上述方法可以应用于上述网络架构中作为主播客户端的第一类型客户端,为便于描述,以下以上述方法应用于主播客户端为例进行说明。
本发明实施例中,获取直播内容的方式可以包括但不限于以下方式:
通过进程捕捉的方式获取直播内容;或,
通过桌面捕捉的方式获取直播内容;或,
通过摄像头获取直播内容。
具体的,当用户(主播用户)登陆主播客户端之后,可以选择获取直播内容的方式,即直播模式。主播客户端可以根据主播用户的选择指令确定获取直播内容的方式。
举例来说,以游戏直播为例,假设主播用户选择的直播模式为通过进程捕捉的方式获取直播内容(可以简称为“进程直播”),主播客户端检测到主播用户的选择指令后,可以直接从游戏的进程读取画面进行直播。
又举例来说,假设主播用户选择的直播模式为通过桌面捕捉的方式获取直播内容(可以简称为“桌面捕捉”),主播客户端检测到主播用户的选择指令后,可以在主播用户登陆主播客户端的终端(如PC(Personal Computer,个人计算机))的显示屏中显示一个选择框,主播用户可以通过移动选择框(如通过鼠标拖拽该选择框)来选择需要主播的内容(选择框中包括的内容即为直播内容)。
再举例来说,假设主播用户选择的直播模式为通过摄像头获取直播内容(可以简称为“摄像头模式”),主播客户端检测到主播用户的选择指令后,可以通过摄像头获取直播内容。
本发明实施例中,主播客户端获取到直播内容时,可以在主播客户端的展示窗口中展示直播内容的预览画面。
举例来说,以通过“进程直播”模式进行游戏直播为例。参见图2A,假设主播用户想要直播游戏“MEGAMAN X8(洛克人X8)”,主播用户登陆主播客户端后,可以打开游戏“MEGAMAN X8”,此时,游戏“MEGAMAN X8”主界面的指定区域(如图2A中所示的游戏画面的左上角)中会展示直播工具条(如图2A中标记a所示),该工具条中至少可以包括“直播”功能按钮(即图2A中所示的工具条中左起第一个功能按钮,如图2A中标记b所示),主播用户可以通过点击该“直播”功能按钮触发主播客户端进行在线直播。主播客户端检测到用户点击“直播”功能按钮的操作时,可以获取游戏画面(即直播内容),并在展示窗口展示该直播内容的预览画面。其中,主播客户端在展示窗口展示的直播内容的预览画面与观众客户端进入主播客户端所在的频道后接收到的直播内容一致。
需要注意的是,本发明实施例中,主播客户端的主界面中还可以包括用于开启和关闭预览的功能按钮,当主播客户端检测到用户点击该功能按钮的操作指令时,主播客户端可以开启或关闭预览功能。其中,当预览功能关闭时,主播客户端获取到直播内容后,将不会在展示窗口中展示直播内容的预览画面。
步骤202、当检测到针对直播内容的预览画面的编辑指令时,根据该编辑指令确定编辑后的预览画面在展示窗口中的位置和大小,该编辑指令包括对预览画面的位置和/或大小的调整指令。
本发明实施例中,为了提高在线直播的灵活性,主播用户通过主播客户端进行在线直播时,可以对直播内容进行编辑。例如,主播用户可以对直播内容的大小和在窗口中的位置进行编辑。
本发明实施例中,主播用户可以通过对直播内容的预览画面进行编辑的方式,实现对直播内容的编辑。当主播客户端检测到针对直播内容的预览画面的编辑指令时,如主播客户端检测到主播用户调整预览画面的位置和/或大小的操作指令时,主播客户端需要确定编辑后的预览画面在展示窗口中的位置和大小。
其中,预览画面在展示窗口中位置和大小可以根据预览画面的各个顶点在展示窗口的坐标系中的坐标、预览画面在展示窗口的坐标系中的长和宽确定;其中,展示窗口中的坐标系可以如图2B所示。
步骤203、根据编辑后的预览画面在展示窗口中的位置和大小、展示窗口分辨率,以及合成分辨率,确定编辑后的预览画面的合成位置和大小。
本发明实施例中,主播客户端检测到针对直播内容的预览画面的编辑指令,并确定编辑后的预览画面在展示窗口中的位置和大小后,主播客户端可以根据编辑后的预览画面在展示窗口中的位置和大小、展示窗口分辨率,以及合成分辨率,确定编辑后的预览画面的合成位置和大小。其中,合成分辨率为主播用户进行在线直播时所选择的分辨率。
作为一种可选的实施方式,根据编辑后的预览画面在展示窗口中的位置和大小、展示窗口分辨率,以及合成分辨率,确定编辑后的预览画面的合成位置和大小,可以包括以下步骤:
步骤11)、根据展示窗口分辨率,以及合成分辨率,确定水平比例,以及垂直比例;
步骤12)、根据编辑后的预览画面在展示窗口中的位置和大小,水平比例,以及垂直比例,确定编辑后的预览画面的合成位置和大小。
其中,水平比例为合成分辨率的水平像素与展示窗口的分辨率的水平像素的比值,垂直比例为合成分辨率的垂直像素与展示窗口的垂直像素的比值。
举例来说,假设展示窗口的分辨率600*400(水平像素为600,垂直像素为400),主播用户设备的合成分辨率为1280*720(水平像素为1280,垂直像素为720),则水平比例hRatio为1280:600,垂直比例vRatio为720:400,又假设编辑后的预览画面左上角顶点的坐标为(x1,y1),编辑后的预览画面在展示窗口的坐标系中的长为L1,宽为W1,则主播客户端可以确定编辑后的预览画面的合成位置和大小为:左上角顶点的坐标为(x2,y2),长为L2,宽为W2;其中:
x2=hRatio*x1=(1280:600)*x1;
y2=vRatio*y1=(720:400)*y1;
L2=hRatio*L1=(1280:600)*L1;
W2=vRatio*W1=(720:400)*W1。
步骤204、根据编辑后的预览画面的合成位置和大小将编辑后的预览画面合成到第一画布中,该第一画布的分辨率与合成分辨率一致。
本发明实施例中,主播客户端确定编辑后的预览画面的合成位置和大小之后,可以根据该编辑后的预览画面的合成位置和大小,将编辑后的预览画面合成到分辨率与上述合成分辨率一致的画布(第一画布)中,即确定编辑后的预览画面在第一画布中的位置和大小。
举例来说,以步骤203中所举示例为例,假设x1为6,y1为4,L1为60像素,W1为40像素,则第一画布的分辨率为1280*720,即第一画布的长为1280像素,宽为900像素,编辑后的预览画面的左上角在以第一画布中的坐标为(12.8,7.2),编辑后的预览画面在第一画布的坐标系中的长为128像素,宽为72像素。其中,画布中的坐标系以画布的左上角顶点为原点,水平向右为x轴正方向,垂直向下为y轴正方向。
步骤205、将第一画布发送给服务端,以使服务端将该第一画布广播至发送方所在的频道内的所有观众客户端。
本发明实施例中,主播客户端将编辑后的预览画面合成到第一画布中后,可以将该第一画布发送给服务端;服务端接收到该第一画布后,可以将该第一画布广播到该主播客户端所在的频道内的所有观众客户端。
需要注意的是,在本发明实施例中,主播客户端获取到直播内容之后,除了可以根据步骤201~205进行相应处理之外,主播客户端还会将获取到的直播内容实时发送给服务端,由服务端将直播内容广播给主播客户端所在的频道内的所有观众客户端,其具体处理流程为常规在线直播流程,在此不再赘述。
在图2所描述的方法流程中,主播客户端检测到针对预览画面的编辑指令时,会根据编辑后的预览画面在展示窗口中的位置和大小,展示窗口分辨率,以及合成分辨率,将编辑后的预览画面合成到分辨率与合成分辨率一致的画布中,并将该画布通过服务端广播给相应频道内的所有观众客户端,从而,不仅可以实现了主播用户在直播过程中对直播内容的编辑,还可以将主播用户对直播内容的编辑实时反映到观众客户端中,即观众客户端可以实时观看到主播用户对直播内容的编辑操作。
基于图1所示的网络构架,本发明实施例提供了的另一种在线直播方法。如图3所示,为本发明实施例提供的另一种在线直播方法的流程示意图,可以包括以下步骤:
步骤301、获取直播内容,并在展示窗口展示该直播内容的预览画面。
本发明实施例中,获取直播内容的方式可以包括但不限于以下方式:
通过进程捕捉的方式获取直播内容;或,
通过桌面捕捉的方式获取直播内容;或,
通过摄像头获取直播内容。
具体的,当用户(主播用户)登陆主播客户端之后,可以选择获取直播内容的方式,即直播模式。主播客户端可以根据主播用户的选择指令确定获取直播内容的方式。
举例来说,以游戏直播为例,假设主播用户选择的直播模式为通过进程捕捉的方式获取直播内容(可以简称为“进程直播”),主播客户端检测到主播用户的选择指令后,可以直接从游戏的进程读取画面进行直播。
又举例来说,假设主播用户选择的直播模式为通过桌面捕捉的方式获取直播内容(可以简称为“桌面捕捉”),主播客户端检测到主播用户的选择指令后,可以在主播用户登陆主播客户端的终端(如PC(Personal Computer,个人计算机))的显示屏中显示一个选择框,主播用户可以通过移动选择框(如通过鼠标拖拽该选择框)来选择需要主播的内容(选择框中包括的内容即为直播内容)。
再举例来说,假设主播用户选择的直播模式为通过摄像头获取直播内容(可以简称为“摄像头模式”),主播客户端检测到主播用户的选择指令后,可以通过摄像头获取直播内容。
本发明实施例中,主播客户端获取到直播内容时,可以在主播客户端的展示窗口中展示直播内容的预览画面。
举例来说,以通过“进程直播”模式进行游戏直播为例。参见图2A,假设主播用户想要直播游戏“MEGAMAN X8(洛克人X8)”,主播用户登陆主播客户端后,可以打开游戏“MEGAMAN X8”,此时,游戏“MEGAMAN X8”主界面的指定区域(如图2A中所示的游戏画面的左上角)中会展示直播工具条,该工具条中至少可以包括“直播”功能按钮(即图2A中所示的工具条中左起第一个功能按钮),主播用户可以通过点击该“直播”功能按钮触发主播客户端进行在线直播。主播客户端检测到用户点击“直播”功能按钮的操作时,可以获取游戏画面(即直播内容),并在展示窗口展示该直播内容的预览画面。其中,主播客户端在展示窗口展示的直播内容的预览画面与观众客户端进入主播客户端所在的频道后接收到的直播内容一致。
步骤302、当检测到图层添加指令时,根据图层添加指令在展示窗口中添加对应的图层。
本发明实施例中,主播用户通过主播客户端进行在线直播时,除了可以根据图2所描述的方法流程对获取到的直播内容进行编辑之外,还可以在直播内容中添加图层。
需要注意的是,以游戏直播为例,在本发明实施例中,当主播用户通过主播客户端进行游戏直播时,所直播的游戏画面也可以称为游戏图层。
本发明实施例中,主播用户通过主播客户端进行在线直播时,可以在直播内容中添加的图层可以包括但不限于以下之一或多个:
摄像头图层、文字图层、或图片图层。
举例来说,参见图3A,当主播用户通过主播客户端进行在线直播时,主播用户可以通过点击主播客户端的主界面中的指定功能按钮,如“添加”(如图3A中标记c所示),在直播内容中添加图层;主播客户端检测到用户点击上述功能按钮的操作指令时,可以向用户输出一个操作框,该操作框中可以至少包括“添加摄像头”、“添加文字”以及“添加图片”等操作选项,主播用户可以通过选择相应的操作选项,来在直播内容中添加相应的图层,如用户可以通过选择“添加摄像头”,在直播内容中添加摄像头图层。当主播客户端检测到图层添加指令时,如检测到用户选择“添加摄像头”时,主播客户端可以展示摄像头图层添加界面(如图3A中标记d所示),由主播用户在该摄像头图层添加界面中选择摄像头,并设置摄像头图层的分辨率,以及摄像头图层透明度等参数,当主播客户端检测到主播用户确定添加摄像头图层的操作指令时,主播客户端可以在展示窗口的默认区域(如左上角)添加一个摄像头图层(如图3A中标记e所示)。
步骤303、根据图层在展示窗口中的位置和大小,展示窗口当前展示的直播内容的预览画面在展示窗口中的位置和大小,展示窗口的分辨率,以及合成分辨率,分别确定图层的合成位置和大小,以及展示窗口当前展示的直播内容的预览画面的合成位置和大小。
本发明实施例中,当主播客户端根据接收到的图层添加指令在展示窗口中添加相应图层后,一方面,主播客户端可以根据该图层(添加的图层)在展示窗口中的位置和大小,展示窗口的分辨率,以及合成分辨率,确定该图层的合成位置和大小;另一方面,主播客户端可以根据展示窗口当前展示的直播内容的预览画面在展示窗口中的位置和大小,展示窗口的分辨率,以及合成分辨率,确定展示窗口当前展示的直播内容的预览画面的合成位置和大小。
其中,上述主播客户端确定图层的合成位置和大小,以及确定展示窗口当前展示的直播内容的预览画面的合成位置和大小的具体实现,均可以参见图2所描述的方法流程中,确定编辑后的预览画面的合成位置和大小的处理流程,其具体实现在此不再赘述。
步骤304、根据图层的合成位置和大小,以及展示窗口当前展示的直播内容的预览画面的合成位置和大小,将该图层,以及展示窗口展示的直播内容的预览画面合成到第二画布中,该第二画布的分辨率与合成分辨率一致。
本发明实施例中,主播客户端确定了主播用户添加的图层的合成位置和大小,以及展示窗口当前展示的直播内容的预览画面的合成位置和大小之后,可以根据该图层的合成位置和大小,以及展示窗口当前展示的直播内容的预览画面的合成位置和大小,将该图层,以及展示窗口当前展示的直播内容的预览画面合成到画布(第二画布)中。其中,该第二画布的分辨率与合成分辨率一致。
其中,主播客户端根据图层的合成位置和大小,以及展示窗口当前展示的直播内容的预览画面的合成位置和大小,将图层,以及展示窗口当前展示的直播内容的预览画面合成到画布中的具体实现,可以参见图2所描述的方法流程中根据编辑后的预览画面的合成位置和大小将编辑后的预览画面合成到画布中的处理流程,其具体实现在此不再赘述。
步骤305、将第二画布发送给服务端,以使服务端将第二画布广播至发送方所在的频道内的所有观众客户端。
本发明实施例中,主播客户端将添加的图层,以及展示窗口当前展示的直播内容的预览画面合成到第二画布后,可以将该第二画布发送给服务端;服务端接收到该第二画布后,可以将该第二画布广播到该主播客户端所在的频道内的所有观众客户端。
举例来说,以上述步骤303中所列举的在直播内容中添加摄像头图层的示例为例,当主播客户端接收到添加摄像头图层的操作指令后,主播客户端可以在展示窗口的默认位置添加一个摄像头图层;当主播客户端确定了摄像头图层的合成位置和大小,以及展示窗口当前展示的预览画面的合成位置和大小,并根据该摄像头图层的合成位置和大小,以及展示窗口当前展示的预览画面的合成位置和大小,将该摄像头图层,以及展示窗口当前展示的预览画面合成到第二画布后,可以将该第二画布发送给服务端;服务端接收到该第二画布后,可以将该第二画布广播到该主播客户端所在的频道内的所有观众客户端。其中,观众客户端侧看到的画面可以如图3B所示。
进一步地,在本发明实施例中,主播用户在直播内容中添加图层之后,还可以对该添加的图层进行编辑,如调整该图层在展示窗口中的大小和/或位置,相应地,上述步骤302中,根据图层添加指令在展示窗口中增加对应的图层之后,还可以包括以下步骤:
步骤21)、当检测到图层编辑指令时,根据图层编辑指令确定编辑后的图层在展示窗口中的位置和大小;该编辑指令可以包括针对图层的位置和/或大小的调整指令;
步骤22)、根据编辑后的图层在展示窗口中的位置和大小、展示窗口当前展示的直播内容的预览画面在展示窗口中的位置和大小,展示窗口分辨率,以及合成分辨率,分别确定编辑后的图层的合成位置和大小,以及展示窗口当前展示的直播内容的预览画面的合成位置和大小;
步骤23)、根据编辑后的图层的合成位置和大小将编辑后的图层,以及展示窗口当前展示的直播内容的预览画面的合成位置和大小,将编辑后的图层,以及展示窗口展示的直播内容的预览画面合成到画布(第三画布)中,该第三画布的分辨率与合成分辨率一致;
步骤24)、将第三画布发送给服务端,以使服务端将该第三画布广播至发送方所在的频道内的所有观众客户端。
举例来说,仍以上述步骤303中所列举的在直播内容中添加摄像头图层的示例为例,当主播客户端接收到添加摄像头图层的操作指令,并在展示窗口中的默认位置添加了一个摄像头图层之后,主播用户可以调整该摄像头图层在展示窗口中的大小和位置,其示意图可以如图3C所示;当主播客户端检测到针对该摄像头图层的位置和大小的调整指令时,主播客户端确定调整后的摄像头图层在展示窗口的位置和大小,根据调整后的摄像头图层在展示窗口的位置和大小,展示窗口当前展示的直播内容的预览画面在展示窗口的位置和大小,展示窗口的分辨率,以及合成分辨率,确定该调整后的摄像头图层,以及展示窗口当前展示的直播内容的预览画面的合成大小,并进而将其合成到第三画布中后,将该第三画布发送到服务端,由服务端将该第三画布广播到主播客户端所在的频道的所有观众客户端,其中,观众客户端侧看到的画面可以如图3D所示。
进一步地,本发明实施例中,当主播客户端根据接收到的图层添加指令在展示窗口中添加对应的图层之后,还可以编辑展示窗口中当前展示的直播内容的预览画面,所添加的图层的图层关系。
举例来说,参见图3E,假设主播用户在展示窗口中增加了一个文字图层(如图3E中标记f所示)和一个摄像头图层(如图3E中标记g所示),主播用户可以通过点击指定的功能按钮,触发主播客户端进入图层关系编辑功能界面(如图3E中标记h所示),主播用户在选中该功能界面中的某一个图层(文字图层、摄像头图层、或游戏图层(即展示窗口中当前展示的直播内容的预览画面)),并通过点击该功能界面中的“上移”(如图3E中标记i所示)或“下移”(如图3E中标记j所示),改变该图层与其它图层之间的图层关系。假设图层关系编辑之后,从上到下图层分别为文字图层(即“你好,世界”)、游戏图层、摄像头图层,其示意图可以参见图3F,则观众客户端侧看到的画面可以如图3G所示,其中,游戏图层的一部分被文字图层所覆盖,摄像头图层的一部分被游戏图层所覆盖。
需要注意的是,以游戏直播为例,本发明实施例中所描述的展示窗口中当前展示的直播内容的预览画面特指游戏图层,而并不包括在展示窗口中添加的图层(如摄像头图层、文字图层、图片图层等),但是展示窗口中的所有内容,包括游戏图层,以及在展示窗口中添加的摄像头图层、文字图层、图片图层等图层,都会向主播客户端所在的频道内的所有观众客户端实时直播。
在图3所描述的方法流程中,主播用户通过主播客户端进行在线直播时,除了可以对展示窗口中展示的直播内容的预览画面进行编辑之外,还可以在展示窗口中添加图层,并对添加的图层进行编辑,且主播用户在直播内容中添加图层、对图层的编辑操作可以通过服务端实时广播到主播客户端所在的频道内的所有观众客户端,在提高在线直播的灵活性的同时,进一步增加了直播的互动性。
基于图1所示的网络构架,本发明实施例提供了的另一种在线直播方法。如图4所示,为本发明实施例提供的另一种在线直播方法的流程示意图,可以包括以下步骤:
步骤401、获取直播内容,并在展示窗口展示该直播内容的预览画面。
本发明实施例中,获取直播内容的方式可以包括但不限于以下方式:
通过进程捕捉的方式获取直播内容;或,
通过桌面捕捉的方式获取直播内容;或,
通过摄像头获取直播内容。
具体的,当用户(主播用户)登陆主播客户端之后,可以选择获取直播内容的方式,即直播模式。主播客户端可以根据主播用户的选择指令确定获取直播内容的方式。
举例来说,以游戏直播为例,假设主播用户选择的直播模式为通过进程捕捉的方式获取直播内容(可以简称为“进程直播”),主播客户端检测到主播用户的选择指令后,可以直接从游戏的进程读取画面进行直播。
又举例来说,假设主播用户选择的直播模式为通过桌面捕捉的方式获取直播内容(可以简称为“桌面捕捉”),主播客户端检测到主播用户的选择指令后,可以在主播用户登陆主播客户端的终端(如PC(Personal Computer,个人计算机))的显示屏中显示一个选择框,主播用户可以通过移动选择框(如通过鼠标拖拽该选择框)来选择需要主播的内容(选择框中包括的内容即为直播内容)。
再举例来说,假设主播用户选择的直播模式为通过摄像头获取直播内容(可以简称为“摄像头模式”),主播客户端检测到主播用户的选择指令后,可以通过摄像头获取直播内容。
本发明实施例中,主播客户端获取到直播内容时,可以在主播客户端的展示窗口中展示直播内容的预览画面。
举例来说,以通过“进程直播”模式进行游戏直播为例。参见图2A,假设主播用户想要直播游戏“MEGAMAN X8(洛克人X8)”,主播用户登陆主播客户端后,可以打开游戏“MEGAMAN X8”,此时,游戏“MEGAMAN X8”主界面的指定区域(如图2A中所示的游戏画面的左上角)中会展示直播工具条,该工具条中至少可以包括“直播”功能按钮(即图2A中所示的工具条中左起第一个功能按钮),主播用户可以通过点击该“直播”功能按钮触发主播客户端进行在线直播。主播客户端检测到用户点击“直播”功能按钮的操作时,可以获取游戏画面(即直播内容),并在展示窗口展示该直播内容的预览画面。其中,主播客户端在展示窗口展示的直播内容的预览画面与观众客户端进入主播客户端所在的频道后接收到的直播内容一致。
步骤402、当检测到合成分辨率调整指令时,获取调整后的合成分辨率。
步骤403、根据展示窗口中当前展示的直播内容的预览画面在展示窗口的位置和大小,展示窗口分辨率,以及调整后的合成分辨率,确定展示窗口中当前展示的直播内容的预览画面的合成位置和大小。
本发明实施例中,主播用户通过主播客户端进行在线直播时,可以对合成分辨率进行调整。
当主播客户端检测到合成分辨率调整指令时,可以获取调整后的合成分辨率,并根据展示窗口中当前展示的直播内容的预览画面在展示窗口的位置和大小,展示窗口分辨率,以及调整后的合成分辨率,确定展示窗口中当前展示的直播内容的预览画面的合成位置和大小。
其中,主播客户端根据展示窗口中当前展示的直播内容的预览画面在展示窗口的位置和大小,展示窗口分辨率,以及调整后的合成分辨率,确定展示窗口中当前展示的直播内容的预览画面的合成位置和大小的具体实现,可以参见图2所描述的方法流程中,确定编辑后的预览画面的合成位置和大小的处理流程,其具体实现在此不再赘述。
步骤404、根据展示窗口中当前展示的直播内容的预览画面的合成位置和大小,将展示窗口中当前展示的直播内容的预览画面合成到第四画布中,第四画布的分辨率与调整后的合成分辨率一致。
本发明实施例中,主播客户端根据展示窗口中当前展示的直播内容的预览画面在展示窗口的位置和大小,展示窗口分辨率,以及调整后的合成分辨率,确定展示窗口中当前展示的直播内容的预览画面的合成位置和大小之后,可以根据展示窗口中当前展示的直播内容的预览画面的合成位置和大小,将展示窗口中当前展示的直播内容的预览画面合成到画布(第四画布)中。其中,第四画布的分辨率与调整后的合成分辨率一致。
其中,主播客户端根据展示窗口中当前展示的直播内容的预览画面的合成位置和大小,将展示窗口中当前展示的直播内容的预览画面合成到画布中的具体实现,可以参见图2所描述的方法流程中根据编辑后的预览画面的合成位置和大小将编辑后的预览画面合成到画布中的处理流程,其具体实现在此不再赘述。
步骤405、将第四画布发送给服务端,以使服务端将第四画布广播至发送方所在的频道内的所有观众客户端。
本发明实施例中,主播客户端根据展示窗口中当前展示的直播内容的预览画面的合成位置和大小,将展示窗口中当前展示的直播内容的预览画面合成到第四画布中后,可以将该第四画布发送给服务端;服务端接收到该第四画布后,可以将该第四画布广播到该主播客户端所在的频道内的所有观众客户端。
通过以上描述可以看出,在本发明实施例提供的技术方案中,检测到针对预览画面的编辑指令时,会根据编辑后的预览画面在展示窗口中的位置和大小,展示窗口分辨率,以及合成分辨率,将编辑后的预览画面合成到分辨率与合成分辨率一致的画布中,并将该画布通过服务端广播给相应频道内的所有观众客户端,从而,不仅可以实现了主播用户在直播过程中对直播内容的编辑,提高在线直播的灵活性还可以将主播用户对直播内容的编辑实时反映到观众客户端中,即观众客户端可以实时观看到主播用户对直播内容的编辑操作。
基于上述方法实施例相同的技术构思,本发明实施例还提供了一种客户端,可以应用于上述方法实施例。
如图5所示,为本发明实施例提供的一种客户端的结构示意图,可以包括:
获取模块501,用于获取直播内容;
展示模块502,用于在展示窗口中展示直播内容的预览画面;
检测模块503,用于检测针对所述主播内容的预览画面的编辑指令;
第一确定模块504,用于当所述检测模块503检测到针对所述直播内容的预览画面的编辑指令时,根据所述编辑指令确定编辑后的预览画面在所述展示窗口中的位置和大小;所述编辑指令包括针对所述预览画面的位置和/或大小的调整指令;
第二确定模块505,用于根据所述编辑后的预览画面在所述展示窗口中的位置和大小、展示窗口分辨率,以及合成分辨率,确定所述编辑后的预览画面的合成位置和大小;
合成模块506,用于根据所述编辑后的预览画面的合成位置和大小将所述编辑后的预览画面合成到第一画布中,所述第一画布的分辨率与所述合成分辨率一致;
发送模块507,用于将所述第一画布发送给服务端,以使所述服务端将所述第一画布广播至发送方所在的频道内的所有观众客户端。
在可选实施例中,所述获取模块501,可以用于通过进程捕捉的方式获取直播内容;或,通过桌面捕捉的方式获取直播内容;或,通过摄像头获取直播内容。
请一并参阅图6,图6是本发明实施例公开的另一种客户端的结构示意图。其中,图6所示的客户端是由图5所示的客户端进行优化得到的,与图5所示的客户端相比,图6所示的客户端中,第一确定模块504可以包括:
第一确定单元5041,根据所述展示窗口分辨率,以及所述合成分辨率,确定水平比例,以及垂直比例;
第二确定单元5042,根据所述编辑后的预览画面在所述展示窗口中的位置和大小,所述水平比例,以及所述垂直比例,确定所述编辑后的预览画面的合成位置和大小。
在可选实施例中,所述检测模块503,还可以用于检测图层编辑指令;
所述第一确定模块504,还可以用于当所述检测模块检测到图层编辑指令时,根据所述图层编辑指令确定编辑后的图层在所述展示窗口中的位置和大小;所述编辑指令包括针对所述图层的位置和/或大小的调整指令;
所述第二确定模块505,还可以用于根据所述编辑后的图层在所述展示窗口中的位置和大小、所述展示窗口当前展示的所述直播内容的预览画面在所述展示窗口中的位置和大小,所述展示窗口分辨率,以及所述合成分辨率,分别确定所述编辑后的图层的合成位置和大小,以及所述展示窗口当前展示的所述直播内容的预览画面的合成位置和大小;
所述合成模块506,还可以用于根据所述编辑后的图层的合成位置和大小将所述编辑后的图层,以及所述展示窗口当前展示的所述直播内容的预览画面的合成位置和大小,将所述编辑后的图层,以及所述展示窗口展示的所述直播内容的预览画面合成到第三画布中,所述第三画布的分辨率与所述合成分辨率一致;
所述发送模块507,还可以用于将所述第三画布发送给服务端,以使所述服务端将所述第三画布广播至发送方所在的频道内的所有观众客户端。
在可选实施例中,所述图层包括以下之一或多个:
摄像头图层、文字图层、或图片图层。
在可选实施例中,所述检测模块503,还可以用于检测图层添加指令;
相应地,请一并参阅图7,图7是本发明实施例公开的另一种客户端的结构示意图。其中,图7所示的客户端是由图5所示的客户端进行优化得到的,与图5所示的客户端相比,图7所示的客户端还可以包括:
添加模块508,用于当所述检测模块503检测到图层添加指令时,根据所述图层添加指令在所述展示窗口中添加对应的图层;
相应地,所述第二确定模块505,还可以用于根据所述图层在所述展示窗口中的位置和大小、所述展示窗口当前展示的所述直播内容的预览画面在所述展示窗口中的位置和大小,所述展示窗口分辨率,以及所述合成分辨率,分别确定所述图层的合成位置和大小,以及所述展示窗口当前展示的所述直播内容的预览画面的合成位置和大小;
所述合成模块506,还可以用于根据所述图层的合成位置和大小,以及所述展示窗口当前展示的所述直播内容的预览画面的合成位置和大小,将所述图层,以及所述展示窗口展示的所述直播内容的预览画面合成到第二画布中,所述第二画布的分辨率与所述合成分辨率一致;
所述发送模块507,还可以用于将所述第二画布发送给服务端,以使所述服务端将所述第二画布广播至发送方所在的频道内的所有观众客户端。
在可选实施例中,所述检测模块503,还用于检测合成分辨率调整指令;
相应地,请一并参阅图8,图8是本发明实施例公开的另一种客户端的结构示意图。其中,图8所示的客户端是由图5所示的客户端进行优化得到的,与图5所示的客户端相比,图8所示的客户端还可以包括:
第三确定模块509,用于当所述检测模块检测到合成分辨率调整指令时,确定调整后的合成分辨率;
所述第二确定模块505,还可以用于根据所述展示窗口中当前展示的所述直播内容的预览画面在所述展示窗口的位置和大小,所述展示窗口分辨率,以及所述调整后的合成分辨率,确定所述展示窗口中当前展示的所述直播内容的预览画面的合成位置和大小;
所述合成模块506,还可以用于根据所述展示窗口中当前展示的所述直播内容的预览画面的合成位置和大小,将所述展示窗口中当前展示的所述直播内容的预览画面合成到第四画布中,所述第四画布的分辨率与所述调整后的合成分辨率一致;
所述发送模块507,还可以用于将所述第四画布发送给服务端,以使所述服务端将所述第四画布广播至发送方所在的频道内的所有观众客户端。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。