本公开涉及网络直播技术领域,尤其涉及一种直播视频的转码方法、装置及电子设备。
背景技术:
随着直播行业的飞速发展,越来越多类型的直播场景被挖掘出来,直播场景比如游戏直播场景、采用摄像头的直播场景,一些直播场景的特点是:直播视频流的码率高、种类多、差别大,由此,如何优化这些类型直播场景的视频流的传输成本,是直播公司的重要工作之一。
相关技术中,通常使用转码来降低视频流的传输成本,所谓的转码,是将主播推流的流媒体数据(比如主播用户在直播过程中拍摄并发送至服务端的视频等),经过数据处理,比如使用专用的转码模板,将原始的流媒体数据处理为若干份码率不同的流媒体数据。
这种方式下,如果在一次直播过程中,主播用户切换了直播类型,则已转码得到的流媒体数据的码率不能够有效地适配切换后的直播类型,从而可能会影响后续流媒体数据的传输效率。
技术实现要素:
本公开提供一种直播视频的转码方法、装置、电子设备、存储介质及计算机程序产品,以至少解决相关技术,如果在一次直播过程中,主播用户切换了直播类型,则已转码得到的流媒体数据的码率不能够有效地适配切换后的直播类型,从而可能会影响后续流媒体数据的传输效率的技术问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种直播视频的转码方法,应用于服务端,包括:获取客户端发送的切换后的直播类型;在所述切换后的直播类型与当前直播类型不同时,确定与所述切换后的直播类型对应的第一转码模板,所述第一转码模板中配置有一个或多个第一码率;根据所述第一转码模板对原始的流媒体数据进行转码处理,得到码率为所述第一码率的第一流媒体数据。
在本公开的一些实施例中,在所述获取客户端发送的切换后的直播类型前,还包括:
获取所述客户端发送的所述当前直播类型;
确定与所述当前直播类型对应的第二转码模板,所述第二转码模板中配置有一个或多个第二码率,所述第一码率和所述第二码率不相同;
根据所述第二转码模板对所述原始的流媒体数据进行转码处理,得到码率为所述第二码率的第二流媒体数据。
在本公开的一些实施例中,所述方法还包括:
在所述根据所述第一转码模板对原始的流媒体数据进行转码处理时,保留所述第二流媒体数据。
在本公开的一些实施例中,所述方法还包括:
响应于转码完成指令,生成通知消息,所述通知消息携带所述一个或多个第一码率;
将所述通知消息发送至观众用户的客户端,从而触发所述观众用户的客户端重新获取所述第一流媒体数据。
在本公开的一些实施例中,在所述获取客户端发送的切换后的直播类型前,所述方法还包括:
确定多种候选直播类型,并确定与各种所述候选直播类型的匹配码率;
根据与各种所述候选直播类型的匹配码率,生成对应的候选转码模板;
生成所述候选直播类型以及与所述候选直播类型对应的候选转码模板之间的映射关系;
则所述确定与所述切换后的直播类型对应的第一转码模板,包括:
从所述映射关系中确定与所述切换后的直播类型匹配的候选直播类型,并将与所述匹配的候选直播类型对应的候选转码模板作为所述第一转码模板。
在本公开的一些实施例中,所述方法还包括:
获取当前时间点、目标时间点,所述目标时间点为最近一次向所述客户端推送所述第二流媒体数据的时间;
如果所述当前时间点和所述目标时间点之间的时长大于或者等于设定时长阈值,则删除所述第二流媒体数据。
根据本公开实施例的第二方面,提供一种直播视频的转码方法,应用于客户端,包括:确定切换后的直播类型,所述切换后的直播类型与当前直播类型不相同;根据所述切换后的直播类型生成请求消息;将所述请求消息发送至服务端,以触发所述服务端根据与所述切换后的直播类型对应的第一转码模板对原始的流媒体数据进行转码处理。
在本公开的一些实施例中,在所述确定切换后的直播类型前,还包括:
解析所述原始的流媒体数据得到当前直播类型;
将所述当前直播类型发送至所述服务端,以触发所述服务端根据与所述当前直播类型对应的第二转码模板对所述原始的流媒体数据进行转码处理。
在本公开的一些实施例中,所述确定切换后的直播类型的步骤,包括:
响应于主播用户对预设接口的操作指令,显示候选直播类型;
响应于所述主播用户的选取指令,将所述选取指令选中的候选直播类型作为所述切换后的直播类型。
在本公开的一些实施例中,所述确定切换后的直播类型的步骤,包括:
响应于所述主播用户对所述客户端的预置组件的触发指令;
确定与所述预置组件匹配的直播类型,并将所述匹配的直播类型作为所述切换后的直播类型。
在本公开的一些实施例中,所述预置组件是摄像头组件。
根据本公开实施例的第三方面,提供一种直播视频的转码装置,应用于服务端,包括:第一获取模块,被配置为获取客户端发送的切换后的直播类型;第一确定模块,被配置为在所述切换后的直播类型与当前直播类型不同时,确定与所述切换后的直播类型对应的第一转码模板,所述第一转码模板中配置有一个或多个第一码率;转码模块,被配置为根据所述第一转码模板对原始的流媒体数据进行转码处理,得到码率为所述第一码率的第一流媒体数据。
在本公开的一些实施例中,还包括:
所述第一获取模块,被配置为在所述获取客户端发送的切换后的直播类型前,获取所述客户端发送的所述当前直播类型;
所述第一确定模块,被配置为确定与所述当前直播类型对应的第二转码模板,所述第二转码模板中配置有一个或多个第二码率,所述第一码率和所述第二码率不相同;
所述转码模块,被配置为根据所述第二转码模板对所述原始的流媒体数据进行转码处理,得到码率为所述第二码率的第二流媒体数据。
在本公开的一些实施例中,所述装置还包括:
存储模块,被配置为在所述根据所述第一转码模板对原始的流媒体数据进行转码处理时,保留所述第二流媒体数据。
在本公开的一些实施例中,所述装置还包括:
第一生成模块,被配置为响应于转码完成指令,生成通知消息,所述通知消息携带所述一个或多个第一码率;
第一发送模块,被配置为将所述通知消息发送至观众用户的客户端,从而触发所述观众用户的客户端重新获取所述第一流媒体数据。
在本公开的一些实施例中,所述装置还包括:
第二确定模块,被配置为在所述获取客户端发送的切换后的直播类型前,确定多种候选直播类型,并确定与各种所述候选直播类型的匹配码率;
第二生成模块,被配置为根据与各种所述候选直播类型的匹配码率,生成对应的候选转码模板,并生成所述候选直播类型以及与所述候选直播类型对应的候选转码模板之间的映射关系;
则所述第一确定模块,被配置为从所述映射关系中确定与所述切换后的直播类型匹配的候选直播类型,并将与所述匹配的候选直播类型对应的候选转码模板作为所述第一转码模板。
在本公开的一些实施例中,所述装置还包括:
第二获取模块,被配置为获取当前时间点、目标时间点,所述目标时间点为最近一次向所述客户端推送所述第二流媒体数据的时间;
处理模块,被配置为在所述当前时间点和所述目标时间点之间的时长大于或者等于设定时长阈值时,删除所述第二流媒体数据。
根据本公开实施例的第四方面,提供一种直播视频的转码装置,应用于客户端,包括:第三确定模块,被配置为确定切换后的直播类型,所述切换后的直播类型与当前直播类型不相同;第三生成模块,被配置为根据所述切换后的直播类型生成请求消息;第二发送模块,被配置为将所述请求消息发送至服务端,以触发所述服务端根据与所述切换后的直播类型对应的第一转码模板对原始的流媒体数据进行转码处理。
在本公开的一些实施例中,所述装置还包括:
解析模块,被配置为在所述确定切换后的直播类型前,解析所述原始的流媒体数据得到当前直播类型;
所述第二发送模块,被配置为将所述当前直播类型发送至所述服务端,以触发所述服务端根据与所述当前直播类型对应的第二转码模板对所述原始的流媒体数据进行转码处理。
在本公开的一些实施例中,所述第三确定模块,被配置为:
响应于主播用户对预设接口的操作指令,显示候选直播类型;
响应于所述主播用户的选取指令,将所述选取指令选中的候选直播类型作为所述切换后的直播类型。
在本公开的一些实施例中,所述第三确定模块,被配置为:
响应于所述主播用户对所述客户端的预置组件的触发指令;
确定与所述预置组件匹配的直播类型,并将所述匹配的直播类型作为所述切换后的直播类型。
在本公开的一些实施例中,所述预置组件是摄像头组件。
根据本公开实施例的第五方面,提供一种电子设备,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现如前所述的直播视频的转码方法。
根据本公开实施例的第六方面,提供一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如前所述的直播视频的转码方法。
根据本公开实施例的第七方面,提供一种计算机程序产品,该计算机程序由电子设备的处理器执行时,使得电子设备能够执行如前所述的直播视频的转码方法。
本公开的实施例提供的技术方案至少带来以下有益效果:通过获取客户端发送的切换后的直播类型,在切换后的直播类型与当前直播类型不同时,确定与切换后的直播类型对应的第一转码模板,第一转码模板中配置有一个或多个第一码率,以及根据第一转码模板对原始的流媒体数据进行转码处理,得到码率为第一码率的第一流媒体数据,从而能够及时地对流媒体数据进行更新,使得重新转码得到的流媒体数据的码率能够与切换后的直播类型相适配,有效保障后续流媒体数据的传输效果。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种直播视频的转码方法的流程图。
图2是根据另一示例性实施例示出的一种直播视频的转码方法的流程图。
图3是根据又一示例性实施例示出的一种直播视频的转码方法的流程图。
图4是根据再一示例性实施例示出的一种直播视频的转码方法的流程图。
图5是根据一示例性实施例示出的一种直播视频的转码装置框图。
图6是根据另一示例性实施例示出的一种直播视频的转码装置框图。
图7是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种直播视频的转码方法的流程图。
本实施例以直播视频的转码方法被配置为直播视频的转码装置中来举例说明。
本实施例中直播视频的转码方法可以被配置在直播视频的转码装置中,直播视频的转码装置可以设置在服务端中。
需要说明的是,本公开实施例的执行主体,在硬件上可以例如为服务器的中央处理器(centralprocessingunit,cpu),在软件上可以例如为服务器中的相关的后台服务,对此不作限制。
如图1所示,该直播视频的转码方法包括以下步骤:
在步骤s101中,获取客户端发送的切换后的直播类型。
其中,本公开实施例的应用场景为用户使用直播类应用程序进行视频直播的场景,也即是说,在该应用场景中,主播用户采用主播客户端(主播客户端是主播用户侧的客户端)向观众用户侧的客户端(有时也称为用户客户端)发送直播视频流,用户客户端相应的显示该直播视频流。
主播用户采用客户端向用户客户端发送直播视频流的过程,是由主播客户端将直播视频流推流(推流,既可以表示客户端将直播视频流上传至服务端的过程,也可以表示服务端将直播视频流推送至客户端的过程)至后台的服务端,由服务端相应地对直播视频流进行转码处理,服务端还可以响应于用户客户端的拉流(而拉流,是指客户端从服务端获取直播视频流的过程)指令,从而将直播视频流推流至用户客户端。
本公开实施例的执行主体为上述所描述场景中的服务端,而针对主播客户端的描述可以参见后续实施例。
本步骤中,在一次直播过程中,如果主播用户具有切换直播类型的需求,则主播客户端所属电子设备响应于主播用户的切换指令,得到切换后的直播类型。
一个实施例中,主播客户端在直播过程中当前的直播类型,可以被称为当前直播类型。
其中,直播类型用于描述直播内容的类型,直播内容比如教育、游戏、产品推销等等内容,或者,直播类型也可以用于描述直播场景的类型。
举例而言,假设直播内容为【儿歌点点】,则直播类型可以是教育类型;若直播内容为【魔兽世界】,则直播类型可以为游戏类型,游戏类型还可以进一步细化为【魔兽世界】类型或者【反恐精英】类型;若直播内容为一段广告,则相应的直播类型可以是产品推销类型。又比如从直播内容切换为通过摄像头进行直播(也即是说,直播场景产生了切换),则切换后的直播类型可以具体是切换后的场景对应的类型,切换后的直播类型比如【摄像头】直播类型,对此不做限制。
而在划分直播类型时,可以根据直播视频的分辨率、帧率、画面色彩度等去划分,或者,可以直接根据直播内容的语义进行划分等,又或者,可以直接根据直播的场景进行划分等,对此不做限制。
需要说明的是,上述的直播类型的命名不限于上面所描述,也可以采用其他标识(文字或者数值)来命名不同的直播类型,对此不做限制。
由此,切换后的直播类型或当前直播类型可以为上述示例中的直播类型的任一种,且切换后的直播类型和当前直播类型可以是不相同的直播类型,或者,也可以是相同的直播类型。
本公开实施例中,可以当前直播类型为上述的游戏类型,以切换后的直播类型为【摄像头】直播类型进行示例,对此不做限制。
本公开实施例具体是应用在一次直播过程当中,如果主播用户切换了该次直播过程的直播类型(比如由【魔兽世界】类型切换为【摄像头】直播类型),则相应地,本公开可以实现及时地通知服务端,以触发服务端根据切换后的直播类型重新对原始的流媒体数据进行转码处理,从而能够及时地对流媒体数据进行更新,使得重新转码得到的流媒体数据的码率能够与切换后的直播类型相适配,有效保障后续流媒体数据的传输效果。
在步骤s102中,在切换后的直播类型与当前直播类型不同时,确定与切换后的直播类型对应的第一转码模板,第一转码模板中配置有一个或多个第一码率。
其中,与切换后的直播类型对应的转码模板,可以被称为第一转码模板,第一转码模板中可以配置有一个第一码率,或者,也可以配置有多个第一码率,其中,第一转码模板中配置的码率,可以被称为第一码率。
在使用第一转码模板对原始的流媒体数据进行转码处理之后,可以将原始的流媒体数据处理为第一码率的流媒体数据,当第一码率为一个时,可以将原始的流媒体数据处理为一份第一码率的流媒体处理,而当第一码率为多个时,可以将原始的流媒体数据处理为多份的第一码率的流媒体数据。
其中,转码模板的说明可以如下:
由于转码作业的参数很多,每次提交转码作业时都重复填写比较麻烦,转码模板是为解决此问题而提出的概念,转码模板的本质就是把一些常用的参数组合在一起,转码模板比如包括视频转码、音频转码、转封装等各种场景,例如,“mp4-高清”、“mp3-128k”,对此不做限制。
本公开实施例中的转码模板,封装了不同的码率,以及还封装了其他执行转码作业所需要的转码处理逻辑,不同的转码模板中配置的码率可以是不相同的,不同的转码模板中配置的码率可以具体是与一种直播类型相对应的,也即是说,不同的转码模板可以是与对应的直播类型相适配的。
举例而言,直播类型是游戏类型,则与游戏类型对应的转码模板当中配置了5000k、3000k、1000k的码率,从而采用与游戏类型对应的转码模板可以将原始的流媒体数据转码处理为分别与5000k、3000k、1000k对应的流媒体数据。
举例而言,直播类型是教育类型,则与教育类型对应的转码模板当中配置了4000k、2000k、800k的码率,从而采用与教育类型对应的转码模板可以将原始的流媒体数据转码处理为分别与4000k、2000k、800k对应的流媒体数据。
一些实施例中,在获取客户端发送的切换后的直播类型的步骤之前,还获取客户端发送的当前直播类型,并确定与当前直播类型对应的第二转码模板,第二转码模板中配置有一个或多个第二码率,第一码率和第二码率不相同,以及根据第二转码模板对原始的流媒体数据进行转码处理,得到码率为第二码率的第二流媒体数据。
其中,与当前直播类型对应的转码模板,可以被称为第二转码模板,第二转码模板中配置的码率,可以被称为第二码率,第二转码模板中配置有一个或多个第二码率,第一码率和第二码率不相同。
也即是说,在一次直播过程当中,本公开实施例首先支持服务端根据与当前直播类型对应的第二转码模板对原始的流媒体数据进行转码处理,得到第二码率的流媒体数据(其中,第二码率的流媒体数据可以被称为第二流媒体数据),而在该次直播过程当中,如果主播用户切换了该次直播过程的直播类型(将当前直播类型切换其他直播类型,则其他直播类型即可以是切换后的直播类型)。
相应地,本申请实施例支持服务端根据与切换后的直播类型对应的第一转码模板,重新对原始的流媒体数据进行转码处理,得到码率为第一码率的第一流媒体数据,由此实现了对流媒体数据进行及时地更新,使得重新转码得到的流媒体数据的码率能够与切换后的直播类型相适配。
在步骤s103中,根据第一转码模板对原始的流媒体数据进行转码处理,得到码率为第一码率的第一流媒体数据。
举例而言,如果当前直播类型为游戏类型,则采用与游戏类型对应的第二转码模板可以将原始的流媒体数据转码处理为分别与5000k、3000k、1000k对应的第二流媒体数据,而后,主播用户切换了该次直播过程的直播类型,切换后的直播类型为教育类型,则本申请实施例中可以实现采用与教育类型对应的第一转码模板将原始的流媒体数据转码处理为分别与4000k、2000k、800k对应的第一流媒体数据,从而实现对流媒体数据的更新,使得重新转码得到的流媒体数据的码率能够与切换后的直播类型相适配。
可选地,一些实施例中,在根据第一转码模板对原始的流媒体数据进行转码处理,得到码率为第一码率的第一流媒体数据后,还可以监听转码是否完成。如果转码完成,则生成相应的转码完成指令,并控制服务端响应于转码完成指令,生成通知消息,通知消息携带一个或多个第一码率,以及将通知消息发送至观众用户的客户端,从而触发观众用户的客户端重新获取第一流媒体数据。
本公开实施例能够有效保障流媒体数据更新的连贯性,使得观众用户能够及时地获知与当前直播类型最相适配的第一码率,并可以辅助观众用户及时地获取到与第一码率对应的第一流媒体数据。
上述在将通知消息发送至用户客户端,还可以支持在用户客户端界面上显示第一码率,如果观众用户从多个第一码率中选取了一个第一码率,则可以将与观众用户选取的第一码率对应的第一流媒体数据推流至用户客户端,以触发用户客户端基于与目标码率对应的第一流媒体数据更新第二流媒体数据。
其中,通知消息例如为【媒体信息已有修改】,可以实现及时地通知直播间的观众用户【媒体信息已有修改】,从而辅助直播间的观众用户采用第一码率进行拉流,以采用第一流媒体数据更新第二流媒体数据。
举例而言,将原始的流媒体数据转码处理为分别与4000k、2000k、800k对应的第一流媒体数据,实现对流媒体数据的更新后,可以根据4000k、2000k、800k生成另一通知消息,并基于该另一通知消息触发在用户客户端显示4000k、2000k、800k的码率选择控件,表示主播用户已经更新了直播类型,并且在服务端已准备好分别与4000k、2000k、800k对应的第一流媒体数据,而后响应于观众用户的选取指令,基于选取指令所选中的第一码率(例如2000k)拉流第一流媒体数据。
可选地,一些实施例中,考虑到一些观众用户还可能利用客户端基于当前直播类型从服务端拉流(此处的拉流,比如观众用户利用客户端从服务端获取直播视频流),因此,为了有效保障流媒体数据传输的连贯性,避免影响观众用户的拉流体验,上述在根据第一转码模板对原始的流媒体数据进行转码处理时,还可以保留第二流媒体数据。
另一些实施例中,为了节约服务端的存储资源消耗,提升服务端的响应效率,还可以确定一个合适的时机,从而基于合适的时机触发删除第二流媒体数据,比如可以获取当前时间点、目标时间点,目标时间点为最近一次向客户端推送第二流媒体数据的时间,如果当前时间点和目标时间点之间的时长大于或等于设定时长阈值,则删除第二流媒体数据。
其中,上述设定时长阈值,为第二流媒体数据未被推流的持续时长门限值,该持续时长门限值可以是由服务器的出厂程序预先设定的,或者,也可以根据实际直播应用需求自适应调整,对此不做限制。
上述的设定时长阈值,比如可以从服务器存储的与直播类应用程序对应的配置文件中读取得到,对此不做限制。
由此,如果当前时间点和目标时间点之间的时长大于或等于设定时长阈值,则表明服务器不再向用户客户端推流该第二流媒体数据,则可以从服务端的存储空间当中删除第二流媒体数据,而如果当前时间点和目标时间点之间的时长小于设定时长阈值,则表明服务器可能还会向用户客户端推流该第二流媒体数据,则可以保留第二流媒体数据。
在另外一些实施例中,当服务端根据第一转码模板对原始的流媒体数据进行转码处理,得到码率为第一码率的第一流媒体数据之后,可以是将第一流媒体数据存储至服务端本地,后续服务端可以将第一流媒体数据推流至用户客户端。
在另外一些实施例中,还可以是在得到码率为第一码率的第一流媒体数据时,即将第一流媒体数据推送至观众用户侧客户端,对此不做限制。
本实施例中,通过获取客户端发送的切换后的直播类型,在切换后的直播类型与当前直播类型不同时,确定与切换后的直播类型对应的第一转码模板,第一转码模板中配置有一个或多个第一码率,以及根据第一转码模板对原始的流媒体数据进行转码处理,得到码率为第一码率的第一流媒体数据,从而能够及时地对流媒体数据进行更新,使得重新转码得到的流媒体数据的码率能够与切换后的直播类型相适配,有效保障后续流媒体数据的传输效果。
图2是根据另一示例性实施例示出的一种直播视频的转码方法的流程图。
本实施例中直播视频的转码方法可以被配置在直播视频的转码装置中,直播视频的转码装置可以设置在服务端中。
需要说明的是,本公开实施例的执行主体,在硬件上可以例如为服务器的中央处理器(centralprocessingunit,cpu),在软件上可以例如为服务器中的相关的后台服务,对此不作限制。
如图2所示,该直播视频的转码方法包括以下步骤:
在步骤s201中,确定多种候选直播类型,并确定与各种候选直播类型的匹配码率。
本实施例的执行时机可以是在获取客户端发送的切换后的直播类型之前,对此不做限制。
其中,可以预先根据直播视频的分辨率以及帧率、画面色彩度要求等等,划分得到多种候选直播类型,或者,可以直接根据直播场景,划分得到多种候选直播类型,而后,确定与各种候选直播类型的匹配码率。该匹配码率,为基于对应候选直播类型下所直播的原始的流媒体数据的最优转码的码率,也即是说,当采用匹配码率对对应候选直播类型的原始的流媒体数据进行转码之后,能够在降低传输码率的情况下尽可能地保障原始的流媒体数据的呈现效果。
在步骤s202中,根据与各种候选直播类型的匹配码率,生成对应的候选转码模板。
上述在确定多种候选直播类型,并确定与各种候选直播类型的匹配码率之后,根据与各种候选直播类型的匹配码率,生成对应的候选转码模板。
也即是说,本实施例实现了预先在服务端生成与各种候选直播类型对应的候选转码模板,以便于在实际直播的过程中能够快速地确定出第一转码模板。
上述在确定多种候选直播类型,并确定与各种候选直播类型的匹配码率,可以获取与匹配码率对应的转码处理逻辑,而后,根据转码处理逻辑形成对应的候选转码模板,使得候选转码模板中包括相应的转码处理逻辑。
在步骤s203中,生成候选直播类型以及与候选直播类型对应的候选转码模板之间的映射关系。
上述在生成与各种候选直播类型对应的候选转码模板后,还可以,生成候选直播类型以及与候选直播类型对应的候选转码模板之间的映射关系,并将该映射关系存储至服务端的内存中,后续服务端可以依据映射关系确定与切换后的直播类型匹配的候选直播类型,并将与匹配的候选直播类型对应的候选转码模板作为第一转码模板,提升第一转码模板的获取效率,且由于与每种候选直播类型对应的候选转码模板是预先配置学习得到的,从而也能够有效保证转码准确性,提升流媒体数据的更新效率,实现无缝隙的更新迁移。
在步骤s204中,获取客户端发送的切换后的直播类型。
步骤s204的举例说明可以参见上述实施例,在此不再赘述。
在步骤s205中,从映射关系中确定与切换后的直播类型匹配的候选直播类型,并将与匹配的候选直播类型对应的候选转码模板作为第一转码模板。
在步骤s206中,根据第一转码模板对原始的流媒体数据进行转码处理,得到码率为第一码率的第一流媒体数据。
步骤s206的举例说明可以参见上述实施例,在此不再赘述。
本实施例中,使服务端能够依据映射关系确定与切换后的直播类型匹配的候选直播类型,并将与匹配的候选直播类型对应的候选转码模板作为第一转码模板,提升第一转码模板的获取效率,并且由于与每种候选直播类型对应的候选转码模板是预先配置学习得到的,从而能够有效保证转码准确性,提升流媒体数据的更新效率,实现无缝隙的更新迁移。
图3是根据又一示例性实施例示出的一种直播视频的转码方法的流程图。
本实施例中直播视频的转码方法可以被配置在直播视频的转码装置中,本实施例以直播视频的转码装置被配置在电子设备中为例,电子设备可以为手机、平板电脑、个人数字助理、穿戴式设备等具有各种操作系统、成像装置的硬件设备。
需要说明的是,本实施例的执行主体,在硬件上可以例如为电子设备中的中央处理器(centralprocessingunit,cpu),在软件上可以例如为电子设备中的相关的后台服务,对此不作限制。
本实施例的执行主体,可以具体例如运行于电子设备上的直播类应用程序的客户端,客户端(client)或称为用户端,是指与服务端相对应,为用户提提供本地服务的程序,对此不作限制。
本实施例的执行主体,可以具体例如主播用户侧的应用程序的客户端。
如图3所示,该直播视频的转码方法包括以下步骤:
在步骤s301中,确定切换后的直播类型,切换后的直播类型与当前直播类型不相同。
其中,本实施例的应用场景为用户使用直播类应用程序进行视频直播过程中,也即是说,在该应用场景中,主播用户采用客户端向用户客户端发送直播视频流,用户客户端显示该直播视频流的应用场景。
当主播用户采用客户端向用户客户端发送直播视频流时,首先是由主播客户端将直播视频流推送至服务端,由服务端相应地对直播视频流进行转码处理。服务端还可以响应于观众用户侧的拉流指令,将直播视频流推送至用户客户端。
本实施例的执行主体为上述所描述场景中的主播客户端,而针对服务端的描述可以参见上述实施例,在此不再赘述。
本步骤中的客户端为主播客户端,在一次直播过程中,如果主播用户具有切换直播类型的需求,则主播客户端所属电子设备可以响应于主播用户的切换指令,得到切换后的直播类型。
其中,直播类型用于描述直播内容的类型,直播内容比如教育、游戏、产品推销等等内容,或者,直播类型也可以用于描述直播场景的类型。
举例而言,假设直播内容为【儿歌点点】,则直播类型可以是教育类型;若直播内容为【魔兽世界】,则直播类型可以为游戏类型,游戏类型还可以进一步细化为【魔兽世界】类型或者【反恐精英】类型;若直播内容为一段广告,则相应的直播类型可以是产品推销类型。又比如从直播内容切换为通过摄像头进行直播(也即是说,直播场景产生了切换),则切换后的直播类型可以具体是切换后的场景对应的类型,切换后的直播类型比如【摄像头】直播类型,对此不做限制。
而在划分直播类型时,可以根据直播视频的分辨率、帧率、画面色彩度等去划分,或者,可以直接根据直播内容的语义进行划分等,又或者,可以直接根据直播的场景进行划分等,对此不做限制。
需要说明的是,上述的直播类型的命名不限于上面所描述,也可以采用其他标识(文字或者数值)来命名不同的直播类型,对此不做限制。
由此,切换后的直播类型或当前直播类型,可以为上述示例中的直播类型的任一种,且切换后的直播类型和当前直播类型可以是不相同的直播类型,或者,也可以是相同的直播类型。
本公开实施例具体是应用在一次直播过程当中,如果主播用户切换了该次直播过程的直播类型(比如由游戏类型切换为【摄像头】直播类型),则相应地,本公开实施例可以实现及时地通知服务端,以触发服务端根据切换后的直播类型重新对原始的流媒体数据进行转码处理,从而能够及时地对流媒体数据进行更新,使得重新转码得到的流媒体数据的码率能够与切换后的直播类型相适配,有效保障后续流媒体数据的传输效果。
上述在确定切换后的直播类型的步骤之前,还可以将当前直播类型发送至服务端,以触发服务端根据当前直播类型对原始的流媒体数据进行转码处理。
也即是说,在一次直播过程当中,本公开实施例首先支持服务端根据与当前直播类型对应的第二转码模板对原始的流媒体数据进行转码处理,而在该次直播过程当中,如果主播用户切换了该次直播过程的直播类型(比如由游戏类型切换为【摄像头】直播类型),则相应地,触发服务端根据与切换后的直播类型对应的第一转码模板重新对原始的流媒体数据进行转码处理,得到与第一码率对应的第一流媒体数据,从而能够及时地对流媒体数据进行更新,使得重新转码得到的流媒体数据的码率能够与切换后的直播类型相适配,有效保障后续流媒体数据的传输效果。
一些实施例中,可以采用下述方式在主播客户端确定切换后的直播类型,比如可以提供预设接口(预设接口可以为一个切换控件),从而在直播过程中实时地监听是否接收到主播用户对该预设接口的操作指令,如果监听接收到主播用户对该预设接口的操作指令,则在客户端的直播界面上,显示候选直播类型(该候选直播类型的数量可以为多个),从而接收主播用户的选取指令。响应于主播用户的选取指令,将选取指令选中的候选直播类型作为切换后的直播类型,实现简便,操作便捷,不会影响主播用户的直播体验,保障了直播过程的连续性,从而有效地辅助服务端及时地更新流媒体数据。
另外一些实施例中,为了有效提升直播视频的转码方法实施的灵活性,使得直播视频的转码方法的实施有效适配于不同直播场景的切换需求,提升主播用户的直播体验度,还可以响应于主播用户对客户端的预置组件的触发指令;确定与预置组件匹配的直播类型,并将匹配的直播类型作为切换后的直播类型。
上述的预置组件是摄像头组件,或者,也可以为其他组件,比如麦克风组件等等,对此不做限制。
也即是说,如果当前直播类型为游戏类型,而后监测到主播用户启动了客户端所属电子设备的摄像头组件,则表明此时主播用户具有切换直播场景的需求,将游戏直播场景切换为视频直播场景,此时,则可以确定切换后的直播类型为视频直播类型,则相应地,确定切换后的直播类型为视频直播类型,从而触发执行后续步骤。
在步骤s302中,根据切换后的直播类型生成请求消息。
在步骤s303中,将请求消息发送至服务端,以触发服务端根据与切换后的直播类型对应的第一转码模板对原始的流媒体数据进行转码处理。
本实施例中,通过确定切换后的直播类型,切换后的直播类型与当前直播类型不相同,并根据切换后的直播类型生成请求消息,以及将请求消息发送至服务端,以触发服务端根据与切换后的直播类型对应的第一转码模板对原始的流媒体数据进行转码处理,可以实现在直播类型切换时及时地通知服务端,以触发服务端根据切换后的直播类型重新对原始的流媒体数据进行转码处理,使得服务端能够及时地更新流媒体数据,使得重新转码得到的流媒体数据的码率能够与切换后的直播类型相适配,有效保障后续流媒体数据的传输效果。
图4是根据再一示例性实施例示出的一种直播视频的转码方法的流程图。
本实施例示出了在直播互动过程中,主播客户端和服务端的交互处理逻辑。
如图4所示,该直播视频的转码方法包括以下步骤:
在步骤s401中,主播客户端确定切换后的直播类型,切换后的直播类型与当前直播类型不相同。
在步骤s402中,主播客户端根据切换后的直播类型生成请求消息。
在步骤s403中,主播客户端将请求消息发送至服务端,以触发服务端根据与切换后的直播类型对应的第一转码模板对原始的流媒体数据进行转码处理。
在步骤s404中,服务端获取客户端发送的切换后的直播类型。
在步骤s405中,服务端在切换后的直播类型与当前直播类型不同时,确定与切换后的直播类型对应的第一转码模板,第一转码模板中配置有一个或多个第一码率。
在步骤s406中,服务端根据第一转码模板对原始的流媒体数据进行转码处理,得到码率为第一码率的第一流媒体数据。
在步骤s407中,服务端响应于转码完成指令,生成通知消息,通知消息携带一个或多个第一码率。
在步骤s408中,服务端将通知消息发送至用户客户端,从而触发用户客户端重新获取第一流媒体数据。
步骤s401-s408的举例说明可以参见上述实施例,在此不再赘述。
图5是根据一示例性实施例示出的一种直播视频的转码装置框图。
应用于服务端中。
如图5所示,该直播视频的转码装置50包括:
第一获取模块501,被配置为获取客户端发送的切换后的直播类型;
第一确定模块502,被配置为在切换后的直播类型与当前直播类型不同时,确定与切换后的直播类型对应的第一转码模板,第一转码模板中配置有一个或多个第一码率;
转码模块503,被配置为根据第一转码模板对原始的流媒体数据进行转码处理,得到码率为第一码率的第一流媒体数据。
在本公开的一些实施例中,还包括:
第一获取模块501,被配置为在获取客户端发送的切换后的直播类型前,获取客户端发送的当前直播类型;
第一确定模块502,被配置为确定与当前直播类型对应的第二转码模板,第二转码模板中配置有一个或多个第二码率,第一码率和第二码率不相同;
转码模块503,被配置为根据第二转码模板对原始的流媒体数据进行转码处理,得到码率为第二码率的第二流媒体数据。
在本公开的一些实施例中,装置还包括:
存储模块,被配置为在根据第一转码模板对原始的流媒体数据进行转码处理时,保留第二流媒体数据。
在本公开的一些实施例中,装置还包括:
第一生成模块,被配置为响应于转码完成指令,生成通知消息,通知消息携带一个或多个第一码率;
第一发送模块,被配置为将通知消息发送至观众用户的客户端,从而触发观众用户的客户端重新获取第一流媒体数据。
在本公开的一些实施例中,装置还包括:
第二确定模块,被配置为在获取客户端发送的切换后的直播类型前,确定多种候选直播类型,并确定与各种候选直播类型的匹配码率;
第二生成模块,被配置为根据与各种候选直播类型的匹配码率,生成对应的候选转码模板,并生成候选直播类型以及与候选直播类型对应的候选转码模板之间的映射关系;
则第一确定模块502,被配置为从映射关系中确定与切换后的直播类型匹配的候选直播类型,并将与匹配的候选直播类型对应的候选转码模板作为第一转码模板。
在本公开的一些实施例中,装置还包括:
第二获取模块,被配置为获取当前时间点、目标时间点,目标时间点为最近一次向客户端推送第二流媒体数据的时间;
处理模块,被配置为在当前时间点和目标时间点之间的时长大于或者等于设定时长阈值时,删除第二流媒体数据。
关于上述实施例中的直播视频的转码装置,其中各个模块执行操作的具体方式已经在有关该直播视频的转码方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本实施例中,通过获取客户端发送的切换后的直播类型,在切换后的直播类型与当前直播类型不同时,确定与切换后的直播类型对应的第一转码模板,第一转码模板中配置有一个或多个第一码率,以及根据第一转码模板对原始的流媒体数据进行转码处理,得到码率为第一码率的第一流媒体数据,从而能够及时地对流媒体数据进行更新,使得重新转码得到的流媒体数据的码率能够与切换后的直播类型相适配,有效保障后续流媒体数据的传输效果。
图6是根据另一示例性实施例示出的一种直播视频的转码装置框图。
应用于客户端中。
如图6所示,该直播视频的转码装置60包括:
第三确定模块601,被配置为确定切换后的直播类型,切换后的直播类型与当前直播类型不相同;
第三生成模块602,被配置为根据切换后的直播类型生成请求消息;
第二发送模块603,被配置为将请求消息发送至服务端,以触发服务端根据与切换后的直播类型对应的第一转码模板对原始的流媒体数据进行转码处理。
在本公开的一些实施例中,装置还包括:
解析模块,被配置为在确定切换后的直播类型前,解析原始的流媒体数据得到当前直播类型;
第二发送模块603,被配置为将当前直播类型发送至服务端,以触发服务端根据与当前直播类型对应的第二转码模板对原始的流媒体数据进行转码处理。
在本公开的一些实施例中,第三确定模块601,被配置为:
响应于主播用户对预设接口的操作指令,显示候选直播类型;
响应于主播用户的选取指令,将选取指令选中的候选直播类型作为切换后的直播类型。
在本公开的一些实施例中,第三确定模块601,被配置为:
响应于主播用户对客户端的预置组件的触发指令;
确定与预置组件匹配的直播类型,并将匹配的直播类型作为切换后的直播类型。
在本公开的一些实施例中,预置组件是摄像头组件。
关于上述实施例中的直播视频的转码装置,其中各个模块执行操作的具体方式已经在有关该直播视频的转码方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本实施例中,通过确定切换后的直播类型,切换后的直播类型与当前直播类型不相同,并根据切换后的直播类型生成请求消息,以及将请求消息发送至服务端,以触发服务端根据与切换后的直播类型对应的第一转码模板对原始的流媒体数据进行转码处理,可以实现在直播类型切换时及时地通知服务端,以触发服务端根据切换后的直播类型重新对原始的流媒体数据进行转码处理,使得服务端能够及时地更新流媒体数据,使得重新转码得到的流媒体数据的码率能够与切换后的直播类型相适配,有效保障后续流媒体数据的传输效果。
本公开实施例还提供了一种电子设备,图7是根据一示例性实施例示出的一种电子设备的框图。例如,电子设备700可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图7,电子设备700可以包括以下一个或多个组件:处理组件702,存储器704,电源组件706,多媒体组件708,音频组件710,输入/输出(i/o)的接口712,传感器组件714,以及通信组件716。
处理组件702通常控制电子设备700的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件702可以包括一个或多个处理器720来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件702可以包括一个或多个模块,便于处理组件702和其他组件之间的交互。例如,处理组件702可以包括多媒体模块,以方便多媒体组件708和处理组件702之间的交互。
存储器704被配置为存储各种类型的数据以支持在电子设备700的操作。这些数据的示例包括用于在电子设备700上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器704可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
电源组件706为电子设备700的各种组件提供电力。电源组件706可以包括电源管理系统,一个或多个电源,及其他与为电子设备700生成、管理和分配电力相关联的组件。
多媒体组件708包括在电子设备700和用户之间的提供一个输出接口的触控显示屏。在一些实施例中,触控显示屏可以包括液晶显示器(lcd)和触摸面板(tp)。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件708包括一个前置摄像头和/或后置摄像头。当电子设备700处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件710被配置为输出和/或输入音频信号。例如,音频组件710包括一个麦克风(mic),当电子设备700处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器704或经由通信组件716发送。
在一些实施例中,音频组件710还包括一个扬声器,用于输出音频信号。
i/o接口712为处理组件702和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件714包括一个或多个传感器,用于为电子设备700提供各个方面的状态评估。例如,传感器组件714可以检测到电子设备700的打开/关闭状态,组件的相对定位,例如组件为电子设备700的显示器和小键盘,传感器组件714还可以检测电子设备700或电子设备700一个组件的位置改变,用户与电子设备700接触的存在或不存在,电子设备700方位或加速/减速和电子设备700的温度变化。传感器组件714可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件714还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件714还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件716被配置为便于电子设备700和其他设备之间有线或无线方式的通信。电子设备700可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件716经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件716还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。
在示例性实施例中,电子设备700可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述直播视频的转码方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器704,上述指令可由电子设备700的处理器720执行以完成上述方法。例如,非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。
一种非临时性计算机可读存储介质,当存储介质中的指令由电子设备700的处理器执行时,使得电子设备700能够执行一种直播视频的转码方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
1.一种直播视频的转码方法,其特征在于,应用于服务端,所述方法包括:
获取客户端发送的切换后的直播类型;
在所述切换后的直播类型与当前直播类型不同时,确定与所述切换后的直播类型对应的第一转码模板,所述第一转码模板中配置有一个或多个第一码率;
根据所述第一转码模板对原始的流媒体数据进行转码处理,得到码率为所述第一码率的第一流媒体数据。
2.根据权利要求1所述的方法,其特征在于,在所述获取客户端发送的切换后的直播类型前,还包括:
获取所述客户端发送的所述当前直播类型;
确定与所述当前直播类型对应的第二转码模板,所述第二转码模板中配置有一个或多个第二码率,所述第一码率和所述第二码率不相同;
根据所述第二转码模板对所述原始的流媒体数据进行转码处理,得到码率为所述第二码率的第二流媒体数据。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在所述根据所述第一转码模板对原始的流媒体数据进行转码处理时,保留所述第二流媒体数据。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于转码完成指令,生成通知消息,所述通知消息携带所述一个或多个第一码率;
将所述通知消息发送至观众用户的客户端,从而触发所述观众用户的客户端重新获取所述第一流媒体数据。
5.根据权利要求1所述的方法,其特征在于,在所述获取客户端发送的切换后的直播类型前,所述方法还包括:
确定多种候选直播类型,并确定与各种所述候选直播类型的匹配码率;
根据与各种所述候选直播类型的匹配码率,生成对应的候选转码模板;
生成所述候选直播类型以及与所述候选直播类型对应的候选转码模板之间的映射关系;
则所述确定与所述切换后的直播类型对应的第一转码模板,包括:
从所述映射关系中确定与所述切换后的直播类型匹配的候选直播类型,并将与所述匹配的候选直播类型对应的候选转码模板作为所述第一转码模板。
6.一种直播视频的转码方法,其特征在于,应用于客户端,所述方法包括:
确定切换后的直播类型,所述切换后的直播类型与当前直播类型不相同;
根据所述切换后的直播类型生成请求消息;
将所述请求消息发送至服务端,以触发所述服务端根据与所述切换后的直播类型对应的第一转码模板对原始的流媒体数据进行转码处理。
7.一种直播视频的转码装置,其特征在于,应用于服务端,所述装置包括:
第一获取模块,被配置为获取客户端发送的切换后的直播类型;
第一确定模块,被配置为在所述切换后的直播类型与当前直播类型不同时,确定与所述切换后的直播类型对应的第一转码模板,所述第一转码模板中配置有一个或多个第一码率;
转码模块,被配置为根据所述第一转码模板对原始的流媒体数据进行转码处理,得到码率为所述第一码率的第一流媒体数据。
8.一种直播视频的转码装置,其特征在于,应用于客户端,所述装置包括:
第三确定模块,被配置为确定切换后的直播类型,所述切换后的直播类型与当前直播类型不相同;
第三生成模块,被配置为根据所述切换后的直播类型生成请求消息;
第二发送模块,被配置为将所述请求消息发送至服务端,以触发所述服务端根据与所述切换后的直播类型对应的第一转码模板对原始的流媒体数据进行转码处理。
9.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至5中任一项所述的直播视频的转码方法,或者,以实现如权利要求6所述的直播视频的转码方法。
10.一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如权利要求1至5中任一项所述的直播视频的转码方法,或者,如权利要求6所述的直播视频的转码方法。
技术总结