用于暂停rtmp流的方法和装置的制造方法_2

文档序号:9474268阅读:来源:国知局
围以内,并以引用方式包含于此。
[0056]首先,在步骤S31中,服务器接收来自发布客户端的第一消息,其中,该第一消息用于指示RTMP流将暂停。具体地,发布客户端可按照上文所述的方式向服务器发送该第一消息。相应地,服务器可以接收该第一消息从而获知该RTMP流将暂停。如上文所述,在一个优选实施例中,该第一消息为RTMP命令消息。对于第一消息的详细描述此处不再赘述。
[0057]接着,在步骤S32中,服务器基于所述第一消息,向播放所述RTMP流的一个或多个客户端中的各个客户端分别发送第三消息,其中,所述第三消息用于指示所述RTMP流将暂停。具体地,服务器基于所述第一消息,获知该RTMP流将暂停。从而服务器向播放RTMP流的各个客户端发送第三消息,以指示该RTMP流将暂停。在一个实施例中,该第三消息为RTMP命令消息。例如,该第三消息扩展了原RTMP命令消息,其中,该新RTMP命令消息的命令名为例如“暂停发送”,并且该命令消息中包括该RTMP流的标识,例如RTMP流的名字,从而该新RTMP命令消息可用于指示该RTMP流将暂停。在一个优选实施例中,该第三消息为RTMP数据消息(RTMP Data Message) 0例如,该第三消息扩展了原RTMP数据消息,使得其能够指示RTMP流将暂停。本领域技术人员应理解,此处,对于第三消息的相关描述仅为示例性而非限定性描述,存在其他各种实现方式而不背离本发明的精神或范畴,并以引用的方式包含于此。
[0058]在一个优选实施例中,服务器将基于该第一消息以及当前状态,向播放该RTMP流的各个客户端分别发送该第三消息。此处,当前状态意指服务器中该RTMP流当前所处的状态,例如“暂停”或“继续”状态。当服务器接收到该第一消息后,将检查当前状态是否已经处于“暂停”状态。如果当前状态并非“暂停”状态,则服务器将向各个客户端分别发送第三消息,以指示各个客户端该RTMP流将暂停。如果当前状态为“暂停”状态时,则服务器将不向各个客户端发送第三消息,从而避免不必要的系统开销。
[0059]接着,在步骤S33中,当服务器向各个客户端分别发送该第三消息之后,对于所述一个或多个客户端中的各个客户端,服务器将暂停向其发送该RTMP流的数据。
[0060]在一个实施例中,服务器还将接收来自发布客户端的第二消息,其中,所述第二消息用于指示该RTMP流将继续。具体地,发布客户端可按照上文所述的方式向服务器发送该第二消息。相应地,服务器可以接收该第二消息从而获知该RTMP流将继续。如上文所述,在一个优选实施例中,该第二消息为RTMP命令消息。对于第二消息的详细描述此处不再赘述。
[0061]在上述实施例中,接着,服务器基于该第二消息,向播放所述RTMP流的各个客户端分别发送第四消息,其中,所述第四消息用于指示所述RTMP流将继续。具体地,服务器基于所述第二消息,获知该RTMP流将继续。从而服务器向播放RTMP流的各个客户端发送第四消息,以指示该RTMP流将继续。在一个实施例中,该第四消息为RTMP命令消息。例如,该第四消息扩展了原RTMP命令消息,其中,该新RTMP命令消息的命令名为例如“继续发送”,并且该命令消息中包括该RTMP流的标识,例如RTMP流的名字,从而该新RTMP命令消息可用于指示该RTMP流将继续。在一个优选实施例中,该第四消息为RTMP数据消息(RTMP DataMessage)。例如,该第四消息扩展了原RTMP数据消息,使得其能够指示RTMP流将继续。本领域技术人员应理解,此处,对于第四消息的相关描述仅为示例性而非限定性描述,存在其他各种实现方式而不背离本发明的精神或范畴,并以引用的方式包含于此。
[0062]在一个优选实施例中,服务器将基于该第二消息以及当前状态,向播放该RTMP流的各个客户端分别发送第四消息。此处,当前状态意指服务器中该RTMP流当前所处的状态,例如为“暂停”或“继续”状态。当服务器接收到该第二消息后,将检查当前状态是否已经处于“暂停”状态。如果当前状态为“暂停”状态,则服务器将向各个客户端分别发送第四消息,以指示各个客户端该RTMP流将继续。如果当前状态为非“暂停”状态时,则服务器将不向各个客户端发送第四消息,从而避免不必要的系统开销。
[0063]接着,当服务器向各个客户端分别发送该第四消息之后,对于所述一个或多个客户端中的各个客户端,服务器将继续向其发送该RTMP流的数据。
[0064]在一个实施例中,服务器还将向所述一个或多个客户端中的各个客户端分别定时发送RTMP Ping消息。例如,当RTMP流暂停时,由于服务器不再向客户端发送数据,从而服务器与客户端之间的连接有可能因为无数据通信而被关闭。此时,服务器可向客户端定时发送RTMP Ping消息以保持该连接的有效性。相应地,客户端可接收来自服务器的该RTMPPing消息,并可基于该RTMP Ping消息,确定其于该服务器之间的连接仍然有效。然后,客户端可向该服务器发送对于所述RTMP Ping消息的响应消息。服务器可相应地从各个客户端分别接收对于该RTMP Ping消息的响应消息,并基于各个响应消息,来确定与各个客户端之间的连接性。也即,当服务器接收到来自某个客户端的上述响应消息时,则可确定其与该客户端之间的连接有效;当服务器在一定时间内未接收到来自某个客户端的上述响应消息时,则可确定其于该客户端之间的连接中断。
[0065]在一个优选实施例中,服务器还可以基于来自发布客户端的第一消息或第二消息,来设置RTMP流的第一状态。此处,第一状态意指RTMP流在服务器端的状态。具体地,当服务器接收到来自发布客户端的第一消息时,则服务器获知RTMP流将暂停,因此服务器将该RTMP流的第一状态设置为指示其为暂停的状态,例如“暂停”。当服务器接收到来自发布客户端的第二消息时,则服务器获知RTMP流将恢复,因此服务器将该RTMP流的第一状态设置为指示其为恢复的状态,例如“恢复”。本领域技术人员应理解,此处,对于第一状态的相关描述仅为示例性而非限定性描述,存在其他各种实现方式而不背离本发明的精神或范畴,并以引用的方式包含于此。
[0066]当服务器向播放该RTMP流的一个或多个客户端中的各个客户端分别发送RTMPPing消息时,该RTMP Ping消息中可包括该RTMP流的第一状态。例如,当RTMP流的第一状态为“暂停”时,服务器在向各个客户端所分别发送的RTMP Ping消息中包括“暂停”状态。相应地,客户端可接收来自服务器的该包括第一状态的RTMP Ping消息,并可基于该RTMPPing消息,确定该RTMP流的第一状态。按照此种方式,当服务器发送至客户端的第三消息或第四消息丢失时,服务器可在其向客户端所发送的RTMP Ping消息中包括第一状态,以向客户端指示该RTMP流所处的状态,以确保RTMP流状态在整个系统中的一致性。
[0067]在一个实施例中,客户端接收到来自服务器的RTMP Ping消息后,可向该服务器发送对于所述RTMP Ping消息的响应消息,其中,该响应消息中包括该客户端的关于所述RTMP流的第二状态。此处,第二状态意指RTMP流在客户端的状态。则相应地,服务器可从各个客户端分别接收所述包括第二状态的RTMP Ping响应消息。然后,服务器基于各个响应消息,检查各个客户端的关于该RTMP流的第二状态是否与该RTMP流的第一状态之间一致。服务器基于该一致性检查的结果,对于后续将向各个客户端所发送的RTMP Ping消息,确定其中是否包括该RTMP流的第一状态。例如,假定某RTMP流的第一状态为“暂停”。对于客户端A,其在向服务器发送的RTMP Ping响应消息中包括的该RTMP流的第二状态为“暂停”。当服务器检查到该响应消息中关于该RTMP流的第二状态为“暂停”,则可确定其与第一状态一致,从而确定在后续将向该客户端A所发送的RTMP Ping消息中不包括该RTMP流的第一状态。而对于客户端B,其在向服务器发送的RTMP Ping响应消息中包括的第二状态为“恢复”。当服务器检查到该响应消息中关于该RTMP流的第二状态为“恢复”时,则可确定其与第一状态不一致,从而确定在后续将向该客户端B所发送的RTMP Ping消息中包括该RTMP流的第一状态。按照上文所述的方式,服务器在检查到第一状态与第二状态一致时,在向客户端发送的RTMP Ping消息中无需包括第一状态以节省系统开销。
[0068]在一个实施例中,服务器还可向发布客户端定时发送RTMP Ping消息,并从该发布客户端接收对于该RTMP Ping消息的响应消息。当服务器接收到所述响应消息时,则可确定其于该发布客户端之间的连接有效。
[0069]图4示出根据本发明另一个方面的实施例的在客户端中用于暂停RTMP流的方法的流程图。
[0070]其中,本实施例的方法主要通过用户设备来实现;所述用户设备包括但不限于PC机、平板电脑、智能手机、PDA等。
[0071]需要说明的是,所述用户设备仅为举例,其他现有的或今后可能出现的用户设备如可适用于本发明,也应包含在本发明保护范围以内,并以引用方式包含于此。
[0072]首先,在步骤S41中,客户端接收来自服务器的第三消息,其中,所述第三消息用于指示RTMP流将暂停。具体地,服务器可按照上文所述的方式向客户端发送第三消息。相应地,客户端可以接收该第三消息从而获知该RTMP流将暂停。如上文所述,在一个优选实施例中,该第三消息为RTMP命令消息。对于第三消息的详细描述此处不再赘述。
[0073]接着,在步骤S42中,客户端基于所述第三消息,将暂停播放所述RTMP流的数据。具体地,客户端基于所述第三消息,获知该RTMP流将暂停,从而客户端将暂停播放该RTMP流的数据。此外,客户端在该RTMP流暂停期间,还可向用户呈现特定信息,例如以文字或图片等形式来告知客户该RTMP流已暂停。
[0074]在一个实施例中,客户端还可接收来自服务器的第四消息,其中,所述第四消息用于指示所述RTMP流将继续。具体地,服务器可按照上文所述的方式向客户端发送第四消息。相应地,客户端可以接收该第四消息从而获知该RTMP流将暂停。如上文所述,在一个优选实施例中,该第四消息为RTMP命令消息。对于第四消息的详细描述此处不再赘述。
[0075]在上述实施例中,客户端基于该第四消息,将继续播放该RTMP流的数据。此外,客户端还可向用户呈现特定信息,例如以文字或图形等形式来告知客户该RTMP流已恢复播放。
[0076]在一个实施例中,客户端还可接收来自服务器的RTMP Ping消息,并基于该RTMPPing消息,确定其与该服务器之间的连接性。此外,客户端还可向服务器发送对于所述RTMPPing消息的响应消息,当服务器接收到该响应消息时,则可确定其于该客户端之间的连接有效。
[0077]在一个实施例中,客户端还可基于来自服务器的第三消息或第四消息,来设置RTMP流的第二状态。此处,第二状态意指RTMP流在客户端的状态。具体地,当客户端接收到来自服务器的第三消息时,则客户端获知RTMP流将暂停,因此客户端将该RTMP流的第二状态设置为指示其为暂停的状态,例如“暂停”。当客户端接收到来自服务器的第四消息时,则客户端获知RTMP流将恢复,因此客户端将该RTMP流的第二状态设置为指示其为恢复的状态,例如“恢复”。本领域技术人员应理解,此处,对于第二状态的相关描述仅为示例性而非限定性描述,存在其他各种实现方式而不背离本发明的精神或范畴,并以引用的方式包含于此。
[0078]在上述实施例中,客户端接收到来自服务器的RTMP Ping消息中包括RTMP流的第一状态。则客户端可检查该RTMP流的第二状态是否与该RTMP流的第一状态之间的一致性。当该一致性检查失败,也即客户端检查到该RTMP流的第二状态与第一状态不一致时,客户端将基于该RTMP流的第一状态来设置该RTMP流的第二状态,并相应地暂停或继续播放该RTMP流的数据。例如,假定某RTMP流的第一状态为“暂停”。客户端接收到来自服务器的RTMP Ping消息,并获知该RTMP流的第一状态为“暂停”。当该客户端的第二状态为“暂停”时,则该客户端可确定其与第一状态一致。当该客户端的第二状态为“恢复”时,则该客户端可确定其与第一状态不一致,从而基于该第一状态,设置该RTMP流的第二状态为“暂停”,并相应地暂停播放该RTMP流的数据。按照上文所述的方式,当服务器向客户端所发送的第三消息或第四消息丢失时,客户端仍可从服务器所发送的RTMP Ping消息中获知RTMP流的第一状态,并相应地设置其第二状态并执行暂停或恢复播放。
[0079]此外,在上述实施例中,在客户端向服务器发送对于RTMP Ping消息的响应消息时,还可将RTMP流的第二状态包
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1