本申请涉及网络直播领域,尤其涉及视频直播方法及装置。
背景技术:
网络直播技术是一种服务端将主播用户的直播视频数据广播至多个观众用户进行观看的互联网技术。观众用户进入主播用户创建的直播频道后,可以观看主播用户上传的视频。目前,观众用户在观看直播视频时,如果直播视频是在横屏模式下采集的视频,则观众用户必须将观众端切换到横屏模式才能全屏观看直播视频;如果直播视频是在竖屏模式下采集的视频,则观众用户必须将观众端切换到竖屏模式才能全屏观看直播视频,否则观众端的屏幕中仅有部分区域显示视频画面,无法全屏展示。
技术实现要素:
为克服相关技术中存在的问题,本公开提供了视频直播方法及装置。
根据本公开实施例的第一方面,提供一种视频直播方法,所述方法包括:
接收主播端上传的视频数据;
确定所述主播端的屏幕显示模式,所述屏幕显示模式包括横屏模式和竖屏模式;
根据所述主播端的屏幕显示模式,将所述视频数据裁剪为与所述主播端的屏幕显示模式不同的另一种屏幕显示模式的视频数据;
确定观众端的屏幕显示模式;
若所述观众端的屏幕显示模式与所述主播端的屏幕显示模式不同,则根据裁剪后的视频数据向所述观众端进行数据发送。
根据本公开实施例的第二方面,提供一种视频直播装置,所述装置包括:
数据接收模块,用于接收主播端上传的视频数据;
主播端模式确定模块,用于确定所述主播端的屏幕显示模式,所述屏幕显示模式包括横屏模式和竖屏模式;
数据裁剪模块,用于根据所述主播端的屏幕显示模式,将所述视频数据裁剪为与所述主播端的屏幕显示模式不同的另一种屏幕显示模式的视频数据;
观众端模式确定模块,用于确定观众端的屏幕显示模式;
数据发送模块,用于若所述观众端的屏幕显示模式与所述主播端的屏幕显示模式不同,则根据裁剪后的视频数据向所述观众端进行数据发送。
本公开的实施例提供的技术方案可以包括以下有益效果:
应用本公开方案,可以接收主播端上传的视频数据,确定主播端的屏幕显示模式,并根据主播的屏幕显示模式,将视频数据剪裁为与主播端的屏幕显示模式不同的另一种屏幕显示模式的视频数据,在确定观众端的屏幕显示模式后,如果观众端的屏幕显示模式与主播端的屏幕显示模式不同,则根据裁剪后的视频数据向观众端进行数据发送,由于裁剪后的视频数据是与主播端的屏幕显示模式不同的另一种屏幕显示模式的视频数据,又由于屏幕显示模式包括两种显示模式,则与主播端的屏幕显示模式不同的另一种屏幕显示模式即为观众端的屏幕显示模式,因此可以实现观众端全屏展示视频,提高用户体验。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1A是本公开根据一示例性实施例示出的一种直播网络架构示意图。
图1B是相关技术中其中一种展示视频的示意图。
图1C是相关技术中另一种展示视频的示意图。
图2A是本公开根据一示例性实施例示出的一种视频直播方法的流程图。
图2B是本公开根据一示例性实施例示出的一种提醒信息示意图。
图3A是本公开根据一示例性实施例示出的一种视频直播方法的时序图。
图3B是本公开根据一示例性实施例示出的一种应用场景图。
图3C是本公开根据一示例性实施例示出的另一种应用场景图。
图4是本公开根据一示例性实施例示出的一种视频直播装置的框图。
图5是本公开视频直播装置所在服务端的一种硬件结构图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
为了更好理解本发明所公开的视频直播方法及装置,先对本公开实施例使用的直播网络架构进行说明。如图1A所示,图1A是本公开根据一示例性实施例示出的一种直播网络架构示意图。该直播网络架构可以包括服务端及多个终端。其中,服务端可以称为后台服务器、组件服务器等,用于提供网络直播的后台服务。服务端可以包括服务器、服务器集群或者云平台等。终端可以是具有网络直播功能的智能终端,例如,智能终端可以是计算机、智能手机、平板电脑、PDA(Personal Digital Assistant,个人数字助理)、多媒体播放器、可穿戴设备等等。
图1A中,可以在终端中安装客户端应用,服务端向各客户端应用提供直播服务。例如,用户可以使用终端安装直播客户端应用,通过该直播客户端应用获得服务端所提供的直播服务,也可以使用终端安装浏览器客户端应用,通过浏览器客户端应用登录服务器所提供的直播页面,获得直播服务。通常,直播过程中涉及两类用户,一类用户为主播用户,另一类用户为观众用户,基于此,可以将终端分为主播端和观众端。客户端应用可以提供有主播直播功能和直播收看功能,主播用户可以使用客户端应用提供的主播直播功能进行视频直播,观众用户可以使用客户端应用提供的直播收看功能收看视频内容。例如,安装有客户端应用的主播端可以开启主播端的视频拍摄模块,通过视频拍摄模块实时采集视频数据,并发送给服务端,服务端将所接收的视频数据广播给安装有客户端应用的观众端,而观众用户可以使用客户端应用提供的收看功能观看主播用户的直播内容。
相关技术中,观众用户在观看直播视频时,如果视频数据是在横屏模式下采集的数据,则观众用户必须将观众端切换到横屏模式才能全屏观看直播视频,否则观众端的屏幕中仅有部分区域显示视频画面。如图1B所示,图1B是相关技术中其中一种展示视频的示意图。可见,主播端在横屏模式下采集视频数据,观众端竖屏观看该视频数据,由于横屏模式下采集的视频数据的尺寸与观众端竖屏模式下可播放视频的尺寸不符合,为了避免竖向拉伸导致视频图像变形,所以观众端的屏幕中仅上面区域显示视频画面,无法实现全屏展示视频。如果视频数据是在竖屏模式下采集的数据,则观众用户必须将观众端切换到竖屏模式才能全屏观看直播视频,否则观众端的屏幕中仅有部分区域显示视频画面。如图1C所示,图1C是相关技术中另一种展示视频的示意图。可见,由于竖屏模式下采集的视频数据的尺寸与观众端横屏模式下可播放视频的尺寸不符合,为了避免横向拉伸导致视频图像变形,所以观众端的屏幕中仅中间区域显示视频画面,无法实现全屏展示视频。
为了避免相关技术中无法全屏展示视频的缺陷,本公开提供一种视频直播方法,可以应用于如图1A所示的直播网络架构中,通过服务端剪裁主播端上传的视频数据,保证视频质量的同时,实现观众端能全屏展示视频,给用户带来了便利。以下对本公开所提供的方案进行详细说明。
如图2A所示,图2A是本公开根据一示例性实施例示出的一种视频直播方法的流程图,所述方法可以应用在服务端中,所述方法包括步骤201至步骤205:
在步骤201中,接收主播端上传的视频数据。
在步骤202中,确定所述主播端的屏幕显示模式,所述屏幕显示模式包括横屏模式和竖屏模式。
在步骤203中,根据所述主播端的屏幕显示模式,将所述视频数据裁剪为与所述主播端的屏幕显示模式不同的另一种屏幕显示模式的视频数据。
在步骤204中,确定观众端的屏幕显示模式。
在步骤205中,若所述观众端的屏幕显示模式与所述主播端的屏幕显示模式不同,则根据裁剪后的视频数据向所述观众端进行数据发送。
主播端和观众端均是安装有客户端应用的终端,例如,可以是智能手机、计算机、平板电脑等电子设备。客户端应用可以提供有主播直播功能和直播收看功能,主播用户可以使用主播端上的客户端应用提供的主播直播功能进行视频直播,观众用户可以使用观众端上的客户端应用提供的直播收看功能收看视频内容。
关于步骤201,主播用户通过主播端上的客户端进入直播频道后,可以向服务端上传视频数据。服务端可以接收主播端上传的视频数据。
关于步骤202,可以确定该主播端的屏幕显示模式。其中,屏幕显示模式是显示视频时终端所采用的屏幕模式,屏幕显示模式可以包括横屏模式和竖屏模式。在横屏模式下,屏幕的宽比高长。在竖屏模式下,屏幕的宽比高短。
其中,步骤201和步骤202没有绝对的先后顺序,可以是接收到主播端上传的视频数据后,才确定主播端的屏幕显示模式,也可以是先确定主播端的屏幕显示模式,再接收主播端上传的视频数据。
针对如何确定主播端的屏幕显示模式,以下列举其中几种方式进行说明:
第一种方式:接收所述主播端上传的用于表示主播端的屏幕显示模式的第一标识,根据所述第一标识确定所述主播端的屏幕显示模式。
在该方式中,可以通过第一标识表示主播端的屏幕显示模式。第一标识可以自由配置,例如通过1表示主播端的横屏模式,通过0表示主播端的竖屏模式等。由于第一标识是用于表示主播端的屏幕显示模式的标识,因此可以直接根据第一标识确定主播端的屏幕显示模式。
其中,主播端将第一标识发送给服务端的时机也可以根据需求配置。在一个例子中,可以在主播用户通过主播端的客户端进入直播频道时,将第一标识发送至服务端。例如,通过进入直播频道的请求携带第一标识,此种情况即为先确定主播端的屏幕显示模式,再接收主播端上传的视频数据。在另一个例子中,也可以是主播端将视频数据发送至服务端时,将第一标识发送至服务端,此种情况属于先接收主播端上传的视频数据,再确定主播端的屏幕显示模式。例如,在主播用户播放过程中,可以切换主播端的屏幕显示模式,则可以在切换显示模式时将第一标识发送至服务端。
主播端可以通过多种方式确定本终端的屏幕显示模式。例如,如果主播端设置有重力感应模块,则可以通过重力感应模块确定主播端当前的屏幕显示模式;又如,如果主播端为计算机时,则可以根据计算机的配置信息确定主播端的屏幕显示模式;又如,主播端可以输出提醒用户选择屏幕显示模式的提示信息,则根据用户触发的命令确定主播端的屏幕显示模式等等。
可见,本方式通过主播端上传的第一标识可以快速确定主播端的屏幕显示模式,效率快,且准确性高。
第二种方式:根据所述视频数据的分辨率确定所述主播端的屏幕显示模式。
此种方式属于先接收主播端上传的视频数据,再确定主播端的屏幕显示模式。
在接收到视频数据后,可以根据视频数据中的分辨率确定主播端的屏幕显示模式。根据分辨率将水平方向上的像素点数量和垂直方向上的像素点数量进行比较,如果水平方向上的像素点数量大于垂直方向上的像素点,则可以判定主播端的屏幕显示模式为横屏模式,如果水平方向上的像素点数量小于垂直方向上的像素点,则可以判定主播端的屏幕显示模式为竖屏模式。例如,如果视频数据的分辨率为1024*576,则主播端处于横屏模式,如果视频数据的分辨率为600*800,则主播端处于竖屏模式。
可见,本方式可以直接根据视频数据的分辨率确定主播端的屏幕显示模式,无需主播端额外发送其他数据,减轻数据传输的负担。
可以理解的是,确定主播端的屏幕显示模式还可以采用其他方式,本公开仅列举其中两种进行示例说明,针对其他方式在此不再一一赘述。
关于步骤203,将视频数据进行裁剪的时机也可以有多种。在一个例子中,可以在确定观众端的屏幕显示模式与主播端的屏幕显示模式不同时,才将视频数据进行裁剪。在另一个例子中,为了确保能实现数据的快速处理,以便快速直播视频,可以在接收到主播端上传的视频数据后就将视频数据进行裁剪。在一个例子中,步骤201至205可以通过同一类服务器执行。在另一个例子中,为了有效降低服务器负载压力,步骤201、202、204和205采用一类服务器执行,步骤203可以通过新增的裁剪服务器执行。
由于屏幕显示模式包括横屏模式和竖屏模式,因此根据所述主播端的屏幕显示模式,将所述视频数据裁剪为与所述主播端的屏幕显示模式不同的另一种屏幕显示模式的视频数据,可以包括:如果主播端的屏幕显示模式为横屏模式,则将视频数据裁剪为竖屏模式的视频数据;如果主播端的屏幕显示模式为竖屏模式,则将视频数据裁剪为横屏模式的视频数据。例如,可以通过保留中间区域数据、去除左右两边数据的方式,实现将横屏模式的视频数据剪裁为竖屏模式的视频数据;又如,可以通过保留中间区域数据、去除上下两边数据的方式,实现将竖屏模式的视频数据剪裁为横屏模式的视频数据。
其中,横屏模式的视频数据能在终端的横屏模式下全屏展示,竖屏模式的视频数据能在终端的竖屏模式下全屏展示。
将视频数据裁剪的目的是,保证服务端中既有适应于横屏模式的视频数据,又有适应于竖屏模式的视频数据,从而可以实现不管观众端处于何种屏幕显示模式,观众端均能全屏展示视频。
在一个可选的实现方式中,步骤203可以包括:
根据预存的屏幕显示模式与裁剪区域信息的对应关系、以及所述主播端的屏幕显示模式,确定目标裁剪区域信息,所述目标裁剪区域信息满足:利用所述目标裁剪区域信息,能将所述视频数据裁剪为与所述主播端的屏幕显示模式不同的另一种屏幕显示模式的视频数据;
根据所述目标裁剪区域信息对所述视频数据进行裁剪。
在该例子中,服务端中可以预存有屏幕显示模式与裁剪区域信息的对应关系。
在一个例子中,对应关系可以是:横屏模式对应横屏裁剪区域信息,竖屏模式对应竖屏裁剪区域信息。所述横屏裁剪区域信息是指能裁剪为横屏模式的视频数据的裁剪区域信息,所述竖屏裁剪区域信息是指能裁剪为竖屏模式的视频数据的裁剪区域信息。基于此,可以根据预存的屏幕显示模式与裁剪区域信息的对应关系,将与所述主播端的屏幕显示模式不同的另一种屏幕显示模式对应的裁剪区域信息,确定为目标裁剪区域信息。
在另一个例子中,对应关系可以是:横屏模式对应竖屏裁剪区域信息,竖屏模式对应横屏裁剪区域信息。基于此,可以根据预存的屏幕显示模式与裁剪区域信息的对应关系,将所述主播端的屏幕显示模式对应的裁剪区域信息确定为目标裁剪区域信息。
裁剪区域信息是用来确定裁剪区域的信息,以便根据裁剪区域对视频数据进行裁剪。在一个例子中,裁剪区域信息可包括裁剪尺寸和裁剪位置。裁剪位置可以是作为裁剪起始点的像素点,也可以是裁剪区域相对于屏幕的位置关系(例如中间区域、左边区域、右边区域)等。裁剪尺寸可以是裁剪数据的宽高比例。可见,可以通过裁剪尺寸和裁剪位置确定裁剪区域,进而根据裁剪区域进行裁剪,获得裁剪后的视频数据。如,针对分辨率为800*600的视频数据,如果裁剪尺寸为3:4,裁剪位置为中间区域,则可以从像素点(175,0)的位置开始剪裁,去除左右两边的视频数据,获得分辨率为450*600的视频数据。
进一步的,所述方法还包括:将所述对应关系发送至所述主播端,以使所述主播端根据所述主播端的屏幕显示模式以及所述对应关系确定所述目标裁剪区域信息,并根据所述目标裁剪区域信息确定的裁剪区域,输出提醒信息,所述提醒信息用于提醒所述主播用户所述裁剪区域在所述主播端的屏幕中的位置。
服务端将对应关系发送至主播端的时机,可以是在服务端接收到主播端上传的视频数据之前。为了避免多次传输数据,服务端将该对应关系发送至主播端,主播端可以将该对应关系进行存储。在对应关系有变更时,可以将变更后的对应关系主动推送至主播端。例如,在主播用户第一次通过主播端上的客户端登录直播频道时,服务端可以将对应关系发送至主播端,此后,如果对应关系没有变更,不再发送对应关系。
主播端输出提醒信息的时间,可以是主播用户通过主播端上的客户端向服务端发送进入直播频道的请求时,也可以是接收到通过用户点击“我的直播”按钮触发的命令时,在此不一一赘述。
针对主播端输出提醒信息,主播端可以根据所述主播端的屏幕显示模式以及所述对应关系确定所述目标裁剪区域信息,并根据所述目标裁剪区域信息确定的裁剪区域,输出提醒信息,所述提醒信息用于提醒所述主播用户所述裁剪区域在主播端屏幕中的位置。提醒主播用户的目的是:提醒主播用户尽量将重要的画面落到裁剪区域内。所述重要的画面根据具体直播内容而定,例如直播内容为主播用户唱歌,则重要的画面可以是指包含主播用户的画面。参见图2B所示,图2B是本公开根据一示例性实施例示出的一种提醒信息示意图。在该示意图中,主播端可以通过一个虚线框的方式提醒用户裁剪区域所在位置,并输出文字信息:请将重要画面保持在虚线框内。可见,可以将屏幕显示模式与裁剪区域信息的对应关系发送至主播端,主播端确定出裁剪区域,并提醒主播将主播主体落在剪裁区域,从而实现剪裁的数据中包括主播画面数据。
提醒信息的显示时间可以是持续显示;也可以是每间隔一定时间显示;还可以是显示预设时间后隐藏,在用户触发提醒信息查看按钮时,再次显示提醒信息,具体不做限定。
在另一个可选的实现方式中,步骤202可以包括:
接收所述主播端上传的目标裁剪区域信息,所述目标裁剪区域信息满足:利用所述目标裁剪区域信息,能将所述视频数据裁剪为与所述主播端的屏幕显示模式不同的另一种屏幕显示模式的视频数据;
根据所接收的目标裁剪区域信息对所述视频数据进行裁剪。
在主播端,主播用户可以自行设定裁剪区域,从而根据设定的裁剪区域将目标裁剪区域信息发送至服务端。目标裁剪区域信息满足:利用所述目标裁剪区域信息,能将所述视频数据裁剪为与所述主播端的屏幕显示模式不同的另一种屏幕显示模式的视频数据。具体的,当主播端的屏幕显示模式为横屏显示模式时,主播用户自行设定的裁剪区域的尺寸符合竖屏模式播放视频的尺寸,利用该目标裁剪区域信息可以将视频数据裁剪为竖屏模式的视频数据。当主播端的屏幕显示模式为竖屏显示模式时,主播用户自行设定的裁剪区域的尺寸符合横屏模式播放视频的尺寸,利用该目标裁剪区域信息可以将视频数据裁剪为横屏模式的视频数据。
在接收到目标裁剪区域信息后,根据所接收的目标裁剪区域信息对所述视频数据进行裁剪。其中,可以通过裁剪服务器进行裁剪。具体如何裁剪可以采用相关技术中的方法,在此不再一一赘述。
可见,主播用户可以根据画面的重要程度自行设定裁剪区域,例如,裁剪区域是包括主播画面的区域,从而实现剪裁的数据中包括主播画面数据。
除了上述通过目标剪裁区域信息确定剪裁区域的方式,还可以在收到视频数据后,利用人物识别的方式确定出包含有主播画面数据的剪裁区域,从而对视频数据进行剪裁。针对剪裁区域的确定方式,还可以采用其他方式,在此不再一一赘述。
关于步骤204,确定观众端的屏幕显示模式的时机,可以是接收到观众端发送的进入直播频道的请求时,也可以是接收到登录观众端上的直播客户端的请求时,还可以是接收到用于表示观众端的屏幕显示模式的第二标识时,具体时机不做限定。
确定观众端的屏幕显示模式方法有很多种,以下列举其中几种进行说明。
第一种方式:接收观众端发送的用于表示所述观众端的屏幕显示模式的第二标识;根据所述第二标识确定所述观众端的屏幕显示模式。
在该方式中,可以通过第二标识表示观众端的屏幕显示模式。第二标识可以自由配置,例如通过1表示观众端的横屏模式,通过0表示观众端的竖屏模式等。由于第二标识是用于表示观众端的屏幕显示模式的标识,因此可以直接根据第二标识确定主播端的屏幕显示模式。
其中,主播端将第二标识发送给服务端的时机也可以根据需求配置,例如,所述第二标识是所述观众端在满足预设的标识发送条件时发送的标识。
所述标识发送条件可以是下述其中一种条件:
第一种条件:请求登录所述观众端上的直播客户端。
针对这种情况,主播端可以将第二标识携带在登录直播客户端的请求中。
第二种条件:请求进入主播用户创建的直播频道。
针对这种情况,主播端可以将第二标识携带至进入直播频道的请求中。
第三种条件:检测到屏幕显示模式的切换命令。
观众用户在观看直播视频的过程中,可以切换屏幕显示模式。例如,可以通过重力感应的方式触发屏幕显示模式的切换命令,也可以通过观众点击切换按钮的方式触发屏幕显示模式的切换命令等。可见,在播放过程中进行屏幕显示模式的切换,并在检测到屏幕显示模式的切换命令后,将第二标识发送至服务端,服务端根据第二标识确定观众端的屏幕显示模式,如果观众端的屏幕显示模式与主播端的屏幕显示模式不同,则根据裁剪后的视频数据向观众端进行数据发送;如果观众端的屏幕显示模式与主播端的屏幕显示模式相同,则直接将视频数据发送至观众端进行展示,从而实现观众端切换屏幕显示模式后仍能全屏观看视频,提高用户体验。
观众端可以通过多种方式确定本终端的屏幕显示模式。例如,如果观众端设置有重力感应模块,则可以通过重力感应模块确定主播端的屏幕显示模式;又如,如果观众端为计算机时,则可以根据计算机的配置信息确定主播端的屏幕显示模式;又如,观众端可以输出提醒用户选择屏幕显示模式的提示信息,根据用户触发的命令确定观众端的屏幕显示模式;又如,根据屏幕显示模式的切换命令确定观众端的屏幕显示模式等等。
可见,本方式通过观众端上传的第二标识可以快速确定观众端的屏幕显示模式,效率快,且准确性高。
关于步骤205,如果所述观众端的屏幕显示模式与所述主播端的屏幕显示模式不同,则根据裁剪后的视频数据向所述观众端进行数据发送。如果所述观众端的屏幕显示模式与所述主播端的屏幕显示模式相同,则直接将视频数据发送至观众端进行展示。
在一个例子中,若所述观众端的屏幕显示模式与所述主播端的屏幕显示模式不同,则直接将裁剪后的视频数据发送至所述观众端进行展示。
可见,直接将裁剪后的视频数据发送至所述观众端进行展示,可以提高展示效率。
在另一个例子中,所述确定观众端的屏幕显示模式时,还包括确定观众端的终端信息,所述终端信息至少包括终端分辨率。
所述根据裁剪后的视频数据向所述观众端进行数据发送,包括:
根据裁剪后的视频数据的分辨率与所述终端分辨率,判断裁剪后的视频数据的宽高比例与观众端屏幕的宽高比例是否相同。
如果裁剪后的视频数据的宽高比例与观众端屏幕的宽高比例不同,则对裁剪后的视频数据进行编辑处理,以使编辑处理后的视频数据的宽高比例与观众端屏幕的宽高比例相同,并将编辑处理后的视频数据发送至所述观众端进行展示。
如果裁剪后的视频数据的宽高比例与观众端屏幕的宽高比例相同,则将裁剪后的视频数据发送至所述观众端进行展示。
由于裁剪后视频的宽高比例与屏幕的宽高比例可能不相同,因此,可以先确定观众端的终端信息。例如,在接收到观众端发送的第二标识时,同时接收观众端发送的终端信息。终端信息中除了包括终端分辨率,还可以包括其他信息,例如终端系统版本等,根据终端系统版本确定待发送的视频数据,在此不作限定。
针对编辑处理,在一个例子中,可以是通过增加黑边的方式达到宽高比例相同。在另一个例子中,可以进一步剪裁,实现进一步裁剪后的视频数据的宽高比例与屏幕的宽高比例相同等等。
可见,本实施例在裁剪后的视频数据的宽高比例与屏幕的宽高比例不同时,对裁剪后的视频数据进行编辑处理,以使编辑处理后的视频数据的宽高比例与屏幕的宽高比例相同,从而实现观众端全屏展示视频数据。
由上述实施例可见,本公开可以接收主播端上传的视频数据,确定主播端的屏幕显示模式,并根据主播的屏幕显示模式,将视频数据剪裁为与主播端的屏幕显示模式不同的另一种屏幕显示模式的视频数据,在确定观众端的屏幕显示模式后,如果观众端的屏幕显示模式与主播端的屏幕显示模式不同,则根据裁剪后的视频数据向观众端进行数据发送,由于裁剪后的视频数据是与主播端的屏幕显示模式不同的另一种屏幕显示模式的视频数据,又由于屏幕显示模式包括两种显示模式,则与主播端的屏幕显示模式不同的另一种屏幕显示模式即为观众端的屏幕显示模式,因此可以实现观众端全屏展示视频,提高用户体验。
以上实施方式中的各种技术特征可以任意进行组合,只要特征之间的组合不存在冲突或矛盾,但是限于篇幅,未进行一一描述,因此上述实施方式中的各种技术特征的任意进行组合也属于本说明书公开的范围。
以下列举其中一种组合进行说明。如图3A所示,图3A是本公开根据一示例性实施例示出的一种视频直播方法的时序图。所述方法包括:
1.主播端向服务端发送进入直播频道的请求,该请求中携带有第一标识,第一标识用于表示主播端的屏幕显示模式。
2.服务端根据所述第一标识确定主播端的屏幕显示模式。
3.主播端向服务端发送视频数据。
4.服务端根据主播端的屏幕显示模式,将所述视频数据裁剪为与所述主播端的屏幕显示模式不同的另一种屏幕显示模式的视频数据。
5.观众端在进入所述直播频道后,检测观众端的屏幕显示模式,将用于表示观众端的屏幕显示模式的第二标识发送至服务端。
6.服务端根据所述第二标识确定观众端的屏幕显示模式。
7.服务端判定观众端的屏幕显示模式与主播端的屏幕显示模式不同时,将裁剪后的视频数据发送至观众端。
8.观众端将裁剪后的视频数据进行展示。
为了方便理解本公开,还提供了一种应用场景图。如图3B所示,图3B是本公开根据一示例性实施例示出的一种应用场景图。图3B中,主播端可以通过一个虚线框的方式提醒用户裁剪区域所在位置,并输出文字信息:请将重要画面保持在虚线框内。主播用户可以尽量将人物画面控制在虚线框内。服务端接收到主播上传的视频数据,并确定主播的屏幕显示模式为横屏模式后,可以根据主播端的横屏模式,将视频数据裁剪为竖屏模式的视频数据。确定观众端1的屏幕显示模式为竖屏模式时,将裁剪后的视频数据发送至观众端1,确定观众端3的屏幕显示模式为横屏模式时,直接将视频数据发送至观众端3。
为了方便理解本公开,还提供另一种应用场景图。如图3C所示,图3C是本公开根据一示例性实施例示出的另一种应用场景图。图3C中,主播端是竖屏模式,可以提示用户移动虚线框,并确定裁剪区域。例如,输出“请移动虚线框以确定裁剪区域,并点击‘确定’以确认”,主播用户可以移动虚线框,尽量将人物画面控制在虚线框内,并点击确定按钮,主播端生成目标裁剪区域信息。服务端接收到主播上传的视频数据和目标裁剪区域信息,并确定主播的屏幕显示模式为竖屏模式后,可以根据主播端的竖屏模式以及目标裁剪区域信息,将视频数据裁剪为横屏模式的视频数据。确定观众端A的屏幕显示模式为竖屏模式时,直接将视频数据发送至观众端A。确定观众端C的屏幕显示模式为横屏模式时,将裁剪后的视频数据发送至观众端C,
与前述视频直播方法的实施例相对应,本公开还提供了视频直播装置及其所应用的服务端的实施例。
如图4所示,图4是本公开根据一示例性实施例示出的一种视频直播装置的框图,所述装置包括数据接收模块41、主播端模式确定模块42、数据裁剪模块43、观众端模式确定模块44和数据发送模块45。
其中,数据接收模块41,用于接收主播端上传的视频数据。
主播端模式确定模块42,用于确定所述主播端的屏幕显示模式,所述屏幕显示模式包括横屏模式和竖屏模式。
数据裁剪模块43,用于根据所述主播端的屏幕显示模式,将所述视频数据裁剪为与所述主播端的屏幕显示模式不同的另一种屏幕显示模式的视频数据。
观众端模式确定模块44,用于确定观众端的屏幕显示模式。
数据发送模块45,用于若所述观众端的屏幕显示模式与所述主播端的屏幕显示模式不同,则根据裁剪后的视频数据向所述观众端进行数据发送。
在一个可选的实现方式中,所述主播端模式确定模块42(图4未示出),包括:
第一主播端模式确定子模块,用于接收所述主播端上传的用于表示主播端的屏幕显示模式的第一标识,根据所述第一标识确定所述主播端的屏幕显示模式。
在一个可选的实现方式中,所述主播端模式确定模块42(图4未示出),包括:
第二主播端模式确定子模块,用于根据所述视频数据的分辨率确定所述主播端的屏幕显示模式。
在一个可选的实现方式中,所述数据裁剪模块43(图4未示出),包括:
区域信息确定子模块,用于根据预存的屏幕显示模式与裁剪区域信息的对应关系、以及所述主播端的屏幕显示模式,确定目标裁剪区域信息,所述目标裁剪区域信息满足:利用所述目标裁剪区域信息,能将所述视频数据裁剪为与所述主播端的屏幕显示模式不同的另一种屏幕显示模式的视频数据。
第一裁剪子模块,用于根据所述目标裁剪区域信息对所述视频数据进行裁剪。
在一个可选的实现方式中,所述数据发送模块还用于:
将所述对应关系发送至所述主播端,以使所述主播端根据所述主播端的屏幕显示模式以及所述对应关系确定所述目标裁剪区域信息,并根据所述目标裁剪区域信息确定的裁剪区域,输出提醒信息,所述提醒信息用于提醒所述主播用户所述裁剪区域在所述主播端的屏幕中的位置。
在一个可选的实现方式中,所述数据裁剪模块43(图4未示出),包括:
区域信息接收子模块,用于接收所述主播端上传的目标裁剪区域信息,所述目标裁剪区域信息满足:利用所述目标裁剪区域信息,能将所述视频数据裁剪为与所述主播端的屏幕显示模式不同的另一种屏幕显示模式的视频数据。
第二裁剪子模块,用于根据所接收的目标裁剪区域信息对所述视频数据进行裁剪。
在一个可选的实现方式中,所述观众端模式确定模块44(图4未示出),包括:
观众端模式确定子模块,用于接收观众端发送的用于表示所述观众端的屏幕显示模式的第二标识;根据所述第二标识确定所述观众端的屏幕显示模式。
在一个可选的实现方式中,所述第二标识是所述观众端在满足预设的标识发送条件时发送的标识;所述标识发送条件包括下述其中一种条件:
请求登录所述观众端上的直播客户端。
请求进入主播用户创建的直播频道。
检测到屏幕显示模式的切换命令。
在一个可选的实现方式中,所述数据发送模块45(图4未示出),包括:
第一数据发送子模块,用于若所述观众端的屏幕显示模式与所述主播端的屏幕显示模式不同,则将裁剪后的视频数据发送至所述观众端进行展示。
在一个可选的实现方式中,所述观众端模式确定模块还用于确定观众端的屏幕显示模式时,确定观众端的终端信息,所述终端信息至少包括终端分辨率。
所述数据发送模块45(图4未示出),包括第二数据发送子模块,用于:
根据裁剪后的视频数据的分辨率与所述终端分辨率,判断裁剪后的视频数据的宽高比例与观众端屏幕的宽高比例是否相同。
如果裁剪后的视频数据的宽高比例与观众端屏幕的宽高比例不同,则对裁剪后的视频数据进行编辑处理,以使编辑处理后的视频数据的宽高比例与观众端屏幕的宽高比例相同,并将编辑处理后的视频数据发送至所述观众端进行展示。
如果裁剪后的视频数据的宽高比例与观众端屏幕的宽高比例相同,则将裁剪后的视频数据发送至所述观众端进行展示。
上述装置中各个模块的功能和作用的实现过程具体详情见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
如图5所示,图5是本公开视频直播装置500所在服务端的一种硬件结构图。例如,装置500可以被提供为服务器设备。参照图5,装置500包括处理组件522,其进一步包括一个或多个处理器,以及由存储器532所代表的存储器资源,用于存储可由处理部件522的执行的指令,例如应用程序。存储器532中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件522被配置为执行指令,以执行上述视频直播方法。
装置500还可以包括一个电源组件526被配置为执行装置500的电源管理,一个有线或无线网络接口550被配置为将装置500连接到网络,和一个输入输出(I/O)接口558。装置500可以操作基于存储在存储器532的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
以上所述仅为本公开的较佳实施例而已,并不用以限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开保护的范围之内。