本发明涉及视频直播领域,尤其涉及一种直播视频推送方法及装置。
背景技术:
随着通信技术的发展,出现了越来越多的娱乐方式,如微博、手机游戏、网络视频直播等,其中网络视频直播由于其直观、内容丰富等特点,尤其受到人们的欢迎。
现有技术中,通常是主播客户端将直播视频流上传至cdn节点,观看客户端再从此cdn节点处获取直播视频流进行观看,也即是实现了视频直播。然而在主播客户端在实际推流的过程中,往往会出现一些推流不通畅的现象,而导致推流不通畅的原因可能是多方面的,因此,如何保证主播推流的通畅性,是亟需解决的问题。
技术实现要素:
有鉴于此,本发明实施例提供一种直播视频推送方法及装置,用以提高主播客户端推流的通畅性。
本发明实施例提供一种直播视频推送方法,包括:
若主播客户端的直播视频流推送不通畅,则检测当前使用的cdn节点是否正常;
若所述当前使用的cdn节点异常,则重新获取推流cdn节点,所述推流cdn节点对应的ip地址与所述主播客户端对应的ip地址具有预设对应关系;
将直播视频流发送至所述推流cdn节点。
可选地,所述检测当前使用的cdn节点是否正常,包括:
若所述主播客户端对应的ip地址与所述当前使用的cdn节点对应的ip地址不具有预设对应关系,则所述当前使用的cdn节点异常。
可选地,所述重新获取推流cdn节点,包括:
向服务器发送获取请求,所述获取请求中包括所述主播客户端对应的ip地址;
接收服务器发送的n个cdn节点的推流地址,所述n个cdn节点对应的ip地址与所述主播客户端对应的ip地址具有预设对应关系,n取1至预设数值;
从所述n个cdn节点中选择出所述推流cdn节点。
可选地,所述从所述n个cdn节点中选择出所述推流cdn节点,包括:
根据所述n个cdn节点的推流地址分别向所述n个cdn节点发送ping消息;
接收所述n个cdn节点分别发送的pong消息;
根据所述ping消息的发送时间以及所述pong消息的接收时间,确定所述n个cdn节点各自对应的消息传输时间;
从所述n个cdn节点中选择出对应于最短的所述消息传输时间的cdn节点为所述推流cdn节点。
可选地,所述重新获取推流cdn节点之后,还包括:
根据所述推流cdn节点对所述主播客户端对应的host进行绑定。
本发明实施例提供一种直播视频推送装置,包括:
检测模块,用于若主播客户端的直播视频流推送不通畅,则检测当前使用的cdn节点是否正常;
获取模块,用于若所述当前使用的cdn节点异常,则重新获取推流cdn节点,所述推流cdn节点对应的ip地址与所述主播客户端对应的ip地址具有预设对应关系;
发送模块,用于将直播视频流发送至所述推流cdn节点。
可选地,所述检测模块具体用于:若所述主播客户端对应的ip地址与所述当前使用的cdn节点对应的ip地址不具有预设对应关系,则所述当前使用的cdn节点异常。
可选地,所述获取模块包括:
发送单元,用于向服务器发送获取请求,所述获取请求中包括所述主播客户端对应的ip地址;
接收单元,用于接收服务器发送的n个cdn节点的推流地址,所述n个cdn节点对应的ip地址与所述主播客户端对应的ip地址具有预设对应关系,n取1至预设数值;
选择单元,用于从所述n个cdn节点中选择出所述推流cdn节点。
可选地,所述选择单元具体用于:
根据所述n个cdn节点的推流地址分别向所述n个cdn节点发送ping消息;
接收所述n个cdn节点分别发送的pong消息;
根据所述ping消息的发送时间以及所述pong消息的接收时间,确定所述n个cdn节点各自对应的消息传输时间;
从所述n个cdn节点中选择出对应于最短的所述消息传输时间的cdn节点为所述推流cdn节点。
可选地,该装置还包括:绑定模块,用于根据所述推流cdn节点对所述主播客户端对应的host进行绑定。
本发明实施例提供的直播视频推送方法及装置,当主播客户端发生直播视频流推送不通畅时,主播客户端立即检测当前使用的推流地址对应的当前使用的cdn节点是否正常。若检测到cdn节点出现异常,则根据cdn节点对应的ip地址与主播客户端对应的ip地址之间的预设对应关系重新获取推流cdn节点。由于重新获得的推流cdn节点对应的ip地址与主播客户端对应的ip地址是存在预设对应关系的,并且此预设对应关系的具体内容是可以保证主播客户端能够重新获得正常的推流cdn节点的,因此,利用此对应关系可以保证重新获得的推流cdn节点都是正常的。主播客户端将直播视频流推送至此正常的推流cdn节点,避免了由于cdn节点异常造成的直播视频流推送不流畅的情况,提高主播客户端推流的通畅性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的直播视频推送方法实施例一的流程图;
图2为本发明实施例提供的直播视频推送方法实施例二的流程图;
图3为本发明实施例提供的直播视频推送装置实施例一的结构示意图;
图4为本发明实施例提供的直播视频推送装置实施例二的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种,但是不排除包含至少一种的情况。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应当理解,尽管在本发明实施例中可能采用术语第一、第二、第三等来描述xxx,但这些xxx不应限于这些术语。这些术语仅用来将xxx彼此区分开。例如,在不脱离本发明实施例范围的情况下,第一xxx也可以被称为第二xxx,类似地,第二xxx也可以被称为第一xxx。
取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
图1为本发明实施例提供的直播视频推送方法实施例一的流程图,本实施例提供的该直播视频推送方法的执行主体可以为主播客户端。如图1所示,该方法包括如下步骤:
s101,主播客户端的直播视频流推送不通畅时,检测当前使用的cdn节点是否正常,若当前使用的cdn节点异常则执行步骤s102,否则结束。
当主播客户端的直播视频流推送不通畅时,主播客户端立即检测该主播客户端当前使用的cdn节点是否正常。
可选地,可以通过检测主播客户端对应的ip地址与当前的使用的cdn节点对应的ip地址之间是否具有预设对应关系来判断主播客户端当前使用的cdn节点是否正常。当主播客户端对应的ip地址与当前使用的cdn节点对应的ip地址不具有预设对应关系时,则表明主播客户端当前所使用的cnd节点是异常的。可选地,该预设对应关系可以具体反映客户端对应的ip地址与当前正在使用的推流cdn节点对应的ip地址之间网络运营商和/或地理位置的对应性。
可选地,还可以通过检测主播客户端与当前正在使用的cdn节点之间的丢包率来判断主播客户端当前使用的cdn节点是否正常。如果丢包率大于预设阈值则表示主播客户端当前使用的cdn节点是异常的。
s102,重新获取推流cdn节点,推流cdn节点的ip地址与主播客户端对应的ip地址具有预设对应关系。
当主播客户端检测到当前使用的cdn节点异常时,主播客户端可以向服务器发送获取请求,请求中可以包含主播客户端对应的ip地址。服务器根据主播客户端对应的ip地址,以及cdn节点对应的ip地址与主播客户端对应的ip地址之间的预设对应关系在众多cdn节点中以随机选择方式或依据预设的选择策略选择的方式选出一个cdn节点作为推流cdn节点,并将该推流cdn节点对应的推流地址发送至主播客户端。主播客户端接收此重新选出的推流cdn节点,也即是重新获取了一个推流cdn节点。
可选地,该预设对应关系可以包括cdn节点对应的ip地址所属的网络运营商与主播客户端对应的ip地址所属的网络运营商之间的对应关系。具体地,cdn节点对应的ip地址所属的网络运营商与主播客户端对应的ip地址所属的网络运营商相同。根据此对应关系,重新获取的推流cdn节点对应的ip地址所属的网络运营商与主播客户端对应的ip地址所属的网络运营商是相同的。例如,直播客户端对应的ip地址所属的网络运营商为联通,则重新获取的推流cdn节点对应的ip地址所属的网络运营商也为联通。
可选地,该预设对应关系可以包括cdn节点对应的ip地址所属的位置与主播客户端对应的ip地址所属的地理位置之间的对应关系。具体地,cdn节点对应的ip地址所属的地理位置与主播客户端对应的ip地址所属的地理位置相同或相近。根据此对应关系,重新获取的推流cdn节点对应的ip地址所属的地理位置与主播客户端对应的ip地址所属的地理位置是相同或相近的,其中可以根据预设的地理位置关系来判定重新获取的推流cdn节点对应的ip地址所属的地理位置与主播客户端对应的ip地址所属的地理位置是否相近。例如,当主播客户端对应的ip地址所属的位置为北京,则重新获取的推流cdn节点对应的ip地址所属的位置为北京或者北京周边的京津冀地区。
可选地,该预设对应关系可以包括cdn节点对应的ip地址所属的网络运营商和地理位置与主播客户端对应的ip地址所属的网络运营商和地理位置之间分别的对应关系。利用此对应关系重新获取的推流cdn节点对应的ip地址所属的网络运营商与主播客户端对应的ip地址所属的网络运营商相同,并且推流cdn节点对应的ip地址所属的地理位置与主播客户端对应的ip地址所属的地理位置相近或相同。例如,当主播客户端对应的ip地址所属的网络运营商为联通,所属位置为北京,则重新获取的推流cdn节点对应的ip地址所属的网络运营商为联通并且所属位置为北京或者北京周边的京津冀地区。
s103,将直播视频流发送至推流cdn节点。
主播客户端重新获得推流cdn节点后,则主播客户端停止向当前使用的cdn节点推送直播视频流,而将直播视频流重新发送至重新获得的推流cdn节点。
本实施例中,当主播客户端发生直播视频流推送不通畅时,主播客户端立即检测当前使用的推流地址对应的cdn节点是否正常。若检测到当前使用的cdn节点出现异常,则根据推流cdn节点对应的ip地址与主播客户端对应的ip地址之间的预设对应关系重新获取推流cdn节点。由于重新获得的推流cdn节点对应的ip地址与主播客户端对应的ip地址是存在预设对应关系的,并且此预设对应关系的具体内容是可以保证主播客户端能够重新获得正常的推流cdn节点的。因此,利用此对应关系可以保证重新获得的推流cdn节点是正常的。主播客户端将直播视频流推送至此正常的推流cdn节点,避免了由于cdn节点异常造成的直播视频流推送不流畅的情况,提高主播客户端推流的通畅性。
图2为本发明实施例提供的直播视频推送方法实施例二的流程图,如图2所示,该方法包括如下步骤:
s201,主播客户端的直播视频流推送不通畅时,检测当前使用的cdn节点是否正常,若cdn节点异常,则执行步骤s202,否则结束。
上述步骤s201的执行过程可以参见如图1所示实施例中的相关描述,在此不赘述。
s202,向服务器发送获取请求,获取请求中包括所述主播客户端对应的ip地址。
主播客户端当前使用的cdn节点发生异常时,则向服务器发送获取请求,以便服务器根据获取请求中包括的主播客户端对应的ip地址以及预设的主播客户端对应的ip地址与推流cdn节点的ip地址的对应关系,为主播客户端选择预设数量的cdn节点。
s203,接收服务器发送的n个cdn节点的推流地址,n个cdn节点对应的ip地址与主播客户端对应的ip地址具有预设对应关系,n取1至预设数值。
主播客户端接收服务器发送的n个cdn节点推流地址,而这n个cdn节点是服务器根据预设对应关系以及预设选择策略选择出来的。
与实施例一步骤s102中介绍的相似,预设对应关系可以包括cdn节点对应的ip地址与主播客户端对应的ip地址可以属于相同的网络运营商,或者cdn节点对应的ip地址与主播客户端对应的ip地址可以属于相同或相近的地理位置,又或者cdn节点对应的ip地址与主播客户端对应的ip地址属于相同的网络运营商并且属于相同或相近的地理位置。
服务器在众多cdn节点中按照上述预设对应关系选择出满足该预设对应关系的cdn节点,当选出的满足预设对应关系的cdn节点个数小于预设数值时,则把全部满足预设对应关系的cdn节点对应的推流地址发送至主播客户端,主播客户端接收此cdn节点对应的推流地址。当选出的满足预设对应关系的cdn节点个数大于预设数值时,则再根据预设的选择策略在满足预设对应关系的cdn节点中选出n个cdn节点,并将n个cdn节点对应的推流地址发送至主播客户端,n可以根据实际需求而设定。主播客户端接收此根据选择策略选择出的n个cdn节点对应的推流地址。
可选地,预设的选择策略可以是随机选择也可以是选择当前cdn节点中负载较轻的n个cdn节点。
s204,从n个cdn节点中选择出推流cdn节点。
在主播客户端获得n个cdn节点后,可以依据主播客户端内预设的选择策略从n个cdn节点中选出一个cdn节点作为推流cdn节点。
可选地,预设的选择策略可以是随机选择策略或者根据cdn节点质量择优选择策略。
具体地,若主播客户端根据cdn节点质量择优选择策略选出一个质量最优良的推流cdn节点时,需要对获得的n个cdn节点分别进行一个延迟检测,也即是检测主播客户端和n个cdn节点之间的数据传输速度。具体检测过程为:主播客户端分别根据n个cdn节点对应的推流地址向n个cdn节点发送ping消息,n个cdn节点接收到此ping消息后会分别向主播客户端返回一个pong消息,主播客户端在预设时间内接收此n个cdn节点分别发送的pong消息。主播客户端计算各个ping消息的发送时间与pong消息的接收时间之间的时间间隔,作为各自对应的消息传输时间,此消息传输时间也即是反映了主播客户端和cdn节点之间的数据传输速度,消息传输时间越短则说明数据传输速度越快。主播客户端最终从n个cdn节点中选取消息传输时间最短的cdn节点作为推流cdn节点。
另外,存在一种特殊情况,当主播客户端根据n个cdn节点对应的推流地址向n个cdn节点发送ping消息,但在预设时间内主播客户端并未接收到此n个cdn节点当中任一cdn节点返回的pong消息,这也就意味着主播客户端与此n个cnd节点之间都不能进行数据传输。此种情况下,主播客户端舍弃此n个cnd节点,并使用预设的一个通用推流域名,将直播视频流推送至该通用推流域名对应的cdn节点处。
s205,根据推流cdn节点对主播客户端对应的host进行绑定。
将主播客户端选出的推流cdn节点对应的域名和ip地址写入主播客户端内部的host文件也即是实现了推流节点与主播客户端对应的host之间的绑定,其中,该host文件内存有推流cdn节点对应的域名与ip地址之间的映射关系。当主播日后再次访问此推流cdn节点时,可以根据host文件中存储的映射关系直接访问推流节点,可以提高主播客户端访问cdn节点的速度。
s206,将直播视频流发送至推流cdn节点。
主播客户端将直播视频流发送至质量最佳的推流cdn节点,以提高主播客户端推流的流畅性。
本实施例中,在主播客户端检测到当前使用的cdn节点存在异常时,主播客户端会对于服务器返回的n个cdn节点进行进一步筛选,通过主播客户端的自主筛选可以获得质量最佳的cdn节点,将质量最佳的cdn节点作为推流cdn节点,可以提高主播客户端侧直播视频流推送的流畅性。同时,将获得的质量最佳的cdn节点即推流cdn节点对应的域名和ip地址与主播客户端中的host文件进行绑定也即是写入host文件中,这样,当主播客户端再次访问此推流cdn节点时,根据host文件中记载的内容可以大大提高主播客户端访问推流cdn节点的速度。
图3为本发明实施例提供的直播视频推送装置实施例一的结构示意图,如图3所示,该直播视频推送装置包括:检测模块11、获取模块12、发送模块13。
检测模块11,用于若主播客户端的直播视频流推送不通畅,则检测当前使用的cdn节点是否正常。
可选地,检测模块11具体用于若主播客户端对应的ip地址与当前使用的cdn节点对应的ip地址不具有预设对应关系,则当前使用的cdn节点异常。
获取模块12,用于若当前使用的cdn节点异常,则重新获取推流cdn节点,推流cdn节点对应的ip地址与主播客户端对应的ip地址具有预设对应关系。
发送模块13,用于将直播视频流发送至所述推流cdn节点。
图3所示装置可以执行图1所示实施例的方法,本实施例未详细描述的部分,可参考对图1所示实施例的相关说明。该技术方案的执行过程和技术效果参见图1所示实施例中的描述,在此不再赘述。
图4为本发明实施例提供的直播视频推送装置实施例二的结构示意图,如图4所示,在图3所示实施例基础上,该直播视频推送装置中的获取模块12具体可以包括:发送单元121、接收单元122、选择单元123,该直播视频推送装置还包括绑定模块21。
发送单元121,用于向服务器发送获取请求,获取请求中包括所述主播客户端对应的ip地址。
接收单元122,用于接收服务器发送的n个cdn节点的推流地址,n个cdn节点对应的ip地址与主播客户端对应的ip地址具有预设对应关系,n取1至预设数值。
选择单元123,用于从n个cdn节点中选择出推流cdn节点。
其中,选择单元123具体用于根据n个cdn节点的推流地址分别向n个cdn节点发送ping消息;接收n个cdn节点分别发送的pong消息;根据ping消息的发送时间以及pong消息的接收时间,确定n个cdn节点各自对应的消息传输时间;从n个cdn节点中选择出对应于最短的消息传输时间的cdn节点为推流cdn节点。
绑定模块21,用于根据推流cdn节点对主播客户端对应的host进行绑定。
图4所示装置可以执行图2所示实施例的方法,本实施例未详细描述的部分,可参考对图2所示实施例的相关说明。该技术方案的执行过程和技术效果参见图2所示实施例中的描述,在此不再赘述。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以产品的形式体现出来,该计算机产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。