CN110351569A - 一种直播内容处理方法、装置、设备及介质 - Google Patents
一种直播内容处理方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN110351569A CN110351569A CN201910555754.6A CN201910555754A CN110351569A CN 110351569 A CN110351569 A CN 110351569A CN 201910555754 A CN201910555754 A CN 201910555754A CN 110351569 A CN110351569 A CN 110351569A
- Authority
- CN
- China
- Prior art keywords
- live content
- sequence number
- live
- client
- processed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/218—Source of audio or video content, e.g. local disk arrays
- H04N21/2187—Live feed
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/45—Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
- H04N21/4508—Management of client data or end-user data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/65—Transmission of management data between client and server
- H04N21/658—Transmission by the client directed to the server
- H04N21/6587—Control parameters, e.g. trick play commands, viewpoint selection
Abstract
本申请公开了一种直播内容处理方法、装置、设备及介质,应用于互联网技术领域,用以保证各个客户端对直播内容的有序处理。具体为:服务器接收直播内容,确定直播内容对应的各个目的客户端,针对每一个目的客户端,基于目的客户端的当前推送序列,为直播内容配置序列号,并将直播内容和序列号封装成直播消息推送至目的客户端;客户端接收直播消息,根据直播消息携带的序列号,将直播消息携带的直播内容加入待处理队列,依次从待处理队列中获取直播内容进行处理。这样,通过服务器为直播内容配置序列号,使得客户端能够按照序列号从小到大的顺序维护一个待处理队列,进而通过依次从待处理队列中获取直播内容进行处理,实现了对直播内容的有序处理。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种直播内容处理方法、装置、设备及介质。
背景技术
在线直播是利用互联网和流媒体技术进行直播,融合了图像、文字、声音等元素,声形并茂,效果极佳,逐渐成为当前主流的在线交流方式。
实际应用中,主播用户可以通过主播客户端创建直播间,并通过该直播间进行在线直播,而观众用户可以通过观众客户端进入该直播间观看直播。
在直播过程中,可能会产生大量的直播内容需要服务器推送到相应的客户端中,如何保证直播间内的各个客户端对服务器推送的直播内容进行有序处理,是一个需要考虑的问题。
发明内容
本申请实施例提供了一种直播内容处理方法、装置、设备及介质,用以保证各个客户端对服务器推送的直播内容进行有序处理。
本申请实施例提供的具体技术方案如下:
一方面,本申请实施例提供了一种直播内容处理方法,包括:
接收服务器推送的直播消息,其中,直播消息至少携带有直播内容和服务器基于直播内容的推送顺序为直播内容配置的序列号;
根据直播内容的序列号并按照序列号从小到大的排列顺序,将直播内容加入待处理队列;
依次从待处理队列中获取直播内容作为待处理的直播内容,并对待处理的直播内容进行处理。
在一种可能的实施方式中,根据直播内容的序列号并按照序列号从小到大的排列顺序,将直播内容加入待处理队列之前,还包括:
基于直播内容的序列号和待处理队列中最后一个直播内容的序列号,检测出序列号未出现断序时,确定直播内容未出现丢失。
在一种可能的实施方式中,本申请实施例提供的直播内容处理方法还包括:
基于直播内容的序列号和待处理队列中最后一个直播内容的序列号,检测出序列号出现断序时,确定直播内容出现丢失,并将断序的各个序列号携带在丢失消息获取请求中发送至服务器;
接收服务器返回的丢失消息获取响应,其中,丢失消息获取响应是服务器基于丢失消息获取请求携带的各个序列号获得相应的直播内容后返回的;
从丢失消息获取响应中,获取丢失的各个直播内容和各个直播内容各自的序列号,根据各个直播内容的序列号并按照序列号从小到大的排列顺序,将各个直播内容加入待处理队列。
在一种可能的实施方式中,本申请实施例提供的直播内容处理方法还包括:
基于直播内容的序列号和待处理队列中最后一个直播内容的序列号,检测出直播内容与已处理的直播内容重复时,丢弃直播内容。
在一种可能的实施方式中,对待处理的直播内容进行处理之前,还包括:
基于待处理的直播内容的序列号和上一个已处理的直播内容的序列号,检测出序列号未出现断序时,确定直播内容未出现丢失。
在一种可能的实施方式中,本申请实施例提供的直播内容处理方法还包括:
基于待处理的直播内容的序列号和上一个已处理的直播内容的序列号,检测出序列号出现断序时,确定直播内容出现丢失,并将断序的各个序列号携带在丢失消息获取请求中发送至服务器;
接收服务器返回的丢失消息获取响应,其中,丢失消息获取响应是服务器基于丢失消息获取请求携带的各个序列号获得相应的直播内容后返回的;
从丢失消息获取响应中,获取丢失的各个直播内容和各个直播内容各自的序列号,根据各个直播内容的序列号并按照序列号从小到大的排列顺序,将各个直播内容加入待处理队列。
在一种可能的实施方式中,本申请实施例提供的直播内容处理方法还包括:
基于待处理的直播内容的序列号和上一个已处理的直播内容的序列号,检测出待处理的直播内容与已处理的直播内容重复时,丢弃待处理的直播内容。
在一种可能的实施方式中,本申请实施例提供的直播内容处理方法还包括按照设定轮询周期,循环执行以下操作:
将当前接收的最大序列号携带在延时检测请求中发送至服务器;
接收服务器返回的延时检测响应,其中,延时检测响应是服务器基于延时检测请求携带的最大序列号与当前推送的最大序列号,检测出直播内容是否出现延时后返回的;
若基于延时检测响应,确定直播内容未出现延时,则确定本次轮询结束;若基于延时检测响应,确定直播内容出现延时,则从延时检测响应中获取出现延时的各个直播内容和各个直播内容各自的序列号,根据各个直播内容各自的序列号并按照序列号从小到大的排列顺序,将各个直播内容加入待处理队列,并确定本次轮询结束。
在一种可能的实施方式中,进入下一个轮询周期之前,还包括:
若确定直播内容出现延时,则将设定轮询周期确定为目标轮询周期并作为下一个轮询周期。
若确定直播内容未出现延时,则确定在当前轮询周期内未接收到服务器推送的直播消息时,按照周期退火策略,对当前轮询周期进行调整,得到目标轮询周期并作为下一个轮询周期;确定在当前轮询周期内接收到服务器推送的直播消息时,将设定轮询周期确定为目标轮询周期并作为下一个轮询周期;其中,在首次轮询时,当前轮询周期为设定轮询周期,在非首次轮询时,当前轮询周期为上一次轮询过程中确定的目标轮询周期。
在一种可能的实施方式中,按照周期退火策略,对当前轮询周期进行调整,得到目标轮询周期,包括:
以当前轮询周期为基准,按照设定倍数,延迟当前轮询周期,得到待定轮询周期;
确定待定轮询周期未超出周期阈值时,将待定轮询周期确定为目标轮询周期;
确定待定轮询周期超出周期阈值时,将设定轮询周期确定为目标轮询周期。
另一方面,本申请实施例提供了一种直播内容处理方法,包括:
接收到直播内容时,确定直播内容对应的各个目的客户端;
针对每一个目的客户端,基于目的客户端的当前推送序列,为直播内容配置序列号,并将直播内容和序列号封装成直播消息推送至目的客户端。
在一种可能的实施方式中,基于目的客户端的当前推送序列,为直播内容配置序列号,包括:
若目的客户端的当前推送序列为空,则将设定的起始推送序列号配置为直播内容的序列号;
若目的客户端的当前推送序列不为空,则将当前推送序列中的最后一个推送序列号与序列号间隔的总和配置为直播内容的序列号。
在一种可能的实施方式中,本申请实施例提供的直播内容处理方法还包括:
接收到丢失消息获取请求时,确定直播内容出现丢失,并基于丢失消息获取请求携带的各个序列号,从本地获取相应的直播内容;
将获得的各个直播内容和各个直播内容各自的序列号携带在丢失消息获取响应中返回至丢失消息获取请求的发送客户端。
在一种可能的实施方式中,本申请实施例提供的直播内容处理方法还包括:
接收到延时检测请求时,确定延时检测请求的发送客户端以及发送客户端的当前推送序列;
基于延时检测请求携带的最大序列号和发送客户端的当前推送序列中的最大序列号,检测直播内容是否出现延时;
若检测出直播内容出现延时,则基于延时检测请求携带的最大序列号和发送客户端的当前推送序列中的最大序列号之间相差的各个序列号,从本地获取相应的直播内容,并将获得的各个直播内容和各个直播内容各自的序列号携带在延时检测响应中返回至发送客户端;
若检测出直播内容未出现延时,则向发送客户端返回内容为空的延时检测响应。
另一方面,本申请实施例提供了一种直播内容处理装置,包括:
消息接收单元,用于接收服务器推送的直播消息,其中,直播消息至少携带有直播内容和服务器基于直播内容的推送顺序为直播内容配置的序列号;
队列维护单元,用于根据直播内容的序列号并按照序列号从小到大的排列顺序,将直播内容加入待处理队列;
内容处理单元,用于依次从待处理队列中获取直播内容作为待处理的直播内容,并对待处理的直播内容进行处理。
在一种可能的实施方式中,本申请实施例提供的直播内容处理装置还包括:
第一检测单元,用于在队列维护单元根据直播内容的序列号并按照序列号从小到大的排列顺序,将直播内容加入待处理队列之前,基于直播内容的序列号和待处理队列中最后一个直播内容的序列号,检测出序列号未出现断序时,确定直播内容未出现丢失。
在一种可能的实施方式中,本申请实施例提供的直播内容处理装置还包括:
第一获取单元,用于在第一检测单元基于直播内容的序列号和待处理队列中最后一个直播内容的序列号,检测出序列号出现断序时,确定直播内容出现丢失,并将断序的各个序列号携带在丢失消息获取请求中发送至服务器;接收服务器返回的丢失消息获取响应,其中,丢失消息获取响应是服务器基于丢失消息获取请求携带的各个序列号获得相应的直播内容后返回的;从丢失消息获取响应中,获取丢失的各个直播内容和各个直播内容各自的序列号,根据各个直播内容的序列号并按照序列号从小到大的排列顺序,将各个直播内容加入待处理队列。
在一种可能的实施方式中,本申请实施例提供的直播内容处理装置还包括:
第一丢弃单元,用于在第一检测单元基于直播内容的序列号和待处理队列中最后一个直播内容的序列号,检测出直播内容与已处理的直播内容重复时,丢弃直播内容。
在一种可能的实施方式中,本申请实施例提供的直播内容处理装置还包括:
第二检测单元,用于在内容处理单元对待处理的直播内容进行处理之前,基于待处理的直播内容的序列号和上一个已处理的直播内容的序列号,检测出序列号未出现断序时,确定直播内容未出现丢失。
在一种可能的实施方式中,本申请实施例提供的直播内容处理装置还包括:
第二获取单元,用于在第二检测单元基于待处理的直播内容的序列号和上一个已处理的直播内容的序列号,检测出序列号出现断序时,确定直播内容出现丢失,并将断序的各个序列号携带在丢失消息获取请求中发送至服务器;接收服务器返回的丢失消息获取响应,其中,丢失消息获取响应是服务器基于丢失消息获取请求携带的各个序列号获得相应的直播内容后返回的;从丢失消息获取响应中,获取丢失的各个直播内容和各个直播内容各自的序列号,根据各个直播内容的序列号并按照序列号从小到大的排列顺序,将各个直播内容加入待处理队列。
在一种可能的实施方式中,本申请实施例提供的直播内容处理装置还包括:
第二丢弃单元,用于在第二检测单元基于待处理的直播内容的序列号和上一个已处理的直播内容的序列号,检测出待处理的直播内容与已处理的直播内容重复时,丢弃待处理的直播内容。
在一种可能的实施方式中,本申请实施例提供的直播内容处理装置还包括:
定期轮询单元,用于按照设定轮询周期,确定本次轮询的轮询时间并发送至消息同步单元;接收到消息同步单元发送的同步完成消息时,确定本次轮询结束;
消息同步单元,用于按照定期轮询单元发送的轮询时间,将当前接收的最大序列号携带在延时检测请求中发送至服务器;接收服务器返回的延时检测响应,其中,延时检测响应是服务器基于延时检测请求携带的最大序列号与当前推送的最大序列号,检测出直播内容是否出现延时后返回的;若基于延时检测响应,确定直播内容未出现延时,则向定期轮询单元发送同步完成通知;若基于延时检测响应,确定直播内容出现延时,则从延时检测响应中获取出现延时的各个直播内容和各个直播内容各自的序列号,根据各个直播内容各自的序列号并按照序列号从小到大的排列顺序,将各个直播内容加入待处理队列,并向定期轮询单元发送同步完成通知。
在一种可能的实施方式中,定期轮询单元还用于:
在确定本次轮询结束之前,若确定直播内容出现延时,则将设定轮询周期确定为目标轮询周期并作为下一个轮询周期;若确定直播内容未出现延时,则确定消息接收单元在当前轮询周期内未接收到服务器推送的直播消息时,按照周期退火策略,对当前轮询周期进行调整,得到目标轮询周期并作为下一个轮询周期;确定消息接收单元在当前轮询周期内接收到服务器推送的直播消息时,将设定轮询周期确定为目标轮询周期并作为下一个轮询周期;其中,在首次轮询时,当前轮询周期为设定轮询周期,在非首次轮询时,当前轮询周期为上一次轮询过程中确定的目标轮询周期。
在一种可能的实施方式中,在按照周期退火策略,对当前轮询周期进行调整,得到目标轮询周期时,定期轮询单元用于:
以当前轮询周期为基准,按照设定倍数,延迟当前轮询周期,得到待定轮询周期;
确定待定轮询周期未超出周期阈值时,将待定轮询周期确定为目标轮询周期;
确定待定轮询周期超出周期阈值时,将设定轮询周期确定为目标轮询周期。
另一方面,本申请实施例提供了一种直播内容处理装置,包括:
内容接收单元,用于接收到直播内容时,确定直播内容对应的各个目的客户端;
配置推送单元,用于针对每一个目的客户端,基于目的客户端的当前推送序列,为直播内容配置序列号,并将直播内容和序列号封装成直播消息推送至目的客户端。
在一种可能的实施方式中,在基于目的客户端的当前推送序列,为直播内容配置序列号时,配置推送单元用于:
若目的客户端的当前推送序列为空,则将设定的起始推送序列号配置为直播内容的序列号;
若目的客户端的当前推送序列不为空,则将当前推送序列中的最后一个推送序列号与序列号间隔的总和配置为直播内容的序列号。
在一种可能的实施方式中,本申请实施例提供的直播内容处理装置还包括:
丢失响应单元,用于接收到丢失消息获取请求时,确定直播内容出现丢失,并基于丢失消息获取请求携带的各个序列号,从本地获取相应的直播内容;将获得的各个直播内容和各个直播内容各自的序列号携带在丢失消息获取响应中返回至丢失消息获取请求的发送客户端。
在一种可能的实施方式中,本申请实施例提供的直播内容处理装置还包括:
延时响应单元,用于接收到延时检测请求时,确定延时检测请求的发送客户端以及发送客户端的当前推送序列;基于延时检测请求携带的最大序列号和发送客户端的当前推送序列中的最大序列号,检测直播内容是否出现延时;若检测出直播内容出现延时,则基于延时检测请求携带的最大序列号和发送客户端的当前推送序列中的最大序列号之间相差的各个序列号,从本地获取相应的直播内容,并将获得的各个直播内容和各个直播内容各自的序列号携带在延时检测响应中返回至发送客户端;若检测出直播内容未出现延时,则向发送客户端返回内容为空的延时检测响应。
另一方面,本申请实施例提供了一种直播内容处理设备,包括:存储器、处理器和存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现本申请实施例提供的应用于客户端的直播内容处理方法;或者,实现本申请实施例提供的应用于服务器的直播内容处理方法。
另一方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机指令,该计算机指令被处理器执行时实现本申请实施例提供的应用于客户端的直播内容处理方法;或者,实现本申请实施例提供的应用于服务器的直播内容处理方法。
本申请实施例的有益效果如下:
本申请实施例中,通过服务器为直播内容配置序列号并与直播内容一起推送至客户端,使得客户端能够按照序列号从小到大的顺序维护一个包含有服务器推送的各个直播内容的待处理队列,通过依次从待处理队列中获取直播内容进行处理,即可实现对服务器推送的各个直播内容的有序处理,从而提高了客户端播放直播的稳定性和可靠性。
附图说明
图1为本申请实施例中直播内容乱序导致直播显示内容错乱的示意图;
图2为本申请实施例中直播内容处理方法的应用场景示意图;
图3为本申请实施例中直播内容处理方法的交互流程示意图;
图4为本申请实施例中应用于客户端的直播内容处理方法的流程示意图;
图5为本申请实施例中直播内容丢失导致直播显示内容不完整的示意图;
图6为本申请实施例中直播内容延时导致客户端播放直播出现较长延时的示意图;
图7为本申请实施例中应用于服务器的直播内容处理方法的流程示意图;
图8A为本申请实施例中应用于客户端的直播内容处理装置的一种功能结构示意图;
图8B为本申请实施例中应用于客户端的直播内容处理装置的另一种功能结构示意图;
图9为本申请实施例中应用于服务器的直播内容处理装置的功能结构示意图;
图10为本申请实施例中直播内容处理设备的硬件结构示意图。
具体实施方式
为了使本领域技术人员更好地理解本申请,首先对本申请中提及的技术用语进行说明。
1、客户端,为安装在手机、计算机、个人数字助理(Personal Digital Assistant,PDA)、媒体播放器、智能电视等终端设备上的应用程序。本申请实施例中的客户端是指为用户提供直播服务,并且支持用户在线直播互动的应用程序,可以是但不限于是:主播客户端和观众客户端。
2、服务器,是为客户端提供数据库服务、计算服务和消息转发服务等各类服务的后台运行设备。本申请实施例中的服务器是指可以为客户端发送的直播内容配置序列号,并且可以为客户端提供消息推送服务的后台运行设备。
3、直播,为利用互联网技术和流媒体技术,将正在进行的现场实况播放给远端客户端的一种方式。
4、直播间,为服务器基于主播客户端的请求创建的一种虚拟空间,主播客户端和观众客户端可以进入到直播间中,并且可以在直播间内进行互动。
5、直播内容,为在直播过程中主播客户端与观众客户端之间的互动内容。例如,聊天消息、举手上麦、投票器、习题、签到等。
6、直播内容的序列号,本申请实施例中,为服务器根据直播内容的推送顺序,为该直播内容配置的序列号。
为了使本申请的目的、技术方案及有益效果更加清楚明白,以下将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,并不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,在直播过程中,主播客户端和观众客户端之间的互动内容通常需要服务器进行推送,服务器推送直播内容时,若网络出现波动,则很可能会导致直播内容在到达客户端时出现乱序,从而造成客户端在播放直播时出现显示内容错乱的问题,尤其是在线教育、在线宣传等对稳定性和可靠性要求较高的直播场景,当直播显示的内容出现错乱时,很可能造成主播客户端和观众客户端无法正常互动,从而影响直播效果和用户体验。例如:参阅图1所示,在通过直播进行在线教育的直播场景中,当服务器推送到观众客户端上的直播内容出现乱序时,可能会导致在观众客户端上显示的习题主题与选项不相符,从而造成观众用户无法通过观众客户端与主播用户进行互动,进而影响了在线教育的效果和用户体验。
为此,本申请实施例中,参阅图2所示,主播客户端201和各个观众客户端202可以通过互联网与服务器203进行通信连接,主播客户端201和各个观众客户端202发布的直播内容通过服务器203进行推送。具体的,主播客户端201监测到主播用户发布了直播内容时,将该直播内容携带在推送请求中发送至服务器203;服务器203接收到主播客户端201发送的推送请求时,针对直播间内的每一个观众客户端202,基于该观众客户端202的当前推送序列,为该推送请求携带的直播内容配置序列号,并将该直播内容和该序列号封装成直播消息推送至该观众客户端202,从而将主播客户端201发布的直播内容推送给了直播间内的所有观众客户端202。观众客户端202监测到观众用户发布了直播内容时,将该直播内容携带在推送请求中发送至服务器203;服务器203接收到观众客户端202发送的直播内容时,针对直播间内的其它每一个观众客户端202,基于该观众客户端202的当前推送序列,为该推送请求携带的直播内容配置序列号,并将该直播内容和该序列号封装成直播消息推送至该观众客户端202,从而将直播间内的一个观众客户端202发送的直播内容推送给了直播间内的其它所有观众客户端202,此外,服务器203还需要基于主播客户端201的当前推送序列,为直播内容配置序列号,并将该直播内容和该序列号封装成直播消息推送至主播客户端201,从而将直播间内的一个观众客户端202发送的直播内容推送给了主播客户端201。这样,无论是主播客户端201还是观众客户端202,接收到的直播消息中均携带有直播内容和该直播内容的序列号,根据直播内容的序列号并按照序列号从小到大的顺序,将该直播内容加入待处理队列,依次从待处理队列中获取直播内容进行处理,即可实现对服务器203推送的各个直播内容的有序处理,尽可能地避免了因直播内容在到达客户端时出现乱序,导致客户端播放直播时出现显示内容错乱的问题,提高了客户端播放直播的可靠性和稳定性。
在介绍了本申请实施例的应用场景和设计思想之后,下面对本申请实施例提供的技术方案进行说明。
首先,对直播内容处理过程中涉及的信令交互进行说明,参阅图3所示,本申请实施例提供的直播内容处理方法的交互流程如下:
步骤301:客户端监测到用户发布了直播内容时,将该直播内容携带在推送请求中发送至服务器。
步骤302:服务器接收到推送请求时,确定该推送请求对应的各个目的客户端,并针对每一个目的客户端,基于该目的客户端的当前推送序列,为该直播内容配置序列号,得到各个目的客户端各自对应的直播内容的序列号。
步骤303:服务器将各个目的客户端各自对应的直播内容和该直播内容的序列号分别封装成相应的直播消息并推送至相应的目的客户端。
步骤304:客户端接收到服务器推送的直播消息时,根据该直播消息携带的序列号并按照序列号从小到大的排列顺序,将该直播消息携带的直播内容加入待处理队列,并依次从待处理队列中获取直播内容作为待处理的直播内容,并对该待处理的直播内容进行处理。
本申请实施例中,在对直播内容进行处理的过程中,还可以通过检测直播内容是否出现断序,来确定直播内容是否出现丢失,进而,在检测出直播内容出现丢失时,通过步骤305-步骤308的信令交互,可以获得丢失的各个直播内容并进行处理。
步骤305:客户端将断序的序列号携带在丢失消息获取请求中发送至服务器。
步骤306:服务器接收到该丢失消息获取请求时,根据该丢失消息获取请求携带的各个序列号,从本地获取相应的直播内容。
步骤307:服务器将获得的各个直播内容和该各个直播内容各自的序列号携带在丢失消息获取响应中返回至该客户端。
步骤308:客户端接收到服务器返回的消息获取响应时,从该丢失消息获取响应中获取丢失的各个直播内容和该各个直播内容的序列号,并根据该直播内容的序列号并按照序列号从小到大的排列顺序,将丢失的各个直播内容加入至待处理队列。
此外,本申请实施例中,在对直播内容进行处理的过程中,还可以通过步骤309-步骤312的信令交互,定期地检测直播内容是否出现延时,并在确定直播内容出现延时时,主动获取出现延时的各个直播内容进行处理。
步骤309:客户端周期性地将当前接收的最大序列号携带在延时检测请求中发送至服务器。
步骤310:服务器接收到该延时检测请求时,基于该延时检测请求携带的最大序列号和当前推送至该客户端的最大序列号,检测直播内容是否出现延时,若是,则执行步骤311;若否,则执行步骤313。
步骤311:服务器从本地获取出现延时的各个直播内容,并将各个直播内容和各个直播内容各自的序列号携带在延时检测响应中返回至该客户端。
步骤312:客户端接收到服务器返回的延时检测响应时,若检测出该延时检测响应的内容不为空,则确定直播内容出现延时,从该延时检测响应中获取出现延时的各个直播内容和各个直播内容各自的序列号,根据各个直播内容各自的序列号并按照序列号从小到大的排列顺序,将各个直播内容加入待处理队列,并进入下一个轮询周期。
步骤313:服务器向该客户端返回内容为空的延时检测响应。
步骤314:客户端接收到服务器返回的延时检测响应时,若检测出该延时检测响应的内容为空,则确定直播内容未出现延时,并进入下一个轮询周期。
下面对本申请实施例提供的应用于客户端的直播内容处理方法进行详细说明,参阅图4所示,本申请实施例提供的应用于客户端的直播内容处理方法的流程如下:
步骤401:客户端接收服务器推送的直播消息,其中,该直播消息至少携带有直播内容和服务器基于该直播内容的推送顺序为该直播内容配置的序列号。
步骤402:客户端根据该直播内容的序列号并按照序列号从小到大的排列顺序,将该直播内容加入待处理队列。
实际应用中,服务器推送直播内容时,若网络出现波动,还可能会导致直播内容出现丢失,从而造成客户端播放直播时出现显示内容不完整的问题,使得主播客户端和观众客户端无法正常互动,进而影响直播效果和用户体验。例如:参阅图5所示,在通过直播进行在线教育的直播场景中,当服务器推送的直播内容出现丢失时,可能会导致在观众客户端上显示的习题不完整,从而造成观众用户无法通过观众客户端与主播用户进行互动,进而影响了在线教育的效果和用户体验。
为此,本申请实施例中,为了尽可能地避免因直播内容在推送过程中出现丢失,导致客户端播放直播时出现显示内容不完整的问题,在一种可能的实施方式中,客户端可以在根据该直播内容的序列号并按照序列号从小到大的排列顺序,将该直播内容加入待处理队列之前,基于该直播内容的序列号和待处理队列中最后一个直播内容的序列号,检测序列号是否出现断序。
实际应用中,客户端基于直播内容的序列号和待处理队列中最后一个直播内容的序列号,检测序列号是否出现断序时,可以采用但不限于以下方式:
方式1-1:通过检测待处理队列中最后一个直播内容的序列号和序列号间隔的总和是否等于直播内容的序列号,来确定序列号是否出现断序。
具体的,若检测出待处理队列中最后一个直播内容的序列号和序列号间隔的总和等于直播内容的序列号,则可以确定序列号未出现断序;若检测出待处理队列中最后一个直播内容的序列号和序列号间隔的总和小于直播内容的序列号,则可以确定序列号出现断序。
方式1-2:通过检测直播内容的序列号和待处理队列中最后一个直播内容的序列号的差值是否等于序列号间隔,来确定序列号是否出现断序。
具体的,若检测出直播内容的序列号和待处理队列中最后一个直播内容的序列号的差值等于序列号间隔,则可以确定序列号未出现断序;若检测出直播内容的序列号和待处理队列中最后一个直播内容的序列号的差值大于序列号间隔,则可以确定序列号出现断序。
方式1-3:通过检测直播内容的序列号和序列号间隔的差值是否等于待处理队列中最后一个直播内容的序列号,来确定序列号是否出现断序。
具体的,若检测出直播内容的序列号和序列号间隔的差值等于待处理队列中最后一个直播内容的序列号,则可以确定序列号未出现断序;若检测出直播内容的序列号和序列号间隔的差值大于待处理队列中最后一个直播内容的序列号,则可以确定序列号出现断序。
进一步的,客户端若检测出序列号未出现断序,则可以确定直播内容未出现丢失。此种情况下,客户端可以直接根据该直播内容的序列号并按照序列号从小到大的排列顺序,将直播内容加入待处理队列;若检测出序列号出现断序,则可以确定直播内容出现丢失。此种情况下,客户端可以先将该直播内容和该直播内容的序列号存储到指定区域中,当从服务器中获取到丢失的各个直播内容并加入待处理队列后,再从指定区域中获取该直播内容和该直播内容的序列号,并根据该直播内容的序列号并按照序列号从小到大的排列顺序,将该直播内容加入待处理队列。
具体的,客户端从服务器中获取丢失的各个直播内容并加入待处理队列时,可以采用但不限于以下方式:
首先,客户端将断序的序列号携带在丢失消息获取请求中发送至服务器。
然后,客户端接收到服务器返回的消息获取响应时,从该丢失消息获取响应中获取丢失的各个直播内容和该各个直播内容的序列号。
最后,客户端根据该直播内容的序列号并按照序列号从小到大的排列顺序,将丢失的各个直播内容加入至待处理队列。
这样,客户端在根据该直播内容的序列号并按照序列号从小到大的排列顺序,将该直播内容加入待处理队列之前,基于该直播内容的序列号和待处理队列中最后一个直播内容的序列号,检测序列号是否出现断序,可以及时地发现直播内容是否出现丢失,并且,在确定直播内容出现丢失时,还可以主动地从服务器中获取丢失的直播内容并加入待处理队列,从而有效地避免了因直播内容在推送过程中出现丢失,导致客户端在播放直播时出现显示内容不完整的问题,提高了客户端播放直播的稳定性和可靠性。
值得说的是,本申请实施例中,客户端在根据直播内容的序列号并按照序列号从小到大的排列顺序,将该直播内容加入待处理队列时,可以采用但不限于以下方式:将序列号确定为名称(Key),将直播内容确定为值(Value),获得由序列号和直播内容组成的键值(K-Value)对,根据直播内容的序列号并按照序列号从小到大的排列顺序,将K-Value对加入到待处理队列中。
例如:假设直播内容为直播内容M,序列号为2,待处理队列为(1-直播内容N),则客户端可以将序列号2确定为Key,将直播内容M确定为Value,获得K-Value对为2-直播内容P100,根据序列号2并按照序列号从小到大的排列顺序,将2-直播内容M加入到待处理队列中,从而得到的待处理队列为(1-直播内容N,2-直播内容M)。
此外,本申请实施例中,客户端在基于直播内容的序列号和待处理队列中最后一个直播内容的序列号,检测序列号是否出现断序的过程中,若检测出该直播内容与已处理的直播内容重复,则可以直接丢弃该直播内容。即,若检测出待处理队列中最后一个直播内容的序列号和序列号间隔的总和大于直播内容的序列号,或者检测出直播内容的序列号和待处理队列中最后一个直播内容的序列号的差值小于序列号间隔,或者检测出直播内容的序列号和序列号间隔的差值小于待处理队列中最后一个直播内容的序列号,则可以确定直播内容与已处理的直播内容重复。此种情况下,客户端可以直接丢弃该直播内容。
步骤403:客户端依次从待处理队列中获取直播内容作为待处理的直播内容,并对该待处理的直播内容进行处理。
值得说的是,客户端可以并行执行步骤402和步骤403,也可以先执行步骤402再执行步骤403,具体执行顺序,本申请不作限定。
此外,本申请实施例中,为了尽可能地避免上述提及的因直播内容在推送过程中出现丢失,导致客户端播放直播时出现显示内容不完整的问题,客户端除了可以在根据直播内容的序列号并按照序列号从小到大的排列顺序,将直播内容加入待处理队列之前,基于直播内容的序列号和待处理队列中最后一个直播内容的序列号,来检测序列号是否出现断序,在另一种可能的实施方式中,客户端还可以在对待处理的直播内容进行处理之前,基于该待处理的直播内容的序列号和上一个已处理的直播内容的序列号,来检测序列号是否出现断序。
实际应用中,客户端基于该待处理的直播内容的序列号和上一个已处理的直播内容的序列号,检测序列号是否出现断序时,可以采用但不限于以下方式:
方式2-1:通过检测上一个已处理的直播内容的序列号和序列号间隔的总和是否等于待处理的直播内容的序列号,来确定序列号是否出现断序。具体的检测方式与上述方式1-1中提及的检测方式类似,在此不再赘述。
方式2-2:通过检测待处理的直播内容的序列号和上一个已处理的直播内容的序列号的差值是否等于序列号间隔,来确定序列号是否出现断序。具体的检测方式与上述方式1-2中提及的检测方式类似,在此不再赘述。
方式2-3:通过检测待处理的直播内容的序列号和序列号间隔的差值是否等于上一个已处理的直播内容的序列号,来确定序列号是否出现断序。具体的检测方式与上述方式1-3中提及的检测方式类似,在此不再赘述。
进一步的,客户端若检测出序列号未出现断序,则可以确定直播内容未出现丢失。此种情况下,客户端可以直接对该待处理的直播内容进行处理;若检测出序列号出现断序,则可以确定直播内容出现丢失。此种情况下,客户端可以先将当前从待处理队列中获取的直播内容放回至待处理队列,并暂停从待处理队列中获取直播内容,当从服务器中获取到丢失的各个直播内容并加入待处理队列后,再继续从待处理队列中获取直播内容进行处理。具体的,客户端在从服务器中获取到丢失的各个直播内容并加入待处理队列时采用的方式与上述提及的方式相同,在此不再赘述。
这样,在对待处理的直播内容进行处理之前,基于待处理的直播内容的序列号和上一个已处理的直播内容的序列号,也可以检测出序列号是否出现断序,同样可以及时地发现直播内容是否出现丢失,并且,在确定直播内容出现丢失时,也可以主动地从服务器中获取丢失的直播内容并加入待处理队列,从而有效地避免了因直播内容在推送过程中出现丢失,导致客户端在播放直播时出现显示内容不完整的问题,提高了客户端播放直播的稳定性和可靠性。
当然,与上述提及的断序检测方式类似,客户端在基于待处理的直播内容的序列号和上一个已处理的直播内容的序列号,检测序列号是否出现断序的过程中,若检测出该待处理的直播内容与已处理的直播内容重复,则可以直接丢弃该待处理的直播内容,并继续从待处理队列中获取下一个直播内容进行处理。具体的,在检测直播内容是否重复时采用的检测方式与上述提及的检测方式类似,在此不再赘述。
实际应用中,服务器推送直播内容时,若网络出现波动,还可能导致直播内容在推送过程中出现较长延时,从而造成各个客户端播放直播的进度不一致,影响直播体验。例如:参阅图6所示,在通过直播进行在线教育的直播场景中,当服务器推送主播客户端发送的直播内容时出现较长延时,可能会导致观众客户端播放直播时出现较长延时,从而影响了在线教育的用户体验。
为此,本申请实施例中,为了尽可能地缓解客户端播放直播时出现较长延时的问题,客户端在对服务器推送的直播消息进行处理的过程中,还可以采用定期轮询方式,检测直播内容是否出现延时并主动获取出现延时的直播内容进行处理,具体的,客户端可以采用但不限于以下方式:
首先,客户端按照设定轮询周期,将当前接收的最大序列号携带在延时检测请求中发送至服务器。
然后,客户端接收到服务器返回的延时检测响应时,通过检测该延时检测响应的内容是否为空,来确定直播内容是否出现延时。
最后,客户端若检测出该延时检测响应的内容为空,则确定直播内容未出现延时,此种情况下,客户端可以直接进入下一个轮询周期;若检测出该延时检测响应的内容不为空,则确定直播内容出现延时,此种情况下,客户端可以从该延时检测响应中获取出现延时的各个直播内容和该各个直播内容各自的序列号,根据出现延时的各个直播内容各自的序列号并按照序列号从小到大的排列顺序,将该各个直播内容加入待处理队列,并进入下一个轮询周期。
这样,客户端在对服务器推送的直播消息进行处理的过程中,按照设定轮询周期向服务器发送延时检测请求,能够及时地发现直播内容是否出现延时,并且,在确定直播内容出现延时时,还可以及时地从服务器返回的延时检测响应中获得出现延时的各个直播内容并进行处理,从而有效地缓解了客户端播放直播时出现较长延时的问题,提高了客户端播放直播的实时性。
值得说的是,本申请实施例中,为了减轻服务器的负担,客户端在周期性地向服务器发送延时检测请求的过程中,还可以采用周期退火策略,对延时检测请求的轮询周期进行调整。在具体实施时,客户端可以在进入下一个轮询周期之前,若确定直播内容出现延时,则将设定轮询周期确定为目标轮询周期并作为下一个轮询周期;若确定直播内容未出现延时,则检测在当前轮询周期内是否接收到服务器推送的直播消息,若是,则将设定轮询周期确定为目标轮询周期并作为下一个轮询周期,若否,则按照周期退火策略,对当前轮询周期进行调整,得到目标轮询周期并作为下一个轮询周期,其中,在首次轮询时,当前轮询周期为设定轮询周期,在非首次轮询时,当前轮询周期为上一次轮询过程中确定的目标轮询周期。
具体的,客户端按照周期退火策略,对当前轮询周期进行调整,得到目标轮询周期时,可以采用但不限于以下方式:以当前轮询周期为基准,按照设定倍数,延迟当前轮询周期,得到待定轮询周期;确定待定轮询周期未超出周期阈值时,将待定轮询周期确定为目标轮询周期,确定待定轮询周期超出周期阈值时,将初始轮询周期确定为目标轮询周期。
这样,客户端在确定当前轮询周期内直播内容未出现延时且未接收到服务器推送的直播消息时,按照周期退火策略,延时当前轮询周期,在确定当前轮询周期内直播内容出现延时或接收到服务器推送的直播消息时,再还原至设定轮询周期,从而在缓解了客户端播放直播时出现较长延时的同时,减少了延时检测请求的轮询次数,进而减轻了服务器的负担。
在介绍了本申请实施例提供的应用于客户端的直播内容处理方法之后,接下来,对本申请实施例提供的应用于服务器的直播内容处理方法进行详细说明,参阅图7所示,本申请实施例提供的应用于服务器的直播内容处理方法的流程如下:
步骤701:服务器接收到推送请求时,确定该推送请求对应的各个目的客户端,其中,该推送请求至少携带有待推送的直播内容。
在具体实施时,服务器可以针对每一个直播间,分别维护一个直播数据表,该直播数据表中记录了该直播间对应的主播客户端和该直播间内所有在线的观众客户端,而且,服务器还可以针对每一个直播间,通过实时或定时监测机制,来确定该直播间内当前在线的各个观众客户端并对该直播间的直播数据表进行更新,从而确保了直播数据表的准确性。
基于此,服务器在接收到推送请求时,可以根据该推送请求携带的发送端标识和直播间标识,来确定该推送请求的发送客户端和该发送客户端所在的直播间,从而可以根据该直播间的直播数据表和该推送请求的发送客户端,来确定该推送请求对应的各个目的客户端。
例如:假设某一直播间的直播间标识为F1,该直播间的当前直播数据表中记录了该直播间的主播客户端为主播客户端A,该直播间内当前在线的观众客户端为观众客户端B1和观众客户端B2。
若服务器接收到的推送请求携带的直播间标识为F1,发送端标识为A,则服务器可以根据直播间标识F1,确定该推送请求对应的直播间是直播间F1,从而可以从本地获取直播间F1的当前直播数据表,根据该当前直播数据表和发送端标识A,可以确定该推送请求对应的发送客户端是主播客户端A,进而,可以确定该推送请求对应的各个目的客户端是观众客户端B1和观众客户端B2。
若服务器接收到的推送请求携带的直播间标识为F1,发送端标识为B1,则服务器可以根据直播间标识F1,确定该推送请求对应的直播间是直播间F1,从而可以从本地获取直播间F1的当前直播数据表,根据该当前直播数据表和发送端标识B1,可以确定该推送请求对应的发送客户端是观众客户端B1,进而,可以确定该推送请求对应的各个目的客户端是观众客户端B2和主播客户端A。
步骤702:服务器针对每一个目的客户端,基于该目的客户端的当前推送序列,为该直播内容配置序列号,并将该直播内容和该序列号封装成直播消息推送至该目的客户端。
实际应用中,直播间内的每一个观众客户端发送的直播内容均需要推送至主播客户端,为了确保主播客户端接收到的直播内容的序列号的连续性,本申请实施例中,服务器可以针对主播客户端维护一个推送序列,并且,该主播客户端的推送序列随着服务器推送至该主播客户端的直播内容的增加而更新。这样,服务器确定推送请求对应的各个目的客户端中包含主播客户端时,可以根据该主播客户端的当前推送序列,为该推送请求携带的直播内容配置序列号,从而得到该主播客户端对应的直播内容的序列号,进而可以将该直播内容和该主播客户端对应的直播内容的序列号封装成直播消息推送至该主播客户端。
此外,实际应用中,直播间内在线的观众客户端具有一定的流动性,为了确保观众客户端接收到的直播内容的序列号的连续性,本申请实施例中,服务器还可以针对每一个观众客户端分别维护一个推送序列,并且,每一个观众客户端各自的推送序列随着服务器推送至该观众客户端的直播内容的增加而更新。这样,服务器确定推送请求对应的各个目的客户端中包含多个观众客户端时,可以根据该多个观众客户端各自的当前推送序列,分别为该直播内容配置相应的序列号,从而得到该多个观众客户端各自对应的直播内容的序列号,进而可以针对该多个观众客户端,将该直播内容和该观众客户端对应的直播内容的序列号封装成直播消息推送至该观众客户端。
值得说的是,本申请实施例中,服务器在基于目的客户端的当前推送序列,为直播内容配置序列号时,可以采用但不限于以下方式:若目的客户端的当前推送序列为空,则将设定的起始推送序列号配置为该直播内容的序列号;若目的客户端的当前推送序列不为空,则将当前推送序列中的最后一个推送序列号与序列号间隔的总和配置为该直播内容的序列号。
例如:假设服务器接收到的推送消息携带的直播内容为直播内容M,服务器确定该推送请求对应的各个目的客户端是观众客户端B1和观众客户端B2。
服务器可以根据观众客户端B1的当前推送序列{空},为直播内容M配置序列号1,并将序列号1和直播内容M封装成直播消息推送至观众客户端B1;以及,根据观众客户端B2的当前推送序列{1},为直播内容M配置序列号2,并将序列号2和直播内容M封装成直播消息推送至观众客户端B2。
当然,服务器还需要将观众客户端B1的当前推送序列{空}更新为{1},将观众客户端B2的当前推送序列{1}更新为{1,2}。
又如:假设服务器接收到的推送消息携带的直播内容为直播内容M,服务器203确定该推送请求对应的各个目的客户端是观众客户端B2和主播客户端A。
服务器可以根据观众客户端B2的当前推送序列{1},为直播内容M配置序列号2,并将序列号2和直播内容M封装成直播消息推送至观众客户端B2;以及,根据主播客户端A的当前推送序列{1,2,…,100},为直播内容M配置序列号101,并将序列号101和直播内容M封装成直播消息推送至主播客户端A。
当然,服务器还需要将观众客户端B2的当前推送序列{1}更新为{1,2},以及将主播客户端A的当前推送序列{1,2,…,100}更新为{1,2,…,100,101}。
本申请实施例中,服务器在推送直播消息的过程中,可能接收到丢失消息获取请求,此种情况下,服务器可以确定该丢失消息获取请求的发送客户端检测出了直播内容出现丢失,根据该丢失消息获取请求携带的各个序列号,从本地获取相应的直播内容后,将获得的各个直播内容和该各个直播内容各自的序列号携带在丢失消息获取响应中返回至该丢失消息获取请求的发送客户端,这样,该丢失消息获取请求的发送客户端就获得了丢失的直播内容,并且可以对丢失的直播内容进行处理,从而有效地解决了因直播内容出现丢失,导致客户端在播放直播时出现显示内容不完整的问题,提高了客户端播放直播的稳定性和可靠性。
此外,本申请实施例中,服务器在推送直播消息的过程中,还可能接收到延时检测请求,此种情况下,服务器可以先确定出该延时检测请求的发送客户端以及该发送客户端的当前推送序列,再基于该延时检测请求携带的最大序列号和该发送客户端的当前推送序列中的最大序列号,检测直播内容是否出现延时,若检测出直播内容出现延时,则可以基于该延时检测请求携带的最大序列号和该发送客户端的当前推送序列中的最大序列号之间相差的各个序列号,从本地获取相应的直播内容,从而将获得的各个直播内容和该各个直播内容各自的序列号携带在延时检测响应中返回至该发送客户端;若检测出直播内容未出现延时,则可以直接向该发送客户端返回内容为空的延时检测响应。这样,该延时检测请求的发送客户端就可以根据该延时检测响应中的内容是否为空,来确定直播内容是否出现延时,并在确定直播内容出现延时时,从该延时检测响应中获取出现延时的各个直播内容和该各个直播内容各自的序列号并加入待处理序列,从而实现了对出现延时的直播内容的主动获取,尽可能地缓解了因直播内容在推送过程中出现较长延时,导致客户端播放直播时出现较长延时的问题,提高了客户端播放直播的实时性。
基于上述实施例,本申请实施例提供了一种应用于客户端的直播内容处理装置,参阅图8A和图8B所示,本申请实施例提供的直播内容处理装置800至少包括:
消息接收单元801,用于接收服务器推送的直播消息,其中,直播消息至少携带有直播内容和服务器基于直播内容的推送顺序为直播内容配置的序列号;
队列维护单元802,用于根据直播内容的序列号并按照序列号从小到大的排列顺序,将直播内容加入待处理队列;
内容处理单元803,用于依次从待处理队列中获取直播内容作为待处理的直播内容,并对待处理的直播内容进行处理。
参阅图8A所示,在一种可能的实施方式中,本申请实施例提供的直播内容处理装置800还可以包括:
第一检测单元804,用于在队列维护单元802根据直播内容的序列号并按照序列号从小到大的排列顺序,将直播内容加入待处理队列之前,基于直播内容的序列号和待处理队列中最后一个直播内容的序列号,检测出序列号未出现断序时,确定直播内容未出现丢失。
在一种可能的实施方式中,本申请实施例提供的直播内容处理装置800还包括:
第一获取单元805,用于在第一检测单元804基于直播内容的序列号和待处理队列中最后一个直播内容的序列号,检测出序列号出现断序时,确定直播内容出现丢失,并将断序的各个序列号携带在丢失消息获取请求中发送至服务器;接收服务器返回的丢失消息获取响应,其中,丢失消息获取响应是服务器基于丢失消息获取请求携带的各个序列号获得相应的直播内容后返回的;从丢失消息获取响应中,获取丢失的各个直播内容和各个直播内容各自的序列号,根据各个直播内容的序列号并按照序列号从小到大的排列顺序,将各个直播内容加入待处理队列。
在一种可能的实施方式中,本申请实施例提供的直播内容处理装置800还包括:
第一丢弃单元806,用于在第一检测单元804基于直播内容的序列号和待处理队列中最后一个直播内容的序列号,检测出直播内容与已处理的直播内容重复时,丢弃直播内容。
参阅图8B所示,在一种可能的实施方式中,本申请实施例提供的直播内容处理装置800还可以包括:
第二检测单元807,用于在内容处理单元803对待处理的直播内容进行处理之前,基于待处理的直播内容的序列号和上一个已处理的直播内容的序列号,检测出序列号未出现断序时,确定直播内容未出现丢失。
在一种可能的实施方式中,本申请实施例提供的直播内容处理装置800还包括:
第二获取单元808,用于在第二检测单元807基于待处理的直播内容的序列号和上一个已处理的直播内容的序列号,检测出序列号出现断序时,确定直播内容出现丢失,并将断序的各个序列号携带在丢失消息获取请求中发送至服务器;接收服务器返回的丢失消息获取响应,其中,丢失消息获取响应是服务器基于丢失消息获取请求携带的各个序列号获得相应的直播内容后返回的;从丢失消息获取响应中,获取丢失的各个直播内容和各个直播内容各自的序列号,根据各个直播内容的序列号并按照序列号从小到大的排列顺序,将各个直播内容加入待处理队列。
在一种可能的实施方式中,本申请实施例提供的直播内容处理装置800还包括:
第二丢弃单元809,用于在第二检测单元807基于待处理的直播内容的序列号和上一个已处理的直播内容的序列号,检测出待处理的直播内容与已处理的直播内容重复时,丢弃待处理的直播内容。
参阅图8A和图8B所示,在一种可能的实施方式中,本申请实施例提供的直播内容处理装置800还包括:
定期轮询单元810,用于按照设定轮询周期,确定本次轮询时的轮询时间并发送至消息同步单元;接收到消息同步单元811发送的同步完成消息时,确定本次轮询结束;
消息同步单元811,用于按照定期轮询单元810发送的轮询时间,将当前接收的最大序列号携带在延时检测请求中发送至服务器;接收服务器返回的延时检测响应,其中,延时检测响应是服务器基于延时检测请求携带的最大序列号与当前推送的最大序列号,检测出直播内容是否出现延时后返回的;若基于延时检测响应,确定直播内容未出现延时,则向定期轮询单元发送同步完成通知;若基于延时检测响应,确定直播内容出现延时,则从延时检测响应中获取出现延时的各个直播内容和各个直播内容各自的序列号,根据各个直播内容各自的序列号并按照序列号从小到大的排列顺序,将各个直播内容加入待处理队列,并向定期轮询单元发送同步完成通知。
在一种可能的实施方式中,定期轮询单元810还用于:
在确定本次轮询结束之前,若确定直播内容出现延时,则将设定轮询周期确定为目标轮询周期并作为下一个轮询周期;若确定直播内容未出现延时,则确定消息接收单元在当前轮询周期内未接收到服务器推送的直播消息时,按照周期退火策略,对当前轮询周期进行调整,得到目标轮询周期并作为下一个轮询周期;确定消息接收单元在当前轮询周期内接收到服务器推送的直播消息时,将设定轮询周期确定为目标轮询周期并作为下一个轮询周期;其中,在首次轮询时,当前轮询周期为设定轮询周期,在非首次轮询时,当前轮询周期为上一次轮询过程中确定的目标轮询周期。
在一种可能的实施方式中,在按照周期退火策略,对当前轮询周期进行调整,得到目标轮询周期时,定期轮询单元810用于:
以当前轮询周期为基准,按照设定倍数,延迟当前轮询周期,得到待定轮询周期;
确定待定轮询周期未超出周期阈值时,将待定轮询周期确定为目标轮询周期;
确定待定轮询周期超出周期阈值时,将设定轮询周期确定为目标轮询周期。
需要说明的是,本申请实施例提供的直播内容处理装置800中的各个单元可以采用组件的形式部署在直播内容处理装置800中,以实现上述各个单元的功能。
此外,本申请实施例还提供了一种应用于服务器的直播内容处理装置,参阅图9所示,本申请实施例提供的直播内容处理装置900至少包括:
内容接收单元901,用于接收到直播内容时,确定直播内容对应的各个目的客户端;
配置推送单元902,用于针对每一个目的客户端,基于目的客户端的当前推送序列,为直播内容配置序列号,并将直播内容和序列号封装成直播消息推送至目的客户端。
在一种可能的实施方式中,在基于目的客户端的当前推送序列,为直播内容配置序列号时,配置推送单元902用于:
若目的客户端的当前推送序列为空,则将设定的起始推送序列号配置为直播内容的序列号;
若目的客户端的当前推送序列不为空,则将当前推送序列中的最后一个推送序列号与序列号间隔的总和配置为直播内容的序列号。
在一种可能的实施方式中,本申请实施例提供的直播内容处理装置900还包括:
丢失响应单元903,用于接收到丢失消息获取请求时,确定直播内容出现丢失,并基于丢失消息获取请求携带的各个序列号,从本地获取相应的直播内容;将获得的各个直播内容和各个直播内容各自的序列号携带在丢失消息获取响应中返回至丢失消息获取请求的发送客户端。
在一种可能的实施方式中,本申请实施例提供的直播内容处理装置900还包括:
延时响应单元904,用于接收到延时检测请求时,确定延时检测请求的发送客户端以及发送客户端的当前推送序列;基于延时检测请求携带的最大序列号和发送客户端的当前推送序列中的最大序列号,检测直播内容是否出现延时;若检测出直播内容出现延时,则基于延时检测请求携带的最大序列号和发送客户端的当前推送序列中的最大序列号之间相差的各个序列号,从本地获取相应的直播内容,并将获得的各个直播内容和各个直播内容各自的序列号携带在延时检测响应中返回至发送客户端;若检测出直播内容未出现延时,则向发送客户端返回内容为空的延时检测响应。
需要说明的是,本申请实施例提供的两个直播内容处理装置解决技术问题的原理与本申请实施例提供的直播内容处理方法相似,因此,本申请实施例提供的两个直播内容处理装置的实施可以参见本申请实施例提供的直播内容处理方法的实施,重复之处不再赘述。
在介绍了本申请实施例提供的直播内容处理方法和装置之后,接下来,对本申请实施例提供的直播内容处理设备进行简单介绍。
参阅图10所示,本申请实施例提供的直播内容处理设备100可以包括:处理器101、存储器102和存储在存储器102上的计算机程序,处理器101执行计算机程序时实现本申请实施例提供的应用于客户端的直播内容处理方法;或者,实现本申请实施例提供的应用于服务器的直播内容处理方法。
需要说明的是,图10所示的直播内容处理设备100仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
本申请实施例提供的直播内容处理设备100还可以包括连接不同组件(包括处理器101和存储器102)的总线103。其中,总线103表示几类总线结构中的一种或多种,包括存储器总线、外围总线、局域总线等。
存储器102可以包括易失性存储器形式的可读介质,例如随机存储器(RandomAccess Memory,RAM)1021和/或高速缓存存储器1022,还可以进一步包括只读存储器(ReadOnly Memory,ROM)1023。
存储器102还可以包括具有一组(至少一个)程序模块1024的程序工具1025,程序模块1024包括但不限于:操作子系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
直播内容处理设备100也可以与一个或多个外部设备104(例如键盘、遥控器等)通信,还可以与一个或者多个使得用户能与直播内容处理设备100交互的设备通信,和/或与使得该直播内容处理设备100能与一个或多个其它直播内容处理设备100进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(Input/Output,I/O)接口105进行。并且,直播内容处理设备100还可以通过网络适配器106与一个或者多个网络(例如局域网(Local Area Network,LAN),广域网(Wide Area Network,WAN)和/或公共网络,例如因特网)通信。如图10所示,网络适配器106通过总线103与直播内容处理设备100的其它模块通信。应当理解,尽管图10中未示出,可以结合直播内容处理设备100使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、磁盘阵列(Redundant Arrays of Independent Disks,RAID)子系统、磁带驱动器以及数据备份存储子系统等。
此外,本申请实施例还提供了一种计算机可读存储介质,本申请实施例提供的计算机可读存储介质存储有计算机指令,该计算机指令被处理器执行时实现本申请实施例提供的应用于客户端的直播内容处理方法;或者,实现本申请实施例提供的应用于服务器的直播内容处理方法。具体地,该计算机指令可以内置在直播内容处理设备100中,这样,直播内容处理设备100就可以通过执行内置的计算机指令实现本申请实施例提供的直播内容处理方法。
此外,本申请实施例提供的直播内容处理方法还可以实现为一种程序产品,该程序产品包括程序代码,当该程序产品在直播内容处理设备100上运行时,该程序代码用于使直播内容处理设备100实现本申请实施例提供的直播内容处理方法。
应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种直播内容处理方法,其特征在于,包括:
接收服务器推送的直播消息,其中,所述直播消息至少携带有直播内容和所述服务器基于所述直播内容的推送顺序为所述直播内容配置的序列号;
根据所述直播内容的序列号并按照序列号从小到大的排列顺序,将所述直播内容加入待处理队列;
依次从所述待处理队列中获取直播内容作为待处理的直播内容,并对所述待处理的直播内容进行处理。
2.如权利要求1所述的直播内容处理方法,其特征在于,对所述待处理的直播内容进行处理之前,还包括:
基于所述待处理的直播内容的序列号和上一个已处理的直播内容的序列号,检测出序列号未出现断序时,确定直播内容未出现丢失。
3.如权利要求2所述的直播内容处理方法,其特征在于,还包括:
基于所述待处理的直播内容的序列号和上一个已处理的直播内容的序列号,检测出序列号出现断序时,确定直播内容出现丢失,并将断序的各个序列号携带在丢失消息获取请求中发送至所述服务器;
接收所述服务器返回的丢失消息获取响应,其中,所述丢失消息获取响应是所述服务器基于所述丢失消息获取请求携带的各个序列号获得相应的直播内容后返回的;
从所述丢失消息获取响应中,获取丢失的各个直播内容和所述各个直播内容各自的序列号,根据所述各个直播内容的序列号并按照序列号从小到大的排列顺序,将所述各个直播内容加入待处理队列。
4.如权利要求1-3任一项所述的直播内容处理方法,其特征在于,还包括按照设定轮询周期,循环执行以下操作:
将当前接收的最大序列号携带在延时检测请求中发送至所述服务器;
接收所述服务器返回的延时检测响应,其中,所述延时检测响应是所述服务器基于所述延时检测请求携带的最大序列号与当前推送的最大序列号,检测出直播内容是否出现延时后返回的;
若基于所述延时检测响应,确定直播内容未出现延时,则确定本次轮询结束;若基于所述延时检测响应,确定直播内容出现延时,则从所述延时检测响应中获取出现延时的各个直播内容和所述各个直播内容各自的序列号,根据所述各个直播内容各自的序列号并按照序列号从小到大的排列顺序,将所述各个直播内容加入所述待处理队列,并确定本次轮询结束。
5.如权利要求4所述的直播内容处理方法,其特征在于,确定本次轮询结束之前,还包括:
若确定直播内容出现延时,则将所述设定轮询周期确定为目标轮询周期并作为下一个轮询周期;
若确定直播内容未出现延时,则确定在当前轮询周期内未接收到所述服务器推送的直播消息时,按照周期退火策略,对所述当前轮询周期进行调整,得到目标轮询周期并作为下一个轮询周期;确定在所述当前轮询周期内接收到所述服务器推送的直播消息时,将所述设定轮询周期确定为目标轮询周期并作为下一个轮询周期;其中,在首次轮询时,所述当前轮询周期为所述设定轮询周期,在非首次轮询时,所述当前轮询周期为上一次轮询过程中确定的目标轮询周期。
6.一种直播内容处理方法,其特征在于,包括:
接收到推送请求时,确定所述推送请求对应的各个目的客户端,其中,所述推送请求至少携带有待推送的直播内容;
针对每一个目的客户端,基于所述目的客户端的当前推送序列,为所述直播内容配置序列号,并将所述直播内容和所述序列号封装成直播消息推送至所述目的客户端。
7.一种直播内容处理装置,其特征在于,包括:
消息接收单元,用于接收服务器推送的直播消息,其中,所述直播消息至少携带有直播内容和所述服务器基于所述直播内容的推送顺序为所述直播内容配置的序列号;
队列维护单元,用于根据所述直播内容的序列号并按照序列号从小到大的排列顺序,将所述直播内容加入待处理队列;
内容处理单元,用于依次从所述待处理队列中获取直播内容作为待处理的直播内容,并对所述待处理的直播内容进行处理。
8.一种直播内容处理装置,其特征在于,包括:
内容接收单元,用于接收到直播内容时,确定所述直播内容对应的各个目的客户端;
配置推送单元,用于针对每一个目的客户端,基于所述目的客户端的当前推送序列,为所述直播内容配置序列号,并将所述直播内容和所述序列号封装成直播消息推送至所述目的客户端。
9.一种内容处理设备,其特征在于,包括:存储器、处理器和存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-5任一项所述的直播内容处理方法;或者,实现如权利要求6所述的直播内容处理方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令被处理器执行时实现如权利要求1-5任一项所述的直播内容处理方法;或者,实现如权利要求6所述的直播内容处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910555754.6A CN110351569B (zh) | 2019-06-25 | 2019-06-25 | 一种直播内容处理方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910555754.6A CN110351569B (zh) | 2019-06-25 | 2019-06-25 | 一种直播内容处理方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110351569A true CN110351569A (zh) | 2019-10-18 |
CN110351569B CN110351569B (zh) | 2021-02-02 |
Family
ID=68182992
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910555754.6A Active CN110351569B (zh) | 2019-06-25 | 2019-06-25 | 一种直播内容处理方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110351569B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111193792A (zh) * | 2019-12-27 | 2020-05-22 | 北京指掌易科技有限公司 | 一种消息传输方法、装置、电子设备和存储介质 |
CN111901619A (zh) * | 2020-07-23 | 2020-11-06 | 北京达佳互联信息技术有限公司 | 一种消息推送方法和装置 |
CN112040328A (zh) * | 2020-08-04 | 2020-12-04 | 北京字节跳动网络技术有限公司 | 数据交互方法、装置和电子设备 |
CN115134618A (zh) * | 2022-06-17 | 2022-09-30 | 上海哔哩哔哩科技有限公司 | 直播流生命周期信息处理方法、装置及计算设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3046266A1 (en) * | 2013-09-12 | 2016-07-20 | ZTE Corporation | Data transmission method, device and terminal |
CN105847386A (zh) * | 2016-04-20 | 2016-08-10 | 乐视控股(北京)有限公司 | 直播流的处理方法、装置及系统 |
CN106161593A (zh) * | 2016-06-21 | 2016-11-23 | 北京奇虎科技有限公司 | 消息轮询方法和服务器、通信系统 |
CN106789917A (zh) * | 2016-11-25 | 2017-05-31 | 北京百家互联科技有限公司 | 数据包处理方法及装置 |
CN108111531A (zh) * | 2018-01-02 | 2018-06-01 | 青岛海信网络科技股份有限公司 | 一种增强视频直播质量的方法及装置 |
CN108810116A (zh) * | 2018-05-29 | 2018-11-13 | Oppo广东移动通信有限公司 | 消息处理方法及相关产品 |
CN108933966A (zh) * | 2017-05-27 | 2018-12-04 | 北京云中融信网络科技有限公司 | 请求消息处理方法、装置及系统、终端和存储介质 |
-
2019
- 2019-06-25 CN CN201910555754.6A patent/CN110351569B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3046266A1 (en) * | 2013-09-12 | 2016-07-20 | ZTE Corporation | Data transmission method, device and terminal |
CN105847386A (zh) * | 2016-04-20 | 2016-08-10 | 乐视控股(北京)有限公司 | 直播流的处理方法、装置及系统 |
CN106161593A (zh) * | 2016-06-21 | 2016-11-23 | 北京奇虎科技有限公司 | 消息轮询方法和服务器、通信系统 |
CN106789917A (zh) * | 2016-11-25 | 2017-05-31 | 北京百家互联科技有限公司 | 数据包处理方法及装置 |
CN108933966A (zh) * | 2017-05-27 | 2018-12-04 | 北京云中融信网络科技有限公司 | 请求消息处理方法、装置及系统、终端和存储介质 |
CN108111531A (zh) * | 2018-01-02 | 2018-06-01 | 青岛海信网络科技股份有限公司 | 一种增强视频直播质量的方法及装置 |
CN108810116A (zh) * | 2018-05-29 | 2018-11-13 | Oppo广东移动通信有限公司 | 消息处理方法及相关产品 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111193792A (zh) * | 2019-12-27 | 2020-05-22 | 北京指掌易科技有限公司 | 一种消息传输方法、装置、电子设备和存储介质 |
CN111901619A (zh) * | 2020-07-23 | 2020-11-06 | 北京达佳互联信息技术有限公司 | 一种消息推送方法和装置 |
CN111901619B (zh) * | 2020-07-23 | 2023-10-31 | 北京达佳互联信息技术有限公司 | 一种消息推送方法和装置 |
CN112040328A (zh) * | 2020-08-04 | 2020-12-04 | 北京字节跳动网络技术有限公司 | 数据交互方法、装置和电子设备 |
CN112040328B (zh) * | 2020-08-04 | 2023-03-10 | 北京字节跳动网络技术有限公司 | 数据交互方法、装置和电子设备 |
CN115134618A (zh) * | 2022-06-17 | 2022-09-30 | 上海哔哩哔哩科技有限公司 | 直播流生命周期信息处理方法、装置及计算设备 |
CN115134618B (zh) * | 2022-06-17 | 2024-03-12 | 上海哔哩哔哩科技有限公司 | 直播流生命周期信息处理方法、装置及计算设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110351569B (zh) | 2021-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110351569A (zh) | 一种直播内容处理方法、装置、设备及介质 | |
US11759707B2 (en) | Methods and systems for scheduling game play of a video game | |
US10300380B2 (en) | Qualified video delivery | |
CN108540868B (zh) | Hls直播的处理方法、装置、服务器、终端及存储介质 | |
CN106161219B (zh) | 消息处理方法及装置 | |
JP2019514536A (ja) | サーバによって実行される方法、クラウドゲームシステム、クライアントデバイス及びコンピュータ可読媒体 | |
WO2019214371A1 (zh) | 图像的显示方法、生成方法、装置、存储介质及电子装置 | |
TW201231133A (en) | System and method for capturing text for an online application | |
TW201119402A (en) | System and method for utilizing forward error correction with video compression | |
TW201117868A (en) | System and method for accelerated machine switching | |
CN104602102B (zh) | 视频截取内容的传输响应方法、装置、服务器和系统 | |
TW200952494A (en) | Method for multicasting views of real-time streaming interactive video | |
TW201119399A (en) | System and method for encoding video using a selected tile and tile rotation pattern | |
TW201119403A (en) | System and method for compressing video based on latency measurements and other feedback | |
TW201041400A (en) | Temporary decoder apparatus and method | |
TW200952495A (en) | Apparatus for combining aplurality of views of real-time streaming interactive video | |
CN108668158A (zh) | 一种弹幕同步方法、客户端和弹幕服务器 | |
WO2010141522A1 (en) | Qualified video delivery | |
US20170304727A1 (en) | User Save Data Migration Based on Location Information | |
US20200269140A1 (en) | Lockstep client-server architecture | |
CN105979277A (zh) | 一种文件传输方法及电子设备 | |
TW201322743A (zh) | 用於控制視訊串流之圖形使用者介面,系統及方法 | |
JP2023515947A (ja) | ゲーム内プレイヤー支援用に事前に記録されたゲームプレイビデオのサーフェシング | |
CN100446567C (zh) | 在信息家电中实现p2p流播放的装置和方法 | |
CN108881963A (zh) | 数据获取方法、服务端及客户端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |