CN109246123B - 媒体流获取方法及装置 - Google Patents
媒体流获取方法及装置 Download PDFInfo
- Publication number
- CN109246123B CN109246123B CN201811157395.0A CN201811157395A CN109246123B CN 109246123 B CN109246123 B CN 109246123B CN 201811157395 A CN201811157395 A CN 201811157395A CN 109246123 B CN109246123 B CN 109246123B
- Authority
- CN
- China
- Prior art keywords
- attribute
- server
- connection
- target
- value
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1069—Session establishment or de-establishment
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/65—Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/80—Responding to QoS
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Information Transfer Between Computers (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种媒体流获取方法及装置,属于网络技术领域。所述方法包括:当启动直播应用时,预先建立目标连接,所述目标连接用于从服务器获取媒体流,所述直播应用用于提供多个直播频道;检测所述目标连接的状态;当所述目标连接的状态为不可用状态时,重新建立所述目标连接;当接收到对任一直播频道的媒体流获取指令时,基于所述目标连接,从所述服务器获取所述直播频道的媒体流。本发明通过在接收到媒体流获取指令之前预先目标连接,一旦检测到目标连接不可用,则重新建立目标连接,这样在接收到媒体流获取指令时,可以直接基于预先建立的目标连接,快速地从服务器获取对应的媒体流,减少了终端获取媒体流所需的时间。
Description
技术领域
本发明涉及网络技术领域,尤其涉及一种媒体流获取方法及装置。
背景技术
随着网络技术的发展,越来越多的用户使用终端在网络上观看直播视频,直播视频一般是基于RTMP(Real Time Messaging Protocol,实时消息传输协议)协议,以媒体流的形式提供给终端。
目前,用户可以在终端上对某个直播频道(直播间)进行点击操作,当终端检测到该操作时,先与流媒体服务器建立连接,包括依次与流媒体服务器进行握手、建立网络连接和建立流连接,然后向流媒体服务器发送播放指令,从流媒体服务器获取媒体流。
上述技术在检测到用户操作后才与服务器建立连接,而该连接的建立往往需要耗费较长时间,导致获取媒体流所需的时间较长。
发明内容
本发明实施例提供了一种媒体流获取方法及装置,可以解决相关技术获取媒体流所需的时间较长的问题。所述技术方案如下:
第一方面,提供一种媒体流获取方法,包括:
当启动直播应用时,预先建立目标连接,所述目标连接用于从服务器获取媒体流,所述直播应用用于提供多个直播频道;
检测所述目标连接的状态;
当所述目标连接的状态为不可用状态时,重新建立所述目标连接;
当接收到对任一直播频道的媒体流获取指令时,基于所述目标连接,从所述服务器获取所述直播频道的媒体流。
在一种可能实现方式中,所述预先建立目标连接,包括:
为预建连接对象指针变量分配预建连接对象,初始化所述预建连接对象的第一属性、第二属性和第三属性的取值为第一目标值,第四属性的取值为初始时间,所述第一属性用于描述是否已建立TCP(Transmission Control Protocol,传输控制协议)连接,所述第二属性用于描述是否完成前置指令,所述第三属性用于描述目标连接是否可用,所述第四属性用于描述最后接收到用户控制报文的时间;
当成功与所述服务器建立TCP连接后,将所述第一属性的取值修改为第二目标值;
当成功与所述服务器进行多个前置指令的交互后,将所述第二属性和所述第三属性的取值修改为所述第二目标值,将所述第四属性的取值更新为当前时间,所述多个前置指令包括握手指令、连接指令和创建流指令。
在一种可能实现方式中,所述检测所述目标连接的状态,包括:
尝试读取所述服务器发送的用户控制报文;
当读取到所述服务器发送的用户控制报文时,将所述第四属性的取值更新为当前时间,确定所述目标连接的状态为可用状态;
当未读取到所述服务器发送的用户控制报文时,根据当前时间与所述第四属性的取值之间的时间间隔,确定所述目标连接的状态。
在一种可能实现方式中,所述根据当前时间与所述第四属性的取值之间的时间间隔,确定所述目标连接的状态,包括:
当前时间与所述第四属性的取值之间的时间间隔大于预设时间间隔时,确定所述目标连接的状态为不可用状态,所述预设时间间隔大于所述服务器发送用户控制报文的时间间隔;
当前时间与所述第四属性的取值之间的时间间隔小于所述预设时间间隔时,休眠第一预设时长后,通过执行尝试读取所述服务器发送的用户控制报文的步骤,确定所述目标连接的状态,所述第一预设时长对应的时间间隔小于所述服务器发送用户控制报文的时间间隔。
在一种可能实现方式中,所述检测所述目标连接的状态之后,所述方法还包括:
当所述目标连接的状态为可用状态时,休眠第一预设时长后,继续执行尝试读取所述服务器发送的用户控制报文的步骤。
在一种可能实现方式中,所述当所述目标连接的状态为不可用状态时,重新建立所述目标连接,包括:
当所述目标连接的状态为不可用状态时,休眠第二预设时长后,关闭所述TCP连接,删除所述预建连接对象,设置所述预建连接对象指针变量为空,重新执行预先建立目标连接的步骤。
在一种可能实现方式中,所述当接收到对任一直播频道的媒体流获取指令时,基于所述目标连接,从所述服务器获取所述直播频道的媒体流,包括:
当接收到对任一直播频道的媒体流获取指令时,获取所述直播频道的流地址和流名称;
当所述预建连接对象指针变量不为空,且所述第三属性的取值为所述第二目标值时,基于所述目标连接,向所述服务器发送播放指令,接收所述服务器发送的媒体流,所述播放指令携带所述流名称和流标识,所述流标识从所述创建流指令的响应结果中获取。
在一种可能实现方式中,所述获取所述直播频道的流地址和流名称之后,所述方法还包括:
当所述预建连接对象指针变量为空时,基于所述流地址,从所述服务器获取媒体流;或,
当所述预建连接对象指针变量不为空,且所述第三属性的取值为所述第一目标值时,基于所述流地址,从所述服务器获取媒体流。
第二方面,提供一种媒体流获取装置,包括:
建立模块,用于当启动直播应用时,预先建立目标连接,所述目标连接用于从服务器获取媒体流,所述直播应用用于提供多个直播频道;
检测模块,用于检测所述目标连接的状态;
所述建立模块,还用于当所述目标连接的状态为不可用状态时,重新建立所述目标连接;
获取模块,用于当接收到对任一直播频道的媒体流获取指令时,基于所述目标连接,从所述服务器获取所述直播频道的媒体流。
在一种可能实现方式中,所述建立模块用于:
为预建连接对象指针变量分配预建连接对象,初始化所述预建连接对象的第一属性、第二属性和第三属性的取值为第一目标值,第四属性的取值为初始时间,所述第一属性用于描述是否已建立传输控制协议TCP连接,所述第二属性用于描述是否完成前置指令,所述第三属性用于描述目标连接是否可用,所述第四属性用于描述最后接收到用户控制报文的时间;
当成功与所述服务器建立TCP连接后,将所述第一属性的取值修改为第二目标值;
当成功与所述服务器进行多个前置指令的交互后,将所述第二属性和所述第三属性的取值修改为所述第二目标值,将所述第四属性的取值更新为当前时间,所述多个前置指令包括握手指令、连接指令和创建流指令。
在一种可能实现方式中,所述检测模块用于:
尝试读取所述服务器发送的用户控制报文;
当读取到所述服务器发送的用户控制报文时,将所述第四属性的取值更新为当前时间,确定所述目标连接的状态为可用状态;
当未读取到所述服务器发送的用户控制报文时,根据当前时间与所述第四属性的取值之间的时间间隔,确定所述目标连接的状态。
在一种可能实现方式中,所述检测模块用于:
当前时间与所述第四属性的取值之间的时间间隔大于预设时间间隔时,确定所述目标连接的状态为不可用状态,所述预设时间间隔大于所述服务器发送用户控制报文的时间间隔;
当前时间与所述第四属性的取值之间的时间间隔小于所述预设时间间隔时,休眠第一预设时长后,通过执行尝试读取所述服务器发送的用户控制报文的步骤,确定所述目标连接的状态,所述第一预设时长对应的时间间隔小于所述服务器发送用户控制报文的时间间隔。
在一种可能实现方式中,所述检测模块还用于当所述目标连接的状态为可用状态时,休眠第一预设时长后,继续执行尝试读取所述服务器发送的用户控制报文的步骤。
在一种可能实现方式中,所述建立模块用于当所述目标连接的状态为不可用状态时,休眠第二预设时长后,关闭所述TCP连接,删除所述预建连接对象,设置所述预建连接对象指针变量为空,重新执行预先建立目标连接的步骤。
在一种可能实现方式中,所述获取模块用于:
当接收到对任一直播频道的媒体流获取指令时,获取所述直播频道的流地址和流名称;
当所述预建连接对象指针变量不为空,且所述第三属性的取值为所述第二目标值时,基于所述目标连接,向所述服务器发送播放指令,接收所述服务器发送的媒体流,所述播放指令携带所述流名称和流标识,所述流标识从所述创建流指令的响应结果中获取。
在一种可能实现方式中,所述获取模块还用于当所述预建连接对象指针变量为空时,基于所述流地址,从所述服务器获取媒体流;或,
所述获取模块还用于当所述预建连接对象指针变量不为空,且所述第三属性的取值为所述第一目标值时,基于所述流地址,从所述服务器获取媒体流。
第三方面,提供了一种计算机设备,包括处理器和存储器;所述存储器,用于存放计算机程序;所述处理器,用于执行所述存储器上所存放的计算机程序,实现第一方面任一种实现方式所述的方法步骤。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面任一种实现方式所述的方法步骤。
本发明实施例提供的技术方案带来的有益效果至少包括:
通过在接收到媒体流获取指令之前预先目标连接,一旦检测到目标连接不可用,则重新建立目标连接,这样在接收到媒体流获取指令时,可以直接基于预先建立的目标连接,快速地从服务器获取对应的媒体流,减少了终端获取媒体流所需的时间。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种媒体流获取方法的实施环境的示意图;
图2是本发明实施例提供的一种媒体流获取方法的流程图;
图3是本发明实施例提供的一种媒体流获取方法的流程图;
图4是本发明实施例提供的一种媒体流获取装置的结构示意图;
图5是本发明实施例提供的一种终端500的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
图1是本发明实施例提供的一种媒体流获取方法的实施环境的示意图。参见图1,该实施环境可以包括第一终端101、服务器102和多个第二终端103。
第一终端101是指主播用户进行直播的终端,第二终端103为获取媒体流,供观众用户观看直播视频的终端。服务器102用于为第一终端101和第二终端103提供直播服务,具体地,服务器101可以通过第一终端101和第二终端103所安装的应用向其提供服务。该服务器102可以是流媒体服务器,该多服务器102可以是多个服务器组成的服务器集群。
主播用户可以通过第一终端101在直播频道(直播间)内进行视频直播,第二终端103的观众用户可以登录服务器102,进入主播用户的直播频道内。在主播用户进行视频直播的过程中,第一终端101可以将主播用户的直播视频以媒体流的形式实时发送给服务器102,由服务器102发送给直播频道内的第二终端103,使得第二终端103可以获取到媒体流。
图2是本发明实施例提供的一种媒体流获取方法的流程图。参见图2,该方法包括:
201、当启动直播应用时,预先建立目标连接,该目标连接用于从服务器获取媒体流,该直播应用用于提供多个直播频道。
202、检测该目标连接的状态。
203、当该目标连接的状态为不可用状态时,重新建立该目标连接。
204、当接收到对任一直播频道的媒体流获取指令时,基于该目标连接,从该服务器获取该直播频道的媒体流。
本发明实施例提供的方法,通过在接收到媒体流获取指令之前预先目标连接,一旦检测到目标连接不可用,则重新建立目标连接,这样在接收到媒体流获取指令时,可以直接基于预先建立的目标连接,快速地从服务器获取对应的媒体流,减少了终端获取媒体流所需的时间。
在一种可能实现方式中,该预先建立目标连接,包括:
为预建连接对象指针变量分配预建连接对象,初始化该预建连接对象的第一属性、第二属性和第三属性的取值为第一目标值,第四属性的取值为初始时间,该第一属性用于描述是否已建立传输控制协议TCP连接,该第二属性用于描述是否完成前置指令,该第三属性用于描述目标连接是否可用,该第四属性用于描述最后接收到用户控制报文的时间;
当成功与该服务器建立TCP连接后,将该第一属性的取值修改为第二目标值;
当成功与该服务器进行多个前置指令的交互后,将该第二属性和该第三属性的取值修改为该第二目标值,将该第四属性的取值更新为当前时间,该多个前置指令包括握手指令、连接指令和创建流指令。
在一种可能实现方式中,该检测该目标连接的状态,包括:
尝试读取该服务器发送的用户控制报文;
当读取到该服务器发送的用户控制报文时,将该第四属性的取值更新为当前时间,确定该目标连接的状态为可用状态;
当未读取到该服务器发送的用户控制报文时,根据当前时间与该第四属性的取值之间的时间间隔,确定该目标连接的状态。
在一种可能实现方式中,该根据当前时间与该第四属性的取值之间的时间间隔,确定该目标连接的状态,包括:
当前时间与该第四属性的取值之间的时间间隔大于预设时间间隔时,确定该目标连接的状态为不可用状态,该预设时间间隔大于该服务器发送用户控制报文的时间间隔;
当前时间与该第四属性的取值之间的时间间隔小于该预设时间间隔时,休眠第一预设时长后,通过执行尝试读取该服务器发送的用户控制报文的步骤,确定该目标连接的状态,该第一预设时长对应的时间间隔小于该服务器发送用户控制报文的时间间隔。
在一种可能实现方式中,该检测该目标连接的状态之后,该方法还包括:
当该目标连接的状态为可用状态时,休眠第一预设时长后,继续执行尝试读取该服务器发送的用户控制报文的步骤。
在一种可能实现方式中,该当该目标连接的状态为不可用状态时,重新建立该目标连接,包括:
当该目标连接的状态为不可用状态时,休眠第二预设时长后,关闭该TCP连接,删除该预建连接对象,设置该预建连接对象指针变量为空,重新执行预先建立目标连接的步骤。
在一种可能实现方式中,该当接收到对任一直播频道的媒体流获取指令时,基于该目标连接,从该服务器获取该直播频道的媒体流,包括:
当接收到对任一直播频道的媒体流获取指令时,获取该直播频道的流地址和流名称;
当该预建连接对象指针变量不为空,且该第三属性的取值为该第二目标值时,基于该目标连接,向该服务器发送播放指令,接收该服务器发送的媒体流,该播放指令携带该流名称和流标识,该流标识从该创建流指令的响应结果中获取。
在一种可能实现方式中,该获取该直播频道的流地址和流名称之后,该方法还包括:
当该预建连接对象指针变量为空时,基于该流地址,从该服务器获取媒体流;或,
当该预建连接对象指针变量不为空,且该第三属性的取值为该第一目标值时,基于该流地址,从该服务器获取媒体流。
上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。
图3是本发明实施例提供的一种媒体流获取方法的流程图。该方法可以由终端执行,该终端可以是图1所示实施环境中的第二终端103,参见图3,该方法包括:
301、当启动直播应用时,终端预先建立目标连接,该目标连接用于从服务器获取媒体流,该直播应用用于提供多个直播频道。
其中,该目标连接可以是RTMP流连接,直播频道也称为直播间,服务器可以是流媒体服务器。
本发明实施例中,用户可以在终端上对直播应用进行启动操作,如点击该直播应用的图标,触发对该直播应用的启动指令。终端在接收到该启动指令时,可以启动直播应用,并建立目标连接。在一种可能实现方式中,在启动直播应用的过程中,终端可以初始化视频播放器,通过该视频播放器来播放后续获取到的媒体流,终端还可以初始化预建连接管理模块,通过该预建连接管理模块来执行预先建立目标连接的过程。
当然,本发明实施例仅以终端在启动直播应用时建立目标连接为例进行说明,实际上,终端也可以在用户点击任一个直播频道,以触发媒体流获取指令之前的其他时机建立目标连接,本发明实施例对此不做限定。
在一种可能实现方式中,终端预先建立目标连接之前,可以执行步骤3011:
步骤3011、终端初始化预建连接对象指针变量为空,获取域名。
其中,该预建连接对象指针变量可以表示为“PSLinkObjectPtr”,当其为空“NULL”时,表示该指针变量未指向任何对象。
在一种可能实现方式中,终端可以向流媒体调度管理服务器发送域名获取请求,由流媒体调度管理服务器向终端返回流媒体服务器系统的域名,该域名与终端在获取媒体流时可能访问的服务器的IP地址对应。
在一种可能实现方式中,终端可以在初始化预建连接管理模块时,初始化预建连接对象指针变量,获取域名,启动一个预建连接管理线程,由该线程来负责预先建立目标连接。在一种可能实现方式中,目标连接的建立过程可以包括步骤3012至步骤3017:
步骤3012、当预建连接对象指针变量为空时,终端为预建连接对象指针变量分配预建连接对象,初始化预建连接对象的第一属性、第二属性和第三属性的取值为第一目标值,第四属性的取值为初始时间,执行步骤3013。
其中,该第一属性用于描述是否已建立TCP连接,该第一属性可以用变量“IsTCPAvailable”表示;该第二属性用于描述是否完成前置指令,该第二属性可以用变量“IsPreCommandFinished”表示;该第三属性用于描述目标连接是否可用,该第三属性可以用变量“IsALive”表示,该第四属性用于描述最后接收到用户控制报文的时间,该第四属性可以用变量“LastRPingTime”表示。
第一属性、第二属性和第三属性均可以有两个取值,如第一目标值和第二目标值,第一目标值和第二目标值均可以是逻辑值,例如,第一目标值可以是False,第二目标值可以是True。第四属性的取值为时间,初始时间可以为0。
当第一属性的取值为第一目标值时,表示未建立TCP连接,当第一属性的取值为第二目标值时,表示已建立TCP连接;当第二属性的取值为第一目标值时,表示未完成前置指令,当第二属性的取值为第二目标值时,表示已完成前置指令;当第三属性的取值为第一目标值时,表示目标连接不可用,当第三属性的取值为第二目标值时,表示目标连接可用。
终端为该预建连接对象指针变量分配预建连接对象后,预建连接对象指针变量则不为空。
步骤3013、当该第一属性的取值为第一目标值时,终端与服务器建立TCP连接,如果失败,休眠第二预设时长后,删除该预建连接对象,设置预建连接对象指针变量为空,重新执行步骤3012;如果成功,将该第一属性的取值修改为第二目标值,执行步骤3014。
针对步骤3011中终端获取域名,在该步骤3013中,终端可以获取域名对应的IP(Internet Protocol,互联网协议)地址,与该IP地址对应的服务器建立TCP连接。例如,终端可以通过DNS(Domain Name System,域名系统)服务器将域名解析为对应的IP地址,例如,终端可以向DNS服务器发送域名解析请求,该域名解析请求携带步骤3011中获取到的域名,由DNS服务器返回该域名对应的IP地址。
步骤3014、当该第二属性的取值为第一目标值时,终端与服务器进行多个前置指令的交互,如果任一指令失败,休眠第二预设时长后,关闭该TCP连接,并删除该预建连接对象,设置预建连接对象指针变量为空;如果成功,将该第二属性和第三属性的取值修改为第二目标值,将第四属性的取值更新为当前时间。
其中,前置指令是指播放(Play)指令之前的指令,该多个前置指令包括握手指令、连接(Connect)指令和创建流(CreateStream)指令。
终端与服务器进行多个前置指令的交互包括:终端向服务器发起RTMP握手过程,握手完成后向服务器发送Connect指令,并等待其响应结果,然后向服务器发起CreateStream指令,并等待其响应结果。握手过程用于判别终端和服务器是否存在;Connect指令成功后,终端和服务器之间建立起网络连接,但还无法支持媒体流传输;CreateStream指令成功后,终端和服务器之间可以传输媒体流。
在一种可能实现方式中,当成功与该服务器进行多个前置指令的交互后,终端可以从该创建流指令的响应结果中获取流标识,流标识也即是流ID(identification,身份标识)。
终端在与服务器进行前置指令交互的过程中,接收到了服务器的响应结果,即使该响应结果不是用户控制报文,但仍然可以通过该响应结果,确定终端与服务器之间的连接是可用的,故终端可以对第四属性的取值进行一次更新。
对于服务器而言,服务器在接收到终端发起的TCP连接、RTMP握手、Connect指令和CreateStream指令后,可以进行相应处理。例如,指令的接收和处理步骤可以由服务器的主进程执行。
终端预先建立目标连接后,由于用户尚未点击任何直播频道,因此终端需要维持预先建立的目标连接的心跳,具体过程参见后续步骤302至步骤303。
302、终端检测该目标连接的状态,该状态包括可用状态和不可用状态。
其中,可用状态表示终端能够基于预先建立的目标连接,从服务器获取媒体流,不可用状态表示终端不能基于预先建立的目标连接,从服务器获取媒体流。
本发明实施例中,终端可以与服务器之间进行信息交互,来检测目标连接的状态,在一种可能实现方式中,该信息交互可以是用户控制报文的交互,相应地,该步骤302可以包括以下步骤3021至步骤3023:
步骤3021、终端尝试读取该服务器发送的用户控制报文,当读取到该服务器发送的用户控制报文时,将该第四属性的取值更新为当前时间,确定该目标连接的状态为可用状态,执行步骤3022;当未读取到该服务器发送的用户控制报文时,执行步骤3023。
本发明实施例中,终端可以与服务器之间进行用户控制报文交互,通过交互情况,来确定目标连接的状态。例如,终端可以尝试读取来自服务器的Ping用户控制报文,如果读取到Ping用户报文,则向服务器回应Pong用户控制报文。由于终端接收到来自服务器的控制报文,表明预先建立的目标连接为可用状态,因此,终端可以对第四属性的取值进行更新。
相应地,服务器可以每过一定时间间隔,基于预先建立的目标连接,向服务器发送Ping用户控制报文,并等待终端回应的Pong用户控制报文。例如,向终端发送控制报文的步骤可以由服务器的主进程执行。
需要说明的是,本发明实施例是以终端与服务器之间进行用户控制报文交互,来确定目标连接的状态为例进行说明,实际上,终端与服务器之间也可以采用其他交互方式,如心跳信息的交互,来确定目标连接的状态,本发明实施例对此不做限定。
步骤3022、当该目标连接的状态为可用状态时,终端休眠第一预设时长后,继续执行尝试读取该服务器发送的用户控制报文的步骤。
其中,该第一预设时长对应的时间间隔小于该服务器发送用户控制报文的时间间隔,例如,服务器发送用户控制报文的时间间隔为5秒,第一预设时长为1秒。
本发明实施例中,当终端检测到目标连接处于可用状态时,终端可以休眠一段时间后,再尝试读取来自服务器的用户控制报文,其中,休眠的时间小于服务器发送用户控制报文的时间间隔,这种休眠方式,在不影响检测目标连接的状态的前提下,可以节约终端的资源消耗。
步骤3023、终端获取当前时间,判断当前时间与该第四属性的取值之间的时间间隔是否大于预设时间间隔,如果是,确定该目标连接的状态为不可用状态,如果否,休眠第一预设时长后,通过执行尝试读取该服务器发送的用户控制报文的步骤,确定该目标连接的状态。
其中,该预设时间间隔大于该服务器发送用户控制报文的时间间隔,例如,服务器发送用户控制报文的时间间隔为5秒,预设时间间隔可以为8秒。
如果当前时间与该第四属性的取值之间的时间间隔大于预设时间间隔,表明预先建立的目标连接存在风险,该目标连接不可用。如果时间间隔小于预设时间间隔,则休眠一段时间后,继续进行状态检测。
需要说明的是,该步骤3023是根据当前时间与该第四属性的取值之间的时间间隔,确定该目标连接的状态的一种可能实现方式。通过根据当前时间与最后接收到用户控制报文的时间之间的差值,可以准确地得知终端与服务器之间是否在正常的进行用户控制报文的交互,从而确定目标连接的状态。
303、当该目标连接的状态为不可用状态时,终端重新建立该目标连接。
在一种可能实现方式中,终端重新建立目标连接的过程包括:当该目标连接的状态为不可用状态时,休眠第二预设时长后,关闭预建连接对象指针变量所指向的预建连接对象的TCP连接,并删除预建连接对象指针变量所指向的预建连接对象,设置该预建连接对象指针变量为空,重新执行预先建立目标连接的步骤,也即是,重新执行步骤3012至步骤3014。其中,相比于第一预设时长,第二预设时长可以设置的比较短,如10毫秒。
通过步骤302至步骤303,终端与服务器之间可以保持可靠的目标连接,从而保证用户在点击直播频道时,终端可以直接使用目标连接从服务器获取媒体流。
304、当接收到对任一直播频道的媒体流获取指令时,终端基于该目标连接,从该服务器获取该直播频道的媒体流。
本发明实施例中,终端在启动直播应用后,可以显示直播应用提供的多个直播频道,用户可以对其中任一个直播频道进行点击操作,触发对该直播频道的媒体流获取指令,当终端接收到该媒体流获取指令后,可以向服务器请求获取该直播频道的媒体流进行播放。
在一种可能实现方式中,基于该目标连接,从该服务器获取该直播频道的媒体流包括以下步骤3041至步骤3046:
步骤3041、当接收到对任一直播频道的媒体流获取指令时,终端获取该直播频道的流地址和流名称。
本发明实施例中,直播应用提供的所有直播频道均对应有流地址和流名称,当用户点击任一个直播频道时,终端可以根据直播频道与流地址和流名称之间的对应关系,获取到用户所点击的直播频道的流地址(StreamURL)和流名称(StreamName)。
在一种可能实现方式中,流媒体调度管理服务器可以存储有直播频道的标识与流地址和流名称之间的对应关系,当终端检测到用户点击任一个直播频道的操作时,终端可以向流媒体调度管理服务器发送请求,该请求携带用户所点击的直播频道的标识,流媒体调度管理服务器可以根据终端发送的直播频道的标识,查询对应关系,将对应的流地址和流名称发送给终端,使得终端获取到直播频道的流地址和流名称。
步骤3042、终端判断预建连接对象指针变量的取值是否为空,如果是,执行步骤3044,如果否,执行步骤3043。
终端可以先判断预建连接对象指针变量的取值是否为空,如果为空,表明预先建立的目标连接不可用,则终端可以执行步骤3043,如果不为空,则终端可以执行读取第三属性的步骤。
步骤3043、终端判断预建连接对象指针变量所指向的预建连接对象的第三属性的取值是否为第一目标值,如果是,执行步骤3044,如果否,执行步骤3045。
当第三属性的取值为第一目标值时,表示目标连接可用,当第三属性的取值不为第一目标值时,表示目标连接不可用。
步骤3044、终端基于该流地址,从该服务器获取媒体流。
本发明实施例中,当该预建连接对象指针变量为空时,终端执行该步骤3044,或,当该预建连接对象指针变量不为空,且该第三属性的取值为该第一目标值时,终端执行该步骤3044。
该步骤3044是终端基于流地址,执行正常的媒体流获取流程,媒体流的获取过程可以包括:终端与服务器建立TCP连接和进行前置指令交互后,基于流地址,向服务器发送播放指令(Play指令),接收服务器返回的媒体流。
步骤3045、终端基于该目标连接,向该服务器发送播放指令,该播放指令携带该流标识和流名称。
其中,该流标识在步骤3015中从该创建流指令的响应结果中获取。
本发明实施例中,当该预建连接对象指针变量不为空,且该第三属性的取值为该第二目标值时,终端执行该步骤3045。终端预先建立目标连接后,终端和服务器之间有了传输媒体流的通道,因此,终端在需要获取媒体流时,可以向服务器发送Play指令,以请求服务器开始向终端发送媒体流。其中,Play指令中携带的流名称用于标识需要获取的是哪路媒体流,每路媒体流对应一个流名称,服务器可以根据该Play指令中携带的流名称,向终端传输该流名称对应的媒体流。Play指令中携带的流标识用于区分传输的视频帧属于哪个流名称对应的媒体流,该流标识还可以用于服务器区分不同媒体流的内存缓冲区(包括发送与接收缓冲区)以及关联的对象和一些属性等相关信息,以保障媒体流的正确传输。
在一种可能实现方式中,当该第三属性的取值为该第二目标值时,终端可以先将预建连接对象指针变量赋值给连接对象指针变量,并将预建连接对象指针变量设置为空后,再以流标识和流名称为参数,基于目标连接,向服务器发送Play指令,并等待媒体流。
步骤3046、终端接收该服务器发送的媒体流。
终端向服务器发送Play指令后,服务器可以解析出Play指令携带的流标识和流名称,进而服务器可以判断该流名称对应的媒体流是否存在,如果存在,则向终端转发该媒体流,如果不存在,则向上级服务器请求该媒体流后,再向终端转发给该媒体流。
其中,该接收Play指令、解析出流标识和流名称可以由服务器的主进程执行,进而,该主进程可以将预先建立的目标连接转移至服务器的子进程,转移时尽量向目标子进程转移,该目标子进程是指已经从上级服务器拉取到该流名称对应的媒体流的子进程,当然,如果不存在该目标子进程,也即是,没有任何一个子进程已经从上级服务器拉取到该流名称对应的媒体流,则该主进程可以选取一个负载最小的子进程,并向该负载最小的子进程转移预先建立的目标连接。然后,被转移该目标连接的子进程可以判断该流名称对应的媒体流是否存在,如果存在,则基于该目标连接向终端转发该媒体流,如果不存在,则向上级服务器请求该媒体流后,再基于该目标连接,向终端转发给该媒体流,使得终端可以接收到媒体流。
终端在获取媒体流后,进一步地,终端可以对媒体流进行解码和渲染处理,显示视频首帧。通过将建立连接的动作提前,在用户观看视频前,预先建立目标连接,在接收到用户观看某直播频道的指令后,直接使用预先建立的目标连接,立即向服务器发送Play指令,即可快速接收到服务器发送的媒体流,从而降低视频首屏时长,减少了用户观看视频首帧的等待时间。其中,首屏时长是从接收到用户触发的媒体流获取指令至显示出视频首帧的这段时间对应的时长。
可选地,当关闭直播应用时,终端可以销毁目标连接。例如,用户可以在终端上进行关闭直播应用的操作,触发对该直播应用的关闭指令,当接收到该关闭指令时,终端可以关闭该直播应用,销毁目标连接。在一种可能实现方式中,在关闭直播应用的过程中,终端可以销毁视频播放器,销毁预建连接管理模块,停止预建连接管理线程,关闭预建连接对象指针变量所指示的预建连接对象的网络连接,并删除预建连接对象。
本发明实施例提供的方法,通过在接收到媒体流获取指令之前预先目标连接,一旦检测到目标连接不可用,则重新建立目标连接,这样在接收到媒体流获取指令时,可以直接基于预先建立的目标连接,快速地从服务器获取对应的媒体流,减少了终端获取媒体流所需的时间。
图4是本发明实施例提供的一种媒体流获取装置的结构示意图。参照图4,该装置包括:
建立模块401,用于当启动直播应用时,预先建立目标连接,该目标连接用于从服务器获取媒体流,该直播应用用于提供多个直播频道;
检测模块402,用于检测该目标连接的状态;
该建立模块401,还用于当该目标连接的状态为不可用状态时,重新建立该目标连接;
获取模块403,用于当接收到对任一直播频道的媒体流获取指令时,基于该目标连接,从该服务器获取该直播频道的媒体流。
在一种可能实现方式中,该建立模块401用于:
为预建连接对象指针变量分配预建连接对象,初始化该预建连接对象的第一属性、第二属性和第三属性的取值为第一目标值,第四属性的取值为初始时间,该第一属性用于描述是否已建立传输控制协议TCP连接,该第二属性用于描述是否完成前置指令,该第三属性用于描述目标连接是否可用,该第四属性用于描述最后接收到用户控制报文的时间;
当成功与该服务器建立TCP连接后,将该第一属性的取值修改为第二目标值;
当成功与该服务器进行多个前置指令的交互后,将该第二属性和该第三属性的取值修改为该第二目标值,将该第四属性的取值更新为当前时间,该多个前置指令包括握手指令、连接指令和创建流指令。
在一种可能实现方式中,该检测模块402用于:
尝试读取该服务器发送的用户控制报文;
当读取到该服务器发送的用户控制报文时,将该第四属性的取值更新为当前时间,确定该目标连接的状态为可用状态;
当未读取到该服务器发送的用户控制报文时,根据当前时间与该第四属性的取值之间的时间间隔,确定该目标连接的状态。
在一种可能实现方式中,该检测模块402用于:
当前时间与该第四属性的取值之间的时间间隔大于预设时间间隔时,确定该目标连接的状态为不可用状态,该预设时间间隔大于该服务器发送用户控制报文的时间间隔;
当前时间与该第四属性的取值之间的时间间隔小于该预设时间间隔时,休眠第一预设时长后,通过执行尝试读取该服务器发送的用户控制报文的步骤,确定该目标连接的状态,该第一预设时长对应的时间间隔小于该服务器发送用户控制报文的时间间隔。
在一种可能实现方式中,该检测模块402还用于当该目标连接的状态为可用状态时,休眠第一预设时长后,继续执行尝试读取该服务器发送的用户控制报文的步骤。
在一种可能实现方式中,该建立模块401用于当该目标连接的状态为不可用状态时,休眠第二预设时长后,关闭该TCP连接,删除该预建连接对象,设置该预建连接对象指针变量为空,重新执行预先建立目标连接的步骤。
在一种可能实现方式中,该获取模块403用于:
当接收到对任一直播频道的媒体流获取指令时,获取该直播频道的流地址和流名称;
当该预建连接对象指针变量不为空,且该第三属性的取值为该第二目标值时,基于该目标连接,向该服务器发送播放指令,接收该服务器发送的媒体流,该播放指令携带该流名称和流标识,该流标识从该创建流指令的响应结果中获取。
在一种可能实现方式中,该获取模块403还用于当该预建连接对象指针变量为空时,基于该流地址,从该服务器获取媒体流;或,
该获取模块403还用于当该预建连接对象指针变量不为空,且该第三属性的取值为该第一目标值时,基于该流地址,从该服务器获取媒体流。
本发明实施例中,通过在接收到媒体流获取指令之前预先目标连接,一旦检测到目标连接不可用,则重新建立目标连接,这样在接收到媒体流获取指令时,可以直接基于预先建立的目标连接,快速地从服务器获取对应的媒体流,减少了终端获取媒体流所需的时间。
需要说明的是:上述实施例提供的媒体流获取装置在获取媒体流时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的媒体流获取装置与媒体流获取方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图5是本发明实施例提供的一种终端500的结构示意图。该终端500可以是:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端500还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端500包括有:处理器501和存储器502。
处理器501可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器501可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器501也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器501可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器501还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器502可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器502还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器502中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器501所执行以实现本申请中方法实施例提供的媒体流获取方法。
在一些实施例中,终端500还可选包括有:外围设备接口503和至少一个外围设备。处理器501、存储器502和外围设备接口503之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口503相连。具体地,外围设备包括:射频电路504、显示屏505、摄像头506、音频电路507、定位组件508和电源509中的至少一种。
外围设备接口503可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器501和存储器502。在一些实施例中,处理器501、存储器502和外围设备接口503被集成在同一芯片或电路板上;在一些其他实施例中,处理器501、存储器502和外围设备接口503中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路504用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路504通过电磁信号与通信网络以及其他通信设备进行通信。射频电路504将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路504包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路504可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路504还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏505用于显示UI(UserInterface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏505是触摸显示屏时,显示屏505还具有采集在显示屏505的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器501进行处理。此时,显示屏505还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏505可以为一个,设置终端500的前面板;在另一些实施例中,显示屏505可以为至少两个,分别设置在终端500的不同表面或呈折叠设计;在再一些实施例中,显示屏505可以是柔性显示屏,设置在终端500的弯曲表面上或折叠面上。甚至,显示屏505还可以设置成非矩形的不规则图形,也即异形屏。显示屏505可以采用LCD(LiquidCrystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件506用于采集图像或视频。可选地,摄像头组件506包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件506还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路507可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器501进行处理,或者输入至射频电路504以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端500的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器501或射频电路504的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路507还可以包括耳机插孔。
定位组件508用于定位终端500的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件508可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。
电源509用于为终端500中的各个组件进行供电。电源509可以是交流电、直流电、一次性电池或可充电电池。当电源509包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端500还包括有一个或多个传感器510。该一个或多个传感器510包括但不限于:加速度传感器511、陀螺仪传感器512、压力传感器513、指纹传感器514、光学传感器515以及接近传感器516。
加速度传感器511可以检测以终端500建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器511可以用于检测重力加速度在三个坐标轴上的分量。处理器501可以根据加速度传感器511采集的重力加速度信号,控制触摸显示屏505以横向视图或纵向视图进行用户界面的显示。加速度传感器511还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器512可以检测终端500的机体方向及转动角度,陀螺仪传感器512可以与加速度传感器511协同采集用户对终端500的3D动作。处理器501根据陀螺仪传感器512采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器513可以设置在终端500的侧边框和/或触摸显示屏505的下层。当压力传感器513设置在终端500的侧边框时,可以检测用户对终端500的握持信号,由处理器501根据压力传感器513采集的握持信号进行左右手识别或快捷操作。当压力传感器513设置在触摸显示屏505的下层时,由处理器501根据用户对触摸显示屏505的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器514用于采集用户的指纹,由处理器501根据指纹传感器514采集到的指纹识别用户的身份,或者,由指纹传感器514根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器501授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器514可以被设置终端500的正面、背面或侧面。当终端500上设置有物理按键或厂商Logo时,指纹传感器514可以与物理按键或厂商Logo集成在一起。
光学传感器515用于采集环境光强度。在一个实施例中,处理器501可以根据光学传感器515采集的环境光强度,控制触摸显示屏505的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏505的显示亮度;当环境光强度较低时,调低触摸显示屏505的显示亮度。在另一个实施例中,处理器501还可以根据光学传感器515采集的环境光强度,动态调整摄像头组件506的拍摄参数。
接近传感器516,也称距离传感器,通常设置在终端500的前面板。接近传感器516用于采集用户与终端500的正面之间的距离。在一个实施例中,当接近传感器516检测到用户与终端500的正面之间的距离逐渐变小时,由处理器501控制触摸显示屏505从亮屏状态切换为息屏状态;当接近传感器516检测到用户与终端500的正面之间的距离逐渐变大时,由处理器501控制触摸显示屏505从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图5中示出的结构并不构成对终端500的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在示例性实施例中,还提供了一种存储有计算机程序的计算机可读存储介质,例如存储有计算机程序的存储器,上述计算机程序被处理器执行时实现上述实施例中的媒体流获取方法。例如,所述计算机可读存储介质可以是只读内存(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、只读光盘(Compact Disc Read-OnlyMemory,CD-ROM)、磁带、软盘和光数据存储设备等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种媒体流获取方法,其特征在于,所述方法包括:
当启动直播应用时,预先建立目标连接,所述目标连接用于从服务器获取媒体流,所述直播应用用于提供多个直播频道;
检测所述目标连接的状态;
当所述目标连接的状态为不可用状态时,重新建立所述目标连接;
当接收到对任一直播频道的媒体流获取指令时,基于所述目标连接,从所述服务器获取所述直播频道的媒体流;
在所述预先建立目标连接的步骤之前,所述方法还包括:初始化预建连接对象指针变量为空;
所述预先建立目标连接,包括:
当预建连接对象指针变量为空时,为所述预建连接对象指针变量分配预建连接对象,初始化所述预建连接对象的第一属性、第二属性和第三属性的取值为第一目标值,第四属性的取值为初始时间,所述第一属性用于描述是否已建立传输控制协议TCP连接,所述第二属性用于描述是否完成前置指令,所述第三属性用于描述目标连接是否可用,所述第四属性用于描述最后接收到用户控制报文的时间;
当成功与所述服务器建立TCP连接后,将所述第一属性的取值修改为第二目标值;
当成功与所述服务器进行多个前置指令的交互后,将所述第二属性和所述第三属性的取值修改为所述第二目标值,将所述第四属性的取值更新为当前时间,所述多个前置指令包括握手指令、连接指令和创建流指令;
其中,所述检测所述目标连接的状态,包括:
尝试读取所述服务器发送的用户控制报文;
当读取到所述服务器发送的用户控制报文时,将所述第四属性的取值更新为当前时间,确定所述目标连接的状态为可用状态;
当未读取到所述服务器发送的用户控制报文时,根据当前时间与所述第四属性的取值之间的时间间隔,确定所述目标连接的状态。
2.根据权利要求1所述的方法,其特征在于,所述根据当前时间与所述第四属性的取值之间的时间间隔,确定所述目标连接的状态,包括:
当前时间与所述第四属性的取值之间的时间间隔大于预设时间间隔时,确定所述目标连接的状态为不可用状态,所述预设时间间隔大于所述服务器发送用户控制报文的时间间隔;
当前时间与所述第四属性的取值之间的时间间隔小于所述预设时间间隔时,休眠第一预设时长后,通过执行尝试读取所述服务器发送的用户控制报文的步骤,确定所述目标连接的状态,所述第一预设时长对应的时间间隔小于所述服务器发送用户控制报文的时间间隔。
3.根据权利要求2所述的方法,其特征在于,所述检测所述目标连接的状态之后,所述方法还包括:
当所述目标连接的状态为可用状态时,休眠第一预设时长后,继续执行尝试读取所述服务器发送的用户控制报文的步骤。
4.根据权利要求1所述的方法,其特征在于,所述当所述目标连接的状态为不可用状态时,重新建立所述目标连接,包括:
当所述目标连接的状态为不可用状态时,休眠第二预设时长后,关闭所述TCP连接,删除所述预建连接对象,设置所述预建连接对象指针变量为空,重新执行预先建立目标连接的步骤。
5.根据权利要求1所述的方法,其特征在于,所述当接收到对任一直播频道的媒体流获取指令时,基于所述目标连接,从所述服务器获取所述直播频道的媒体流,包括:
当接收到对任一直播频道的媒体流获取指令时,获取所述直播频道的流地址和流名称;
当所述预建连接对象指针变量不为空,且所述第三属性的取值为所述第二目标值时,基于所述目标连接,向所述服务器发送播放指令,接收所述服务器发送的媒体流,所述播放指令携带所述流名称和流标识,所述流标识从所述创建流指令的响应结果中获取。
6.根据权利要求5所述的方法,其特征在于,所述获取所述直播频道的流地址和流名称之后,所述方法还包括:
当所述预建连接对象指针变量为空时,基于所述流地址,从所述服务器获取媒体流;或,
当所述预建连接对象指针变量不为空,且所述第三属性的取值为所述第一目标值时,基于所述流地址,从所述服务器获取媒体流。
7.一种媒体流获取装置,其特征在于,所述装置包括:
建立模块,用于当启动直播应用时,预先建立目标连接,所述目标连接用于从服务器获取媒体流,所述直播应用用于提供多个直播频道;
检测模块,用于检测所述目标连接的状态;
所述建立模块,还用于当所述目标连接的状态为不可用状态时,重新建立所述目标连接;
获取模块,用于当接收到对任一直播频道的媒体流获取指令时,基于所述目标连接,从所述服务器获取所述直播频道的媒体流;
所述装置还用于:初始化预建连接对象指针变量为空;
所述建立模块用于:
当预建连接对象指针变量为空时,为所述预建连接对象指针变量分配预建连接对象,初始化所述预建连接对象的第一属性、第二属性和第三属性的取值为第一目标值,第四属性的取值为初始时间,所述第一属性用于描述是否已建立传输控制协议TCP连接,所述第二属性用于描述是否完成前置指令,所述第三属性用于描述目标连接是否可用,所述第四属性用于描述最后接收到用户控制报文的时间;
当成功与所述服务器建立TCP连接后,将所述第一属性的取值修改为第二目标值;
当成功与所述服务器进行多个前置指令的交互后,将所述第二属性和所述第三属性的取值修改为所述第二目标值,将所述第四属性的取值更新为当前时间,所述多个前置指令包括握手指令、连接指令和创建流指令;
所述检测模块用于:
尝试读取所述服务器发送的用户控制报文;
当读取到所述服务器发送的用户控制报文时,将所述第四属性的取值更新为当前时间,确定所述目标连接的状态为可用状态;
当未读取到所述服务器发送的用户控制报文时,根据当前时间与所述第四属性的取值之间的时间间隔,确定所述目标连接的状态。
8.根据权利要求7所述的装置,其特征在于,所述检测模块用于:
当前时间与所述第四属性的取值之间的时间间隔大于预设时间间隔时,确定所述目标连接的状态为不可用状态,所述预设时间间隔大于所述服务器发送用户控制报文的时间间隔;
当前时间与所述第四属性的取值之间的时间间隔小于所述预设时间间隔时,休眠第一预设时长后,通过执行尝试读取所述服务器发送的用户控制报文的步骤,确定所述目标连接的状态,所述第一预设时长对应的时间间隔小于所述服务器发送用户控制报文的时间间隔。
9.根据权利要求8所述的装置,其特征在于,所述检测模块还用于当所述目标连接的状态为可用状态时,休眠第一预设时长后,继续执行尝试读取所述服务器发送的用户控制报文的步骤。
10.根据权利要求7所述的装置,其特征在于,所述建立模块用于当所述目标连接的状态为不可用状态时,休眠第二预设时长后,关闭所述TCP连接,删除所述预建连接对象,设置所述预建连接对象指针变量为空,重新执行预先建立目标连接的步骤。
11.根据权利要求7所述的装置,其特征在于,所述获取模块用于:
当接收到对任一直播频道的媒体流获取指令时,获取所述直播频道的流地址和流名称;
当所述预建连接对象指针变量不为空,且所述第三属性的取值为所述第二目标值时,基于所述目标连接,向所述服务器发送播放指令,接收所述服务器发送的媒体流,所述播放指令携带所述流名称和流标识,所述流标识从所述创建流指令的响应结果中获取。
12.根据权利要求11所述的装置,其特征在于,所述获取模块还用于当所述预建连接对象指针变量为空时,基于所述流地址,从所述服务器获取媒体流;或,
所述获取模块还用于当所述预建连接对象指针变量不为空,且所述第三属性的取值为所述第一目标值时,基于所述流地址,从所述服务器获取媒体流。
13.一种终端,其特征在于,包括处理器和存储器;所述存储器,用于存放计算机程序;所述处理器,用于执行所述存储器上所存放的计算机程序,实现权利要求1-6任一项所述的方法步骤。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-6任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811157395.0A CN109246123B (zh) | 2018-09-30 | 2018-09-30 | 媒体流获取方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811157395.0A CN109246123B (zh) | 2018-09-30 | 2018-09-30 | 媒体流获取方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109246123A CN109246123A (zh) | 2019-01-18 |
CN109246123B true CN109246123B (zh) | 2021-10-22 |
Family
ID=65054958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811157395.0A Active CN109246123B (zh) | 2018-09-30 | 2018-09-30 | 媒体流获取方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109246123B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111294355B (zh) * | 2020-02-10 | 2021-12-17 | 浙江大华技术股份有限公司 | 子连接创建方法、客户端设备和服务端设备 |
CN114006935B (zh) * | 2020-07-14 | 2023-11-21 | 成都鼎桥通信技术有限公司 | 专网终端入网方法、装置及设备 |
CN112367367B (zh) * | 2020-10-27 | 2024-06-07 | 西安万像电子科技有限公司 | 图像管理方法、设备及系统 |
CN112770124B (zh) * | 2020-12-22 | 2023-10-31 | Oppo广东移动通信有限公司 | 进入直播间的方法及装置、存储介质和电子设备 |
CN113038158B (zh) * | 2021-03-09 | 2022-11-22 | 北京高途云集教育科技有限公司 | 基于直播的对象展示方法、装置、电子设备以及介质 |
CN113824915B (zh) * | 2021-08-10 | 2024-04-05 | 深圳Tcl新技术有限公司 | 视频画面的获取方法、设备和计算机可读存储介质 |
CN114002488B (zh) * | 2021-09-29 | 2024-01-16 | 苏州浪潮智能科技有限公司 | 一种自动化监测及调节方法、装置及系统 |
CN114339296A (zh) * | 2022-03-02 | 2022-04-12 | 阿里巴巴(中国)有限公司 | 传输媒体流的方法、装置以及媒体系统 |
CN114844870B (zh) * | 2022-03-25 | 2024-03-26 | 阿里巴巴(中国)有限公司 | 一种媒体流获取方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101741743A (zh) * | 2009-12-11 | 2010-06-16 | 东南大学 | 基于网络地址排序的双向流组流方法 |
CN102270207A (zh) * | 2010-06-02 | 2011-12-07 | 中国科学院计算技术研究所 | 一种面向在线多媒体信息挖掘的数据缓存方法和系统 |
CN103152134A (zh) * | 2013-02-26 | 2013-06-12 | 汉柏科技有限公司 | 基于rtp协议的接收端重排语音包的方法和系统 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102523531A (zh) * | 2011-12-08 | 2012-06-27 | 深圳市同洲视讯传媒有限公司 | 视频点播系统中处理会话的接入实体及方法 |
CN103685241A (zh) * | 2013-11-26 | 2014-03-26 | 中国科学院计算技术研究所 | 一种维持tcp长连接的自适应心跳方法及其系统 |
CN104184944B (zh) * | 2014-08-15 | 2016-03-16 | 小米科技有限责任公司 | 获取多媒体数据流的方法及装置 |
US20160323352A1 (en) * | 2015-04-28 | 2016-11-03 | Fortinet, Inc. | Web proxy |
CN104935958B (zh) * | 2015-06-24 | 2018-03-30 | 青岛科技大学 | 一种实时视频传输装置 |
EP3341854B1 (en) * | 2015-09-14 | 2018-12-19 | ViaSat, Inc. | Machine-driven crowd-disambiguation of data resources |
CN107396431A (zh) * | 2017-06-19 | 2017-11-24 | 努比亚技术有限公司 | 连接保持方法、连接保持设备及计算机可读存储介质 |
CN107820100B (zh) * | 2017-10-30 | 2020-08-28 | 北京四达时代软件技术股份有限公司 | 互联网音视频播放方法及装置 |
-
2018
- 2018-09-30 CN CN201811157395.0A patent/CN109246123B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101741743A (zh) * | 2009-12-11 | 2010-06-16 | 东南大学 | 基于网络地址排序的双向流组流方法 |
CN102270207A (zh) * | 2010-06-02 | 2011-12-07 | 中国科学院计算技术研究所 | 一种面向在线多媒体信息挖掘的数据缓存方法和系统 |
CN103152134A (zh) * | 2013-02-26 | 2013-06-12 | 汉柏科技有限公司 | 基于rtp协议的接收端重排语音包的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109246123A (zh) | 2019-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109246123B (zh) | 媒体流获取方法及装置 | |
CN110971930B (zh) | 虚拟形象直播的方法、装置、终端及存储介质 | |
CN110674022B (zh) | 行为数据获取方法、装置及存储介质 | |
CN111147878B (zh) | 直播中的推流方法、装置及计算机存储介质 | |
CN110278464B (zh) | 显示榜单的方法和装置 | |
CN110740340B (zh) | 视频直播方法及装置、存储介质 | |
CN111327694B (zh) | 文件上传方法、装置、存储介质及电子设备 | |
CN108093307B (zh) | 获取播放文件的方法和系统 | |
CN110149332B (zh) | 直播方法、装置、设备及存储介质 | |
WO2019128592A1 (zh) | 进行直播的方法和装置 | |
CN108881286B (zh) | 多媒体播放控制的方法、终端、音箱设备和系统 | |
CN109194972B (zh) | 直播流获取方法、装置、计算机设备及存储介质 | |
CN111510482B (zh) | 失败网络请求的确定方法、装置及计算机存储介质 | |
CN110418152B (zh) | 进行直播提示的方法及装置 | |
CN110007981B (zh) | 启动应用程序的方法、装置、电子设备及介质 | |
CN113613028A (zh) | 直播数据处理方法、装置、终端、服务器及存储介质 | |
CN107896337B (zh) | 信息推广方法、装置及存储介质 | |
CN109783176B (zh) | 切换页面的方法和装置 | |
CN114785766A (zh) | 智能设备的控制方法、终端及服务器 | |
CN111064657B (zh) | 关注账户分组的方法、装置、系统 | |
CN109819308B (zh) | 虚拟资源获取方法、装置、终端、服务器及存储介质 | |
CN111986700A (zh) | 无接触式操作触发的方法、装置、设备及存储介质 | |
CN110809256B (zh) | 终端的系统加速方法、装置、存储介质及终端 | |
CN111327919A (zh) | 虚拟礼物反馈处理的方法、装置、系统、设备及存储介质 | |
CN112181915A (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 |