本申请涉及互联网技术领域,尤其涉及一种演唱处理方法、装置、电子设备及存储介质。
背景技术:
网络社交冲破了工业社会交往的限度,将人与人之间的关系网络化,表现为以各种社会化网络软件的网络社交的普及。
网络社交的形态从最初的网络聊天衍变各种各样的丰富的形态,网络唱歌(也称为网络k歌)是目前非常重要的一种网络社交形态,参与唱歌娱乐的用户不再受到地域的限制,极大提升了用户体验。
目前,参与网络唱歌的用户需要在持有的终端设备上安装专用的唱歌客户端才能使用相应的功能,然而,出于各种各样的原因(例如节省终端设备存储空间,操作成本较高)等,从而导致无法便捷地满足用户的唱歌娱乐的需求;虽然也有用于演唱的小程序,但是只能在一个用户演唱完毕后才能分享给其他用户,延迟较大。
相关技术对于解决网络唱歌的延迟和操作成本高尚无有效的方案。
技术实现要素:
本发明实施例提供一种演唱处理方法、装置、电子设备及存储介质,能够实现不同用户之间的实时便捷的演唱互动。
本发明实施例的技术方案是这样实现的:
本发明实施例提供一种演唱处理方法,包括:
第一客户端中的小程序接收用于演唱的伴奏内容,并呈现所述伴奏内容;
实时获取对应所述伴奏内容同步表演的演唱内容;
将所述实时获取的演唱内容以及对应的伴奏内容,发送到第二客户端。
本发明实施例提供一种演唱处理装置,包括:
接收模块,用于第一客户端中的小程序接收用于演唱的伴奏内容,并呈现所述伴奏内容;
获取模块,用于实时获取对应所述伴奏内容同步表演的演唱内容;
发送模块,用于将所述实时获取的演唱内容以及对应的伴奏内容,发送到第二客户端。
在上述方案中,所述演唱处理装置还包括:请求模块,用于响应于在所述小程序中接收到的歌曲搜索操作,发送被搜索的歌曲的演唱请求;或者,呈现热门歌曲列表;响应于针对所述热门歌曲列表的歌曲选择操作,发送被选中的热门歌曲的演唱请求;其中,所述演唱请求用于请求伴奏内容。
在上述方案中,所述接收模块,还用于接收服务器发送的所述伴奏内容;其中,所述伴奏内容是由所述服务器响应于所述演唱请求,调用推流组件,将所述伴奏内容转化成流数据的形式后发送的。
在上述方案中,所述接收模块,还用于在所述小程序中播放所述伴奏内容,并在所述小程序的页面中对应所述伴奏内容的播放进度而呈现同步的歌词。
在上述方案中,所述接收模块,还用于当所述伴奏内容播放开始时,启动异步计时器进行计时;每当所述异步计时器计时一个校准时间段阈值时,确定显示所述歌词的时间戳,并对显示所述歌词的时间戳进行校准,以使所述小程序的页面中显示与播放所述伴奏内容的播放进度同步的歌词。
在上述方案中,所述获取模块,还用于实时获取表演者对应所述伴奏内容同步表演的演唱视频或演唱音频;其中,所述实时获取表演者对应所述伴奏内容同步表演的演唱视频或音频,包括:所述第一客户端中的小程序调用所述第一客户端的基础库中的摄像头组件和麦克风组件,实时采集所述表演者的表演而形成演唱视频;或者,所述第一客户端中的小程序调用所述第一客户端的基础库中的麦克风组件,实时采集所述表演者的表演而形成演唱音频。
在上述方案中,所述演唱处理装置还包括:登录模块,用于所述第一客户端中的小程序基于所述第一客户端的用户账户登录直播房间。
在上述方案中,所述发送模块,还用于将所述实时获取的演唱内容以及对应的伴奏内容,发送到与加入所述直播房间的观众账号关联的第二客户端,以使所述第二客户端呈现与表演同步的所述演唱内容以及对应的伴奏内容。
在上述方案中,所述发送模块,还用于所述第一客户端中的小程序调用所述第一客户端的基础库中的推流组件,将所述演唱内容和所述伴奏内容转换为至少两个流媒体分片,并将所述至少两个流媒体分片发送至所述第二客户端;其中,每个所述流媒体分片能够在第二客户端中独立解码和播放。
在上述方案中,所述演唱处理装置还包括:邀请模块,用于呈现与所述第一客户端的用户账号具有社交关系的社交账号;响应于针对所述社交账号的邀请操作,向被邀请的社交账号发送邀请消息,以使被邀请的社交账号通过所述邀请消息加入所述直播房间而成为所述观众账号;其中,所述社交关系的类型包括以下至少之一:好友;订阅;关注;评论。
在上述方案中,所述发送模块,还用于响应于社交账号选择操作;将所述演唱内容和所述伴奏内容发送至与被选中的社交账号关联的第二客户端;或者,将所述演唱内容和所述伴奏内容发送至与被选中的社交账号关联的第二客户端中的小程序;其中,所述社交账号是与所述第一客户端的用户账号存在社交关系的账号;所述社交关系的类型包括以下至少之一:好友;订阅;关注;评论。
在上述方案中,所述演唱处理装置还包括:运行模块,用于所述第一客户端响应于小程序搜索操作,在所述第一客户端中下载小程序,并运行下载后的小程序;或者,所述第一客户端获取小程序分享链接;响应于针对小程序分享链接的触发操作,在所述第一客户端中下载小程序,并运行下载后的小程序。
在上述方案中,所述演唱处理装置还包括:清理模块,用于确定所述小程序的可用缓存;当所述小程序中的可用缓存低于容量阈值时,清理所述小程序中的缓存空间,以使所述小程序的可用缓存不低于所述容量阈值。
在上述方案中,所述清理模块,还用于清理所述小程序的缓存空间中已缓存的伴奏内容,以使所述小程序能够接收所述用于演唱的伴奏内容,并存储至所述小程序的缓存空间。
在上述方案中,所述演唱处理装置还包括:解密模块,用于当所述小程序接收到的伴奏内容是加密内容时,将所述伴奏内容进行解密,并将解密后的伴奏内容存储至所述小程序的缓存空间;当所述小程序不支持解密后的伴奏内容的格式时,将解密后的伴奏内容的格式转换成所述小程序支持的格式。
在上述方案中,所述演唱处理装置还包括:互动模块,用于接收由所述第二客户端获取的针对所述演唱内容的互动内容;在所述第一客户端的小程序中实时呈现所述互动内容;其中,所述互动内容的类型至少包括以下之一:评论;电子红包。
本发明实施例提供一种电子设备,包括
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本发明实施例提供的演唱处理方法。
本发明实施例提供一种存储介质,存储有可执行指令,用于引起处理器执行时,实现本发明实施例提供的演唱处理方法。
本发明实施例具有以下有益效果:
通过第一客户端的小程序向表演者呈现用于演唱的伴奏内容,可以使表演者不用通过专用客户端就能实现网络演唱互动,显著降低了操作难度;通过将表演者的演唱内容实时发送至第二客户端,可以使第二客户端的观众实时观赏表演者的演唱,实现了实时的网络演唱互动,用户体验好,从而有益于社交关系的传播。
附图说明
图1是本发明实施例提供的演唱处理系统的架构示意图;
图2a是本发明实施例提供的电子设备500的结构示意图;
图2b是本发明实施例提供的演唱处理装置的结构示意图;
图2c是本发明实施例提供的小程序的框架结构示意图;
图3a是本发明实施例提供的演唱处理方法的流程示意图;
图3b是本发明实施例提供的演唱处理方法的应用场景示意图;
图3c是本发明实施例提供的演唱处理方法的应用场景示意图;
图3d是本发明实施例提供的演唱处理方法的应用场景示意图;
图4a是本发明实施例提供的演唱处理方法的流程示意图;
图4b是本发明实施例提供的演唱处理方法的应用场景示意图;
图5a是本发明实施例提供的演唱处理方法的流程示意图;
图5b是本发明实施例提供的演唱处理方法的应用场景示意图;
图5c是本发明实施例提供的演唱处理方法的应用场景示意图;
图6是本发明实施例提供的本地解密曲库的原理示意图;
图7a是相关技术提供的歌词校准的原理示意图;
图7b是本发明实施例提供的歌词校准的原理示意图;
图8是本发明实施例提供的演唱方法的流程示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本发明实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
1)客户端,例如本地客户端(nativeapp),是用户需要下载并安装在用户终端(例如,智能手机)上才可以使用的软件。
2)小程序(miniprogram),也称为网络程序(webprogram),是一种基于面向前端的语言(例如javascript)开发的、在超文本标记语言(html,hypertextmarkuplanguage)页面中实现服务的程序,由客户端(例如浏览器或内嵌浏览器核心的任意客户端)经由网络(如互联网)下载、并在客户端的浏览器环境中解释和执行的软件,节省在客户端中安装的步骤。例如,在社交网络客户端中可以下载、运行用于实现唱歌服务的小程序。
3)响应于,用于表示所执行的操作所依赖的条件或者状态,当满足所依赖的条件或状态时,所执行的一个或多个操作可以是实时的,也可以具有设定的延迟;在没有特别说明的情况下,所执行的多个操作不存在执行先后顺序的限制。
4)组件(component),是小程序的视图的功能模块,也称为前端组件,页面中的按钮、标题、表格、侧边栏、内容和页脚等,组件包括模块化的代码以便于在小程序的不同的页面中重复使用。
5)音视频上行(live-pusher),是小程序向网络传递声音或者视频所使用的组件,位于客户端的小程序基础库中。
6)基础库,位于客户端中,封装了用户终端的操作系统和客户端的各种能力,例如,媒体播放、推流等,以组件/接口的形式向小程序提供调用。
7)模板(template),小程序中待渲染数据的结构和样式,用于填充不同的数据后在渲染环境中进行渲染,从而能够实现对结构和样式的复用。
例如,小程序页面的模板中以可扩展标记语言(xml,xtensiblemarkuplanguage)文件描述结构,以描述组件样式的层叠样式表(css,cascadingstylesheets)文件描述样式,可以用于对小程序页面的布局和样式进行复用、组件的模板可以用于对组件的布局和样式进行复用。
8)后台(或称后端),相对于前端而言的,编写代码基本上是提供给前端调用,后端是不需要处理用户界面(ui,userinterface)的内容,例如,逻辑层。
9)推流,指的是把采集阶段封包好的内容传输到服务器的过程。也就是将现场的视频信号传到网络的过程。
相关技术中,用户只能通过下载唱歌类型的客户端才能进行唱歌,但是由于安装客户端的操作过程的复杂性,对于用户来说,操作成本较高,并且如果需要将用户的演唱内容分享给好友,好友也需要安装相同的客户端,因此分享门槛较高。此外,唱歌类的客户端只支持异步唱歌(即,用户只能先录制自己已演唱的歌曲,然后分享至好友),用户无法在唱歌的同时,邀请好友进行收听并与好友进行互动。
针对上述问题,本发明实施例提供一种演唱处理方法、装置、电子设备及存储介质,能够便捷地满足用户的唱歌娱乐的需求。下面说明本发明实施例提供的演唱处理方法的示例性应用,本发明实施例提供的演唱处理方法可以应用到各种电子设备,例如,可以应用到智能手机、平板电脑、车载终端、智能穿戴设备等各种类型的用户终端(下文也简称为终端)。
下面,以电子设备为终端为例,说明终端实施本发明实施例提供的演唱处理方法的一个示例性的应用系统架构,参见图1,图1是本发明实施例提供的演唱处理系统的架构示意图,示出了表演侧终端100、观众侧终端200、客户端服务器(即客户端的后台服务器)300、以及演唱服务器(用于实现演唱功能的服务器,即小程序的后台服务器,或称小程序服务器)400,下面分别对此进行说明。
表演侧终端100用于运行第一客户端110,第一客户端110可以是各种具有下载小程序功能的应用(app,application),例如社交app(典型的,例如微信)或视频app等。第一客户端110可以通过客户端服务器300下载用于演唱的小程序111。
观众侧终端200用于运行第二客户端210,第二客户端210是具有接收第一客户端110发送的演唱内容和伴奏内容、且呈现与表演同步的所述演唱内容以及对应的伴奏内容功能的应用。第二客户端210并非特指一个客户端,而是一类客户端,即观众使用的这一类客户端,并且第二客户端的数量可以为一个或多个。
客户端服务器300用于接受客户端的请求,并将数据提交给客户端,以支撑客户端的原生功能,还用于向客户端提供多种小程序,以供客户端下载。
演唱服务器400用于向第一客户端110中的小程序111提供伴奏内容,还用于向第二客户端210同步发送与表演同步的演唱内容以及对应的伴奏内容。
需要说明的是,第一客户端110是表演者的用户账号关联的客户端,第二客户端210是观众的用户账号关联的客户端。客户端服务器300与演唱服务器400可以是不同的服务器,也可以是同一服务器。
结合图1,本发明实施例提供的演唱处理方法的一个应用场景中,首先,表演者基于第一客户端110中的账号登录客户端服务器300,向客户端服务器300请求下载小程序111,并在下载完成后在第一客户端110中运行小程序111;然后,表演者通过小程序111进行点歌操作,以接收演唱服务器400下发的用于演唱的伴奏内容,并在小程序111中呈现伴奏内容;再次,表演者根据在小程序111中呈现的伴奏内容进行演唱,小程序111实时采集表演者的演唱内容,并将表演者的演唱内容发送至演唱服务器400;最后,演唱服务器400向第二客户端210同步发送与表演同步的演唱内容以及对应的伴奏内容,以使第二客户端210呈现与表演同步的演唱内容以及对应的伴奏内容。
接下来说明本发明实施例提供的用于实施演唱处理方法的电子设备的结构,如前所述,本发明实施例提供的电子设备可以是图1所示的表演侧终端100。参见图2a,图2a是本发明实施例提供的电子设备500的结构示意图,图2a所示的电子设备500包括:硬件层510、操作系统层520和应用程序层530。
在一些实施例中,硬件层510包括处理器511、用户接口512、存储器513以及网络接口514。
处理器511可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(dsp,digitalsignalprocessor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口512包括使得能够呈现媒体内容的一个或多个输出装置,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口512还包括一个或多个输入装置,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器513包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(rom,readonlymemory),易失性存储器可以是随机存取存储器(ram,randomaccessmemory)。本发明实施例描述的存储器513旨在包括任意适合类型的存储器。存储器513可选地包括在物理位置上远离处理器511的一个或多个存储设备。存储器513用于存储各种类型的数据以支持电子设备500的操作。这些数据的示例包括:用于在电子设备500上操作的任何程序,如操作系统层520和应用程序层530。
网络接口514包括蓝牙、无线相容性认证(wifi)、和通用串行总线(usb,universalserialbus)等。
在一些实施例中,操作系统层520,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层521、驱动层522、图形库层523以及核心库层524等,用于实现各种基础业务以及处理基于硬件的任务
在一些实施例中,应用程序层530可以包含操作系统内置的各种应用程序如桌面启动器和系统设置程序;还可以包括第三方的应用程序,例如媒体播放器(mediaplayer)、浏览器(browser)、社交/即时通信应用程序等需要显示视图以及通过视图接收各种触摸事件并进行响应的应用程序,用于实现各种业务,实现本发明实施例方法的程序可以包含在应用程序中;如无特别说明,本文中所记载的第一客户端可以为系统原生的应用程序和第三方的应用程序中的任意一种。
应用程序层530中的演唱处理装置531可以是程序和插件等形式的软件,具体包括以下软件模块:接收模块5311、获取模块5312和发送模块5313。这些模块是可以是逻辑功能模块,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
本发明实施例记载的方法可以应用于处理器511中,或者由处理器511实现。本发明实施例所记载的方法可以通过处理器511中的硬件的集成逻辑电路或者软件形式的指令完成。结合本发明实施例所记载的方法,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成,软件模块可以位于存储介质中,存储介质位于存储器513,处理器511读取存储器513中的可执行指令,结合其硬件完成本发明实施例所记载的方法。
在一些实施例中,参见图2b,图2b是本发明实施例提供的演唱处理装置的结构示意图,作为演唱处理装置531中的三个模块的一种具体实现方式,上述的三个模块可以由第一客户端、以及运行于第一客户端中的小程序和基础库进行实现,将详细对此进行说明。
小程序111的开发者在开发设备(例如电脑等用户终端、服务器)中部署小程序的开发框架完成针对小程序的开发,小程序111可以提供用于演唱的服务。开发框架中提供有小程序的构建工具,用于将小程序的项目中的代码封装成一个或多个能够在第一客户端110的浏览器环境中运行的javascript文件,并上传到客户端服务器300。
表演者持有的表演侧终端100中可以运行各种类型的客户端,例如,第一客户端110。第一客户端110中可以提供各种类型的小程序供用户选择使用,例如,演唱小程序等,从而使用户仅通过第一客户端110就可以灵活使用各种功能,从而不需要安装专用的客户端,例如,演唱客户端等。
其中,第一客户端110中包括基础库,基础库中封装了表演侧终端100的操作系统和第一客户端110的各种能力(例如,媒体播放、推流等),以组件/接口的形式向小程序提供调用。例如,小程序111首先通过调用基础库中的推流组件接收用于演唱的伴奏内容,并在小程序111中进行呈现,然后通过调用基础库中的麦克风组件和/或摄像头组件实时获取演唱内容以及对应的伴奏内容,最后通过调用基础库中的推流组件将其发送至第二客户端。
举例来说,一旦用户在第一客户端110中确认下载小程序111,第一客户端110将通过网络向客户端服务器300请求下载小程序111的javascript文件,并在客户端的浏览器环境中解释和执行javascript文件,从而运行小程序111的实例。
小程序111的实例首先初始化页面,可以向客户端服务器300请求页面数据,并在页面中渲染。页面是由一系列的组件构成的,当用户操作组件时,表演侧终端100的操作系统将向小程序111的实例传递相应的事件,组件将根据自身的逻辑重新渲染,例如,当组件是小程序111的页面中的一个按钮时,可以重现渲染以显示按钮被按下的动态效果以及相应的内容。当小程序111的实例接收到客户端服务器300更新的页面的数据时,组件也将根据数据重新渲染以更新页面。
参见图2c,图2c是本发明实施例提供的小程序的框架结构示意图,接下来结合图2c说明小程序111的组成框架,包括:场景值、逻辑层和视图层,将详细对此进行说明。
场景值是用来描述用户进入小程序的路径。开发者可以在客户端的生命周期函数的事件中获取场景值。客户端多次触发生命周期函数的事件,获得的场景值可能不同。
逻辑层使用javascript引擎为小程序提供开发者javascript代码的运行环境以及小程序的特有功能。逻辑层将数据进行处理后发送给视图层,同时接受视图层的事件反馈。开发者写的所有代码最终将会打包成一份javascript文件,并在小程序启动的时候运行,直到小程序销毁。逻辑层包括小程序的基础能力的相关实现的组件,具体有:网络组件(用于跟指定的域名之间进行网络通信)、存储组件(用于存储已缓存的文件)、文件系统组件(用于管理已缓存的文件)、以及画布组件(用于渲染显示页面)等。
视图层在接收到初始数据和更新数据时,需要进行视图层渲染。在一个页面的生命周期中,视图层会收到一份初始数据和多份更新数据。收到初始数据时需要执行初始渲染,每次收到更新数据时需要执行重渲染。视图层由标签语言与样式语言编写,由组件来进行展示。视图层将逻辑层的数据反应成视图,同时将视图层的事件发送给逻辑层。标签语言用于描述页面的结构;脚本语言结合标签语言可以构建出页面的结构;样式语言用于描述页面的样式。
小程序还可以通过调用客户端的基础库中的组件实现能力的扩展,基础库中包括各种类型的组件,例如,音频(audio)组件(用于播放音频)、相机(camera)组件(用于提供扫码二维码的功能)、图片(image)组件(用于展示图片)、音视频上行(live-pusher)组件(用于实时音录制)、音视频下行(live-player)组件(用于实时音视频播放)、视频(video)组件(用于播放视频)、摄像头组件(用于采集图像)、以及麦克风组件(用于采集音频)等。
下面,以由图1中的第一客户端110和第二客户端210共同实施本发明实施例提供的演唱处理方法为例说明本发明实施例。参见图3a,图3a是本发明实施例提供的演唱处理方法的流程示意图,将结合图3a示出的步骤进行说明。
在步骤s101中,第一客户端向客户端服务器请求下载小程序,以接收客户端服务器下发的小程序,并在第一客户端中运行小程序。
这里,第一客户端是表演者的用户账号关联的客户端。
在一些实施例中,第一客户端响应于在小程序搜索栏中接收到的小程序搜索操作,根据小程序搜索操作中输入的信息,向客户端服务器请求下载小程序,以接收客户端服务器下发的小程序,并在第一客户端中运行小程序。
举例来说,参见图3b,图3b是本发明实施例提供的演唱处理方法的应用场景示意图。图3b中,用户在第一客户端中可触发显示小程序搜索栏301,通过在小程序搜索栏301中键入相关字符(例如“歌房”),可在第一客户端中显示对应键入相关字符的小程序302。当用户触发小程序302时,第一客户端自动下载小程序302或提示用户是否下载小程序302,在用户同意后下载小程序302,并在下载完成后跳转进入小程序302。
在一些实施例中,第一客户端获取小程序分享链接(或小程序下载链接);响应于针对小程序分享链接(或小程序下载链接)的触发操作,向客户端服务器请求下载小程序,以接收客户端服务器下发的小程序,并在第一客户端中运行小程序。
举例来说,参见图3c,图3c是本发明实施例提供的演唱处理方法的应用场景示意图。图3c中,用户可以将小程序分享链接303分享至其余用户,以使其余用户通过点击小程序分享链接303即可在第一客户端中下载小程序,并在下载完成后跳转进入小程序。
在一些实施例中,用户还可以通过第一客户端中自带的小程序商店,向客户端服务器请求下载小程序,以接收客户端服务器下发的小程序,并在第一客户端中运行小程序。
在一些实施例中,当第一客户端之前已下载小程序时,此时运行小程序时就无需再下载小程序,直接在第一客户端中运行小程序即可。
本发明实施例通过提供各种简易的渠道,使用户不用通过重新下载唱歌专用的客户端就能实现唱歌的目的,从而便捷地满足用户的唱歌娱乐的需求。
在步骤s102中,第一客户端中的小程序向演唱服务器发送演唱请求,接收演唱服务器发送的用于演唱的伴奏内容。
这里,演唱的类型可以模仿歌曲演唱,伴奏内容是所模仿的歌曲中的背景音乐;也可以是即兴演唱,伴奏内容是任意有节奏感的音乐。伴奏内容可以是伴奏的音频,也可以是视频,例如,伴奏内容可以是演唱服务器发送到小程序的背景视频。演唱请求用于请求演唱服务器发送对应的伴奏内容。
在一些实施例中,伴奏内容可以是通过演唱服务器进行获取的,也可以是从用户终端的本地缓存中进行获取的。例如,第一客户端中的小程序从演唱服务器获取伴奏内容之前,优先从本地缓存中查询伴奏内容,当本地缓存中包含用于演唱的伴奏内容时,可以直接从本地缓存中获取相应的伴奏内容而无需向演唱服务器请求获取相应的伴奏内容。
在一些实施例中,表演者可以使用独立于第一客户端的用户账户(或称账号)登录演唱服务器,获取伴奏内容;也可以不注册独立于第一客户端的用户账户,直接使用第一客户端的用户账户登录演唱服务器,获取伴奏内容,从而可以快速进行演唱。
在一些实施例中,第一客户端中的小程序响应于在小程序中接收到的歌曲搜索操作,向演唱服务器发送被搜索的歌曲的演唱请求,接收演唱服务器发送的用于演唱的伴奏内容。
举例来说,参见图3d,图3d是本发明实施例提供的演唱处理方法的应用场景示意图。图3d中,第一客户端运行小程序后,小程序的显示界面中显示点歌按钮304,当点歌按钮304被用户触发后,跳转至点歌界面,并在点歌界面中显示歌曲搜索栏305,通过在歌曲搜索栏305中搜索歌曲,向演唱服务器发送被搜索的歌曲的演唱请求,以使演唱服务器发送对应的伴奏内容。
在一些实施例中,第一客户端中的小程序呈现热门歌曲列表;响应于针对热门歌曲列表的歌曲选择操作,向演唱服务器发送被选中的热门歌曲的演唱请求,接收演唱服务器发送的用于演唱的伴奏内容。
举例来说,图3d中,第一客户端运行小程序后,小程序的显示界面中显示点歌按钮304,当点歌按钮304被用户触发后,跳转至点歌界面,并在点歌界面中显示热门歌曲列表306,通过针对热门歌曲列表306的选择操作,向演唱服务器发送被选中的歌曲的演唱请求,以使演唱服务器发送对应的伴奏内容。
这里,伴奏内容是由演唱服务器响应于演唱请求,调用推流组件,将伴奏内容转化成流数据的形式后发送的。
本发明实施例通过向用户展示热门歌曲列表,能够使用户更直观的获取热门歌曲,避免用户搜索歌曲,从而便于用户进行点歌,进而提高了用户的体验。
在一些实施例中,第一客户端中的小程序在接收用于演唱的伴奏内容之后,包括:当小程序接收到的伴奏内容是加密内容时,将伴奏内容进行解密,并将解密后的伴奏内容存储至小程序的缓存空间;当小程序不支持解密后的伴奏内容的格式时,将解密后的伴奏内容的格式转换成小程序支持的格式。
作为示例,演唱服务器提供给小程序的伴奏曲库是加密曲库,小程序无法直接通过统一资源定位符(url,uniformresourcelocator)进行在线播放。因此,当用户点歌时,小程序必须事先下载音频文件并进行解密处理,解密后的伴奏内容的文件格式是m4a,有些版本等级低的客户端不支持直接播放该格式,因此需要进行兼容处理。也就是说,对于版本高的客户端,可以直接播放解密后的m4a文件格式的伴奏内容,但对于版本低的客户端,客户端中的小程序还需要预先将m4a文件格式转化为mp3文件格式后,再进行播放。
在一些实施例中,第一客户端中的小程序在接收用于演唱的伴奏内容之前,包括:第一客户端中的小程序确定小程序的可用缓存;当小程序中的可用缓存低于容量阈值时,清理小程序中的缓存空间,以使小程序的可用缓存不低于容量阈值。
这里,容量阈值可以是已接收伴奏内容占用的存储空间的平均值;也可以是演唱服务器的曲库中的伴奏内容占用的存储空间的最大值。
在一些实施例中,第一客户端中的小程序在接收用于演唱的伴奏内容之前,包括:第一客户端中的小程序清理小程序的缓存空间中已缓存的伴奏内容,以使小程序能够接收用于演唱的伴奏内容,并存储至小程序的缓存空间。
这里,清理小程序的缓存空间的原则是:按照缓存空间的先入先出的顺序删除(即,先删除存储时间最久的内容),或者,按照缓存空间中缓存内容的容量的大小顺序删除(即,先删除占用缓存空间大的内容)。
举例来说,基于对伴奏内容安全的考虑,演唱服务器提供给小程序的伴奏曲库是加密曲库,小程序无法直接通过统一资源定位符进行在线播放。因此,当用户点歌时,小程序必须事先下载音频文件并进行解密处理。由于解密的数据是在小程序的内存中存储的,因此容易超过小程序的内存限制,导致小程序会向用户频繁提示“下载歌曲失败”的错误。为了解决这一问题,在用户每次点歌完成后,小程序会自动删除上一次点歌的缓存文件,并且该删除请求会自动重试,以保证用户不会因为缓存超过小程序可用缓存的限制而出现“下载歌曲失败”的错误。
本发明实施例解决了小程序固有的存储空间小、性能差等缺陷,保证了用户能够流畅地完成点歌、唱歌的动作。
在步骤s103中,第一客户端中的小程序呈现伴奏内容。
在一些实施例中,在第一客户端中的小程序中播放伴奏内容,并在小程序的页面中对应伴奏内容的播放进度而呈现同步的歌词。
作为示例,当伴奏内容播放开始时,第一客户端中的小程序启动异步计时器进行计时;每当异步计时器计时一个校准时间段阈值时,确定显示歌词的时间戳,并对显示歌词的时间戳进行校准,以使小程序的页面中显示与播放伴奏内容的播放进度同步的歌词。
这里,可以根据播放伴奏内容的时间戳或异步计时器计时的时间对显示歌词的时间戳进行校准。
举例来说,当伴奏内容播放开始时,第一客户端中的小程序启动异步计时器进行计时;每当异步计时器计时一个校准时间段阈值时,确定显示歌词的时间戳和播放伴奏内容的时间戳,并根据播放伴奏内容的时间戳对显示歌词的时间戳进行校准,以使小程序的页面中显示与播放伴奏内容的播放进度同步的歌词。
举例来说,当伴奏内容播放开始时,第一客户端中的小程序启动异步计时器进行计时;每当异步计时器计时一个校准时间段阈值时,确定显示歌词的时间戳,并根据异步计时器计时的时间对显示歌词的时间戳进行校准,以使小程序的页面中显示与播放伴奏内容的播放进度同步的歌词。
相关技术中为了使用户唱歌过程中的歌词与伴奏同步,需要频繁回调,会导致中央处理器(cpu,centralprocessingunit)占用过高,在用户侧直接表现为声音卡顿或听不到声音的现象。因此,本发明实施例放弃使用音视频上行(live-pusher)组件的歌曲进度回调功能,而在小程序的后台中建立一个异步计时器。在伴奏内容播放开始时,异步计时器便开始计时,每间隔校准时间段阈值(例如500ms)计算当前位置的时间进度,并将显示歌词的时间戳和播放伴奏内容的时间戳进行校准,从而实现歌曲伴奏与歌词同步。进而使用户不但可以听到伴奏、而且可以看到与伴奏同步的歌词,并通过麦克风演唱歌曲。
在步骤s104中,第一客户端中的小程序实时获取表演者对应伴奏内容而表演的演唱内容。
在一些实施例中,第一客户端中的小程序实时获取表演者对应伴奏内容同步表演的演唱视频或演唱音频。
这里,表演者表演的内容的类型可以是录音形式(即,仅采集演唱音频);也可以是录像形式(即,既采集演唱音频也采集演唱图像)。
作为一个示例,第一客户端中的小程序调用第一客户端的基础库中的摄像头组件和麦克风组件,实时采集表演者的表演而形成演唱视频。
作为另一个示例,第一客户端中的小程序调用第一客户端的基础库中的麦克风组件,实时采集表演者的表演而形成演唱音频。
在一些实施例中,当伴奏内容播放结束时,第一客户端中的小程序停止采集表演者的演唱内容,并将表演者在第一客户端中的小程序显示为下台(例如,不再处于演唱的状态,而仅仅作为观众观赏表演)的状态。
本发明实施例不仅可以采集表演者表演的音频也可以采集表演者表演的视频,满足了表演者的演唱需求,使其不仅可以通过小程序向观众展示自己的声音也可以展示自己的动作,从而提高了表演者和观众双方的用户体验。并且本发明实施例通过实时获取表演者对应伴奏内容同步表演的演唱视频或演唱音频,可以使观众实时观看到表演者的表演,不同于相关技术中表演者将表演录制后再发送至观众,从而可以减少观众的等待时间。
在步骤s105中,第一客户端中的小程序将实时获取的演唱内容以及对应的伴奏内容,通过演唱服务器发送到第二客户端。
在一些实施例中,第一客户端中的小程序调用第一客户端的基础库中的推流组件(即上述的音视频上行组件),将演唱内容和伴奏内容转换为至少两个流媒体分片,并将至少两个流媒体分片发送至第二客户端;其中,每个流媒体分片能够在第二客户端中被独立解码和播放。
在一些实施例中,第一客户端中的小程序调用第一客户端的基础库中的推流组件,将演唱内容和伴奏内容转换为至少两个流媒体分片,并将至少两个流媒体分片发送至第二客户端中的小程序;其中,第二客户端中的小程序通过调用第二客户端的基础库中的媒体组件对每个流媒体分片进行解码和播放。
这里,流媒体分片的参数(包括分辨率/码率)根据第二客户端的解码能力(即软件解码能力)、硬件解码能力、以及第二客户端的网络状况决定,例如,当第二客户端的解码能力越强时,流媒体分片的分辨率/码率越高;当运行第二客户端的终端的硬件解码能力越强时,流媒体分片的分辨率/码率越高;当第二客户端所处的网络环境越好(即,第二客户端上传和下载数据时,请求和返回数据所用的时间越短)时,流媒体分片的分辨率/码率越高。
作为一个示例,第一客户端中的小程序可以仅将实时获取的演唱内容,发送到演唱服务器,然后演唱服务器将之前小程序请求获取的伴奏内容以及接收到的演唱内容打包至一起发送至第二客户端或第二客户端的小程序。
作为另一个示例,第一客户端中的小程序可以将实时获取的演唱内容和伴奏内容一起发送到演唱服务器,经由演唱服务器将接收到的演唱内容和伴奏内容发送至第二客户端或第二客户端的小程序。
本发明实施例还支持第二客户端自身呈现与表演同步的演唱内容以及对应的伴奏内容,可以使第二客户端无需下载小程序即可呈现演唱内容和伴奏内容。
在步骤s106中,第二客户端呈现与表演同步的演唱内容以及对应的伴奏内容。
在一些实施例中,可以是由第二客户端自身呈现与表演同步的演唱内容以及对应的伴奏内容,也可以是由第二客户端中的小程序的自身呈现与表演同步的演唱内容以及对应的伴奏内容。
这里,当由第二客户端中的小程序的自身呈现与表演同步的演唱内容以及对应的伴奏内容时,第二客户端运行小程序的过程和第一客户端运行小程序的过程相同,在此处将不再进行赘述。
作为一个示例,当由第二客户端自身呈现与表演同步的演唱内容以及对应的伴奏内容时,步骤s105和步骤s106的具体实现过程是:第一客户端中的小程序响应于社交账号选择操作;将演唱内容和伴奏内容发送至与被选中的社交账号关联的第二客户端,以使第二客户端中呈现与表演同步的演唱内容以及对应的伴奏内容。
这里,社交账号是与第一客户端的用户账号存在社交关系的账号;社交关系的类型包括以下至少之一:好友;订阅;关注;评论。
作为一个示例,当由第二客户端中的小程序的自身呈现与表演同步的演唱内容以及对应的伴奏内容时,步骤s105和步骤s106的具体实现过程是:第一客户端中的小程序响应于社交账号选择操作;将演唱内容和伴奏内容发送至与被选中的社交账号关联的第二客户端中的小程序,以使第二客户端中的小程序呈现与表演同步的演唱内容以及对应的伴奏内容。
举例来说,当登录第一客户端中的小程序的用户账号中至少具有一个好友账号时,用户可以在小程序中选择好友账号,以将演唱内容和伴奏内容发送至好友账号关联的第二客户端或第二客户端中的小程序,从而可以使好友可以观赏表演。
本发明实施例第一客户端中的小程序不需要建立直播房间就可以向任意用户发送演唱内容和伴奏内容,方便用户的分享,可以使观众无需进入直播房间就可观看到表演者的演唱,从而提高了用户的体验。
本发明实施例通过第一客户端的小程序向表演者呈现用于演唱的伴奏内容,可以使表演者不用通过重新下载唱歌专用的客户端就能实现唱歌的目的,从而便捷地满足用户的唱歌娱乐的需求。并且本发明实施例通过将表演者的演唱内容发送至第二客户端,以使第二客户端呈现与表演同步的演唱内容以及对应的伴奏内容,可以使观众实时观赏表演者的演唱,提升了唱歌的娱乐性,从而有益于社交关系的传播。
参见图4a,图4a是本发明实施例提供的演唱处理方法的流程示意图,基于图3a,在步骤s102之前可以包括步骤s107,并且步骤s105可以替换为步骤s108。
在步骤s107中,第一客户端中的小程序基于第一客户端的用户账户登录直播房间。
这里,直播房间是演唱服务器针对实时唱歌的一种同步和分享的方式,直播房间中任一用户账户的演唱内容和伴奏内容都会被推流到演唱服务器,并由演唱服务器实时同步到观众账户关联的第二客户端。
在一些实施例中,表演者可以使用独立于第一客户端的用户账户登录直播房间;也可以不注册独立于第一客户端的用户账户,直接使用第一客户端的用户账户登录直播房间。
在步骤s108中,第一客户端中的小程序将实时获取的演唱内容以及对应的伴奏内容,发送到与加入直播房间的观众账号关联的第二客户端。
在一些实施例中,步骤s108还可以是:第一客户端中的小程序将实时获取的演唱内容以及对应的伴奏内容,发送到与加入直播房间的观众账号关联的第二客户端中的小程序。
这里,第一客户端中的小程序将演唱内容以及伴奏内容,发送到与加入直播房间的观众账号关联的第二客户端或第二客户端中的小程序中的过程和步骤s105相同,在此次将不再进行赘述。
在一些实施例中,加入直播房间的方式具体包括:第一客户端中的小程序中呈现与第一客户端的用户账号具有社交关系的社交账号;响应于针对社交账号的邀请操作,向被邀请的社交账号发送邀请消息,以使被邀请的社交账号通过邀请消息加入直播房间而成为观众账号;其中,社交关系的类型包括以下至少之一:好友;订阅;关注;评论。
这里,邀请信息的类型至少包括以下至少之一:图形码(例如,一维码或二维码);网络链接。当邀请信息的类型是图形码时,被邀请的用户可以通过扫描图形码加入直播房间而成为观众。当邀请信息的类型是网络链接时,被邀请的用户可以通过点击网络链接加入直播房间而成为观众。
举例来说,参见图4b,图4b是本发明实施例提供的演唱处理方法的应用场景示意图。图4b中,表演者可以通过会话向被邀请的好友发送邀请信息401,以使被邀请的好友通过点击邀请信息401加入直播房间而成为观众。
本发明实施例同时兼容了客户端实时唱歌的强互动性、小程序本身的便捷性和易于传播性的优点,使用户能够随时随地地邀请好友一起唱歌。
参见图5a,图5a是本发明实施例提供的演唱处理方法的流程示意图,基于图3a,在步骤s106之后可以包括步骤s109和步骤s110。
在步骤s109中,第一客户端中的小程序接收由第二客户端获取的针对演唱内容的互动内容。
这里,互动内容的类型至少包括以下之一:评论;电子红包。
在一些实施例中,第二客户端(或第二客户端中的小程序)响应于接收到的评论操作,在第二客户端(或第二客户端中的小程序)中呈现评论界面;响应于针对评论界面的评论操作,获取针对演唱内容的评论,并将评论发送至第一客户端中的小程序。
举例来说,参见图5b,图5b是本发明实施例提供的演唱处理方法的应用场景示意图。图5b中,当观众需要针对表演内容进行评论时,通过在第二客户端的小程序中进行评论操作,可以在第二客户端的小程序中显示评论界面,并且评论界面中包括评论栏501,观众可以在评论栏501中键入评论内容或在评论栏501中选择评论内容(例如评论文字或表情包),最后将键入的评论内容或选择的评论内容发送至第一客户端中的小程序。
在一些实施例中,第二客户端(或第二客户端中的小程序)响应于接收到的打赏操作,在第二客户端(或第二客户端中的小程序)中呈现打赏界面;响应于针对打赏界面的打赏操作,获取针对演唱内容的打赏信息(电子红包或礼物),并将打赏信息发送至第一客户端中的小程序。其中,打赏操作可以是发送电子红包。
举例来说,参见图5c,图5c是本发明实施例提供的演唱处理方法的应用场景示意图。图5c中,当观众需要针对表演内容进行打赏时,通过在第二客户端的小程序中进行打赏操作,可以在第二客户端的小程序中显示打赏界面,并且评论界面中包括打赏栏502,观众可以在打赏栏502中选择打赏内容,最后将选择的打赏内容发送至第一客户端中的小程序。其中,打赏内容可以是电子红包。
在步骤s110中,第一客户端的小程序中实时呈现互动内容。
在一些实施例中,第一客户端的小程序中实时呈现与互动内容关联的特效;其中,特效的类型包括以下至少之一:视觉反馈;听觉反馈;触觉反馈。
这里,视觉反馈可以是表征接收到互动内容的动画效果;听觉反馈可以是表征接收到互动内容的动作声音;触觉反馈可以是表征接收到互动内容的触觉振动等,这些特效均能够在不影响用户表演的情况下,吸引用户对于互动内容的关注。
举例来说,当互动内容的类型是评论时,可以在第一客户端的小程序中以动画的形式(例如滚动播放或弹幕播放)呈现评论文字或表情包,也可以在第一客户端的小程序中以语音的形式播报评论文字,也可以使运行第一客户端的终端进行振动,以提示表演者收到评论。
举例来说,当互动内容的类型是电子红包时,可以在第一客户端的小程序中呈现对应于电子红包的动画,也可以在第一客户端的小程序中以语音的形式播报电子红包的金额,也可以使运行第一客户端的终端进行震动,,以提示表演者收到电子红包。
本发明实施例能够使观众实时地、流畅地与表演者进行互动,提高了表演者和观众双方的体验。
下面继续说明本发明实施例提供的演唱处理装置555的实施为软件模块的示例性结构,在一些实施例中,如图2a所示,演唱处理装置531中的软件模块可以包括:接收模块5311、获取模块5312和发送模块5313。
接收模块5311,用于第一客户端中的小程序接收用于演唱的伴奏内容,并呈现伴奏内容;
获取模块5312,用于实时获取对应伴奏内容同步表演的演唱内容;
发送模块5313,用于将实时获取的演唱内容以及对应的伴奏内容,发送到第二客户端,以使第二客户端呈现与表演同步的演唱内容以及对应的伴奏内容。
在一些实施例中,演唱处理装置531还包括:请求模块,用于响应于在小程序中接收到的歌曲搜索操作,向演唱服务器发送被搜索的歌曲的演唱请求;或者,呈现热门歌曲列表;响应于针对热门歌曲列表的歌曲选择操作,向演唱服务器发送被选中的热门歌曲的演唱请求;其中,演唱请求用于请求演唱服务器发送对应的伴奏内容。
在一些实施例中,接收模块5311,还用于接收演唱服务器发送的伴奏内容;其中,伴奏内容是由演唱服务器响应于演唱请求,调用推流组件,将伴奏内容转化成流数据的形式后发送的。
在一些实施例中,接收模块5311,还用于在小程序中播放伴奏内容,并在小程序的页面中对应伴奏内容的播放进度而呈现同步的歌词。
在一些实施例中,接收模块5311,还用于当伴奏内容播放开始时,启动异步计时器进行计时;每当异步计时器计时一个校准时间段阈值时,确定显示歌词的时间戳,并对显示歌词的时间戳进行校准,以使小程序的页面中显示与播放伴奏内容的播放进度同步的歌词。
在一些实施例中,获取模块5312,还用于实时获取表演者对应伴奏内容同步表演的演唱视频或演唱音频;其中,实时获取表演者对应伴奏内容同步表演的演唱视频或音频,包括:第一客户端中的小程序调用第一客户端的基础库中的摄像头组件和麦克风组件,实时采集表演者的表演而形成演唱视频;或者,第一客户端中的小程序调用第一客户端的基础库中的麦克风组件,实时采集表演者的表演而形成演唱音频。
在一些实施例中,演唱处理装置531还包括:登录模块,用于第一客户端中的小程序基于第一客户端的用户账户登录直播房间。
在一些实施例中,发送模块5313,还用于将实时获取的演唱内容以及对应的伴奏内容,发送到与加入直播房间的观众账号关联的第二客户端,以使第二客户端呈现与表演同步的演唱内容以及对应的伴奏内容。
在一些实施例中,发送模块5313,还用于第一客户端中的小程序调用第一客户端的基础库中的推流组件,将演唱内容和伴奏内容转换为至少两个流媒体分片,并将至少两个流媒体分片发送至第二客户端;其中,每个流媒体分片能够在第二客户端中被独立解码和播放。
在一些实施例中,演唱处理装置531还包括:邀请模块,用于呈现与第一客户端的用户账号具有社交关系的社交账号;响应于针对社交账号的邀请操作,向被邀请的社交账号发送邀请消息,以使被邀请的社交账号通过邀请消息加入直播房间而成为观众账号;其中,社交关系的类型包括以下至少之一:好友;订阅;关注;评论。
在一些实施例中,发送模块5313,还用于响应于社交账号选择操作;将演唱内容和伴奏内容发送至与被选中的社交账号关联的第二客户端;或者,将演唱内容和伴奏内容发送至与被选中的社交账号关联的第二客户端中的小程序;其中,社交账号是与第一客户端的用户账号存在社交关系的账号;社交关系的类型包括以下至少之一:好友;订阅;关注;评论。
在一些实施例中,演唱处理装置531还包括:运行模块,用于第一客户端响应于小程序搜索操作,在第一客户端中下载小程序,并运行下载后的小程序;或者,第一客户端获取小程序分享链接;响应于针对小程序分享链接的触发操作,在第一客户端中下载小程序,并运行下载后的小程序。
在一些实施例中,演唱处理装置531还包括:清理模块,用于确定小程序的可用缓存;当小程序中的可用缓存低于容量阈值时,清理小程序中的缓存空间,以使小程序的可用缓存不低于容量阈值。
在一些实施例中,清理模块,还用于清理小程序的缓存空间中已缓存的伴奏内容,以使小程序能够接收用于演唱的伴奏内容,并存储至小程序的缓存空间。
在一些实施例中,演唱处理装置531还包括:解密模块,用于当小程序接收到的伴奏内容是加密内容时,将伴奏内容进行解密,并将解密后的伴奏内容存储至小程序的缓存空间;当小程序不支持解密后的伴奏内容的格式时,将解密后的伴奏内容的格式转换成小程序支持的格式。
在一些实施例中,演唱处理装置531还包括:互动模块,用于接收由第二客户端获取的针对演唱内容的互动内容;在第一客户端的小程序中实时呈现互动内容;其中,互动内容的类型至少包括以下之一:评论;电子红包。
本发明实施例提供一种存储有可执行指令的存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本发明实施例提供的演唱处理方法,例如,如图3a、图4a、和图5a等示出的方法。
在一些实施例中,存储介质可以是fram、rom、prom、eprom、eeprom、闪存、磁表面存储器、光盘、或cd-rom等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(html,hypertextmarkuplanguage)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
下面,将以第一客户端和第二客户端是社交app为例说明在一个实际的应用场景中演唱处理的示例性应用。
本发明实施例提供的演唱方法可以解决以下技术问题。
1)本地解密曲库的内存管理的问题
基于对内容安全的考虑,音乐服务器(即上述的演唱服务器)提供给客户端的伴奏曲库是加密曲库,无法直接通过url在线播放。因此,当用户点歌时,客户端必须事先下载音频文件(即上述的伴奏内容)并进行解密处理。由于解密的数据是在小程序的内存(即上述的缓存空间)中存储的,因此容易超过小程序的内存限制(例如12m),导致小程序会向用户频繁提示“下载歌曲失败”的错误。为了解决这一问题,参见图6,图6是本发明实施例提供的本地解密曲库的原理示意图,图6中,在用户每次点歌完成后,小程序会自动删除上一次点歌的缓存文件,并且该删除请求会自动重试,以保证用户不会因为缓存超过小程序的内存限制而出现“下载歌曲失败”的错误。
另外,小程序直接解密后的文件格式为m4a,低版本的客户端中的基础库不支持直接播放,因此,还需要对低版本的客户端进行兼容处理。也就是说,对于版本高的客户端,可以直接播放解密后的m4a文件即可,但对于版本低的客户端,后台(或称后端)还需要将m4a格式转化为mp3格式。
2)本地异步歌曲计时器解决cpu占用过高的问题
相关技术中,参见图7a,图7a是相关技术提供的歌词校准的原理示意图,图7a中,在校准歌词时会使用音视频上行(live-pusher)组件,为了使用户在唱歌过程中歌词与伴奏同步,需要频繁回调,将会导致cpu占用过高,在用户侧直接表现为声音卡顿或听不到声音的现象。
针对上述问题,本发明实施例放弃使用音视频上行组件的歌曲进度回调功能,在小程序的后台中建立一个异步计时器。参见图7b,图7b是本发明实施例提供的歌词校准的原理示意图,图7b中,在伴奏内容播放开始时,前端的开发组件(event)控制异步计时器的启动,异步计时器启动后便开始计时,每间隔500ms计算当前位置的时间进度,并将显示歌词的时间戳和播放伴奏内容的时间戳进行校准,从而实现歌曲伴奏与歌词同步。当表演者在麦上停留(使用麦克风)时间接近歌曲时长时,自动将表演者踢下台。
由上可知,本发明实施例所提供的演唱方法的具体实现过程如图8所示,图8是本发明实施例提供的演唱方法的流程示意图,图8中,当演唱者(即上述的表演者)开始点歌时,后台从音乐服务器提供的曲库下载音频文件,再进行本地解密,然后再通过音视频下行(live-player)组件下行推流给演唱者,这时演唱者就能够听到伴奏了。当开始推流的时候,小程序的本地异步计时器也开始计时,并在每计时500ms时与歌词的时间戳进行对齐,并在小程序的显示页面中显示已经对齐时间戳的歌词,以保证歌词与伴奏同步。这时,演唱者不但可以听到伴奏、而且可以看到与伴奏同步的歌词,就可以通过麦克风演唱歌曲了。当演唱者通过麦克风演唱歌曲时,live-pusher组件将演唱音频(即上述的演唱内容)推送到服务器,然后服务器再将音频实时地推流给到观众,这样观众也就可以实时地听到人声演唱的歌曲了,直至整首歌曲结束。
综上所述,本发明实施例具有以下有益效果:
(1)同时兼容了客户端实时唱歌的强互动性、小程序本身的便捷性和易于传播性的优点。对于中老年用户而言,不再需要复杂的下载和安装客户端的流程,且同时能够随时随地地邀请好友一起唱歌。
(2)解决了小程序固有的存储空间小、性能差等缺陷,保证了用户能够流畅地完成点歌、唱歌的动作,同时观众也能够实时地、流畅地与之进行互动(例如,发送公屏消息、赠送礼物等)。
以上所述,仅为本发明的实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。
1.一种演唱处理方法,其特征在于,所述方法包括:
第一客户端中的小程序接收用于演唱的伴奏内容,并呈现所述伴奏内容;
实时获取对应所述伴奏内容同步表演的演唱内容;
将所述实时获取的演唱内容以及对应的伴奏内容,发送到第二客户端。
2.根据权利要求1所述的方法,其特征在于,在所述第一客户端中的小程序接收用于演唱的伴奏内容之前,所述方法还包括:
响应于在所述小程序中接收到的歌曲搜索操作,发送被搜索的歌曲的演唱请求;
或者,
呈现热门歌曲列表;
响应于针对所述热门歌曲列表的歌曲选择操作,发送被选中的热门歌曲的演唱请求;
其中,所述演唱请求用于请求所述伴奏内容。
3.根据权利要求2所述的方法,其特征在于,所述第一客户端中的小程序接收用于演唱的伴奏内容,包括:
所述第一客户端中的小程序接收服务器发送的所述伴奏内容;
其中,所述伴奏内容是由所述服务器响应于所述演唱请求,调用推流组件,将所述伴奏内容转化成流数据的形式后发送的。
4.根据权利要求1所述的方法,其特征在于,所述呈现所述伴奏内容,包括:
所述第一客户端中的小程序播放所述伴奏内容,并
在所述小程序的页面中对应所述伴奏内容的播放进度而呈现同步的歌词;
其中,所述在所述小程序的页面中对应所述伴奏内容的播放进度而呈现同步的歌词,包括:
当所述伴奏内容播放开始时,启动异步计时器进行计时;
每当所述异步计时器计时一个校准时间段阈值时,确定显示所述歌词的时间戳,并对显示所述歌词的时间戳进行校准,以使
所述小程序的页面中显示与播放所述伴奏内容的播放进度同步的歌词。
5.根据权利要求1所述的方法,其特征在于,所述实时获取对应所述伴奏内容同步表演的演唱内容,包括:
实时获取表演者对应所述伴奏内容同步表演的演唱视频或演唱音频;
其中,所述实时获取表演者对应所述伴奏内容同步表演的演唱视频或音频,包括:
所述第一客户端中的小程序调用所述第一客户端的基础库中的摄像头组件和麦克风组件,以实时采集所述表演者的表演而形成演唱视频;
或者,
所述第一客户端中的小程序调用所述第一客户端的基础库中的麦克风组件,以实时采集所述表演者的表演而形成演唱音频。
6.根据权利要求1所述的方法,其特征在于,
在所述第一客户端中的小程序接收用于演唱的伴奏内容之前,所述方法还包括:
所述第一客户端中的小程序基于所述第一客户端的用户账户登录直播房间;
所述将所述实时获取的演唱内容以及对应的伴奏内容,发送到第二客户端,包括:
将所述实时获取的演唱内容以及对应的伴奏内容,发送到与加入所述直播房间的观众账号关联的第二客户端。
7.根据权利要求6所述的方法,其特征在于,所述将所述实时获取的演唱内容以及对应的伴奏内容,发送到与加入所述直播房间的观众账号关联的第二客户端,包括:
所述第一客户端中的小程序调用所述第一客户端的基础库中的推流组件,将所述演唱内容和所述伴奏内容转换为至少两个流媒体分片,并
将所述至少两个流媒体分片发送至所述第二客户端;
其中,每个所述流媒体分片能够在所述第二客户端中被独立解码和播放。
8.根据权利要求6所述的方法,其特征在于,在所述将所述实时获取的演唱内容以及对应的伴奏内容,发送到与加入所述直播房间的观众账号关联的第二客户端之前,所述方法还包括:
呈现与所述第一客户端的用户账号具有社交关系的社交账号;
响应于针对所述社交账号的邀请操作,向被邀请的社交账号发送邀请消息,以使
被邀请的社交账号通过所述邀请消息加入所述直播房间而成为所述观众账号;
其中,所述社交关系的类型包括以下至少之一:好友;订阅;关注;评论。
9.根据权利要求1所述的方法,其特征在于,所述将所述实时获取的演唱内容以及对应的伴奏内容,发送到第二客户端,包括:
响应于社交账号选择操作;
将所述演唱内容和所述伴奏内容发送至与被选中的社交账号关联的第二客户端;或者,
将所述演唱内容和所述伴奏内容发送至与被选中的社交账号关联的第二客户端中的小程序;
其中,所述社交账号是与所述第一客户端的用户账号存在社交关系的账号;
所述社交关系的类型包括以下至少之一:好友;订阅;关注;评论。
10.根据权利要求1至9任一项所述的方法,其特征在于,在所述第一客户端中的小程序接收用于演唱的伴奏内容之前,所述方法还包括:
检测所述小程序的可用缓存;当所述小程序中的可用缓存低于容量阈值时,清理所述小程序中的缓存空间,以使所述小程序的可用缓存不低于所述容量阈值;
或者,
清理所述小程序的缓存空间中已缓存的伴奏内容,以使所述小程序能够接收所述用于演唱的伴奏内容,并存储至所述小程序的缓存空间。
11.根据权利要求1至9任一项所述的方法,其特征在于,在所述第一客户端中的小程序接收用于演唱的伴奏内容之后,所述方法还包括:
当所述小程序接收到的伴奏内容是加密内容时,将所述伴奏内容进行解密,并将解密后的伴奏内容存储至所述小程序的缓存空间;
当所述小程序不支持解密后的伴奏内容的格式时,将解密后的伴奏内容的格式转换成所述小程序支持的格式。
12.根据权利要求1至9任一项所述的方法,其特征在于,在所述将所述实时获取的演唱内容以及对应的伴奏内容,发送到第二客户端之后,所述方法还包括:
接收由所述第二客户端获取的针对所述演唱内容的互动内容;
在所述第一客户端的小程序中实时呈现所述互动内容;
其中,所述互动内容的类型至少包括以下之一:评论;电子红包。
13.一种演唱处理装置,其特征在于,包括:
接收模块,用于第一客户端中的小程序接收用于演唱的伴奏内容,并呈现所述伴奏内容;
获取模块,用于实时获取对应所述伴奏内容同步表演的演唱内容;
发送模块,用于将所述实时获取的演唱内容以及对应的伴奏内容,发送到第二客户端。
14.一种电子设备,其特征在于,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至12任一项所述的演唱处理方法。
15.一种存储介质,其特征在于,存储有可执行指令,用于引起处理器执行时,实现权利要求1至12任一项所述的演唱处理方法。
技术总结