CN112511848B - 直播方法、服务端及计算机可读存储介质 - Google Patents

直播方法、服务端及计算机可读存储介质 Download PDF

Info

Publication number
CN112511848B
CN112511848B CN202011239505.5A CN202011239505A CN112511848B CN 112511848 B CN112511848 B CN 112511848B CN 202011239505 A CN202011239505 A CN 202011239505A CN 112511848 B CN112511848 B CN 112511848B
Authority
CN
China
Prior art keywords
state
audio
frame loss
video data
loss threshold
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
Application number
CN202011239505.5A
Other languages
English (en)
Other versions
CN112511848A (zh
Inventor
王文宾
庄晓川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wangsu Science and Technology Co Ltd
Original Assignee
Wangsu Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wangsu Science and Technology Co Ltd filed Critical Wangsu Science and Technology Co Ltd
Priority to CN202011239505.5A priority Critical patent/CN112511848B/zh
Publication of CN112511848A publication Critical patent/CN112511848A/zh
Application granted granted Critical
Publication of CN112511848B publication Critical patent/CN112511848B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/2187Live feed
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • H04N21/23106Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion involving caching operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • H04N21/2407Monitoring of transmitted content, e.g. distribution time, number of downloads
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/70Reducing energy consumption in communication networks in wireless communication networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本发明公开了一种直播方法、服务端及计算机可读存储介质。本发明中,在将直播内容的音视频数据发送给客户端的过程中,通过统计一段时间内写入内核缓冲区的音视频数据的写入量,并主动查询内核缓冲区中未发送到客户端的音视频数据的剩余量,进而根据统计的写入量和剩余量来确定未发送到客户端的音视频数据的未发送比例,最终根据确定的未发送比例和预设的丢帧阈值,实现对网络拥堵的提前感知,并根据感知到的网络状态对下一时间段要写入内核缓冲区的音视频数据进行处理,通过这种方式,在网络出现拥堵之前就及时调整音视频数据的传输策略,从而大大减少了客户端出现卡顿的次数、卡顿的持续时长,以及断开重连的次数。

Description

直播方法、服务端及计算机可读存储介质
技术领域
本发明实施例涉及流媒体技术领域,特别涉及一种直播方法、服务端及计算机可读存储介质。
背景技术
直播,是目前新兴的一种通过视频和音频的方式,在网络平台上进行的实时播放,例如游戏直播、购物直播等。观众可以通过电脑、手机、平板等电子设备来实时观看。
但是,在观看直播的过程中,由于用户使用的电子设备所处的网络状态环境比较复杂,当这些电子设备所处网络出现拥堵时,会造成客户端直播画面的卡顿、停止,甚至黑屏等现象。由于目前的直播方案,通常是在应用层无法往内核缓冲区写入音视频数据的时候,才感知到网络拥堵,此处才将卡顿时间内的音视频数据全部丢弃,进行延时追赶,以缩短客户端实际播放的内容与实时直播的内容之间存在的时间差,进而使得用户能够观看到实时的直播内容。但是,这种在应用层无法往内核缓冲区写入音视频数据的时候,即网络出现严重拥堵时,才对音视频数据进行处理的方式,会大大延长直播画面的卡顿、停止,甚至黑屏的时间,并且客户端长时间处于同一个播放界面不变,会导致客户端重新发起与服务端的连接请求,进而增加断开重连的次数。
发明内容
本发明实施例的目的在于提供一种直播方法、服务端及计算机可读存储介质,旨在解决上述技术问题。
为解决上述技术问题,本发明的实施例提供了一种直播方法,包括以下步骤:
在将直播内容的音视频数据发送给客户端的过程中,统计预设周期内,写入内核缓冲区的音视频数据的写入量,并基于预先创建的套接字的标识符,调用预封装的内核扩展接口,利用所述内核扩展接口,统计所述预设周期内,所述内核缓冲区中未发送到所述客户端的音视频数据的剩余量,所述标识符用于标识与各所述客户端之间的传输控制协议TCP连接;
根据所述写入量和所述剩余量,确定所述预设周期内的第一未发送比例;
根据所述第一未发送比例和预设的丢帧阈值,对下一所述预设周期内要写入所述内核缓冲区的音视频数据进行处理。
本发明的实施例还提供了一种服务端,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上文所述的直播方法。
本发明的实施例还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现如上文所述的直播方法。
本发明实施例提供的直播方法、服务端及计算机可读存储介质,通过预先封装能够访问内核缓冲区的内核扩展接口,在将直播内容的音视频数据发送给客户端的过程中,通过统计一个时间段内写入内核缓冲区的音视频数据的写入量,并基于能够标识与各客户端之间的TCP连接的套接字的标识符,调用预封装的内核扩展接口,利用内核扩展接口来统计相同时间段内核缓冲区中未发送到客户端的音视频数据的剩余量,从而解决了现有只能向内核缓冲区写数据,但无法获知各个时间段内核缓冲区的剩余量的问题。同时,基于统计的内核缓冲区的写入量和剩余量,来确定未发送到客户端的音视频数据的未发送比例,最终根据确定的未发送比例和预设的丢帧阈值,实现对网络拥堵的提前感知,并根据感知到的网络状态对下一时间段要写入内核缓冲区的音视频数据进行处理,通过这种方式,在网络出现拥堵之前就及时调整音视频数据的传输策略,从而大大减少了客户端出现卡顿的次数、卡顿的持续时长,以及断开重连的次数。
另外,所述基于预先创建的套接字的标识符,调用预封装的内核扩展接口,利用所述内核扩展接口,统计所述预设周期内,所述内核缓冲区中未发送到所述客户端的音视频数据的剩余量,包括:获取所述内核扩展接口对应的操作码;将所述操作码和所述标识符作为所述内核扩展接口的入参,使所述内核扩展接口根据所述操作码对所述内核缓冲区发起访问,并根据所述标识符,定位与所述客户端之间的TCP连接;根据定位的所述TCP连接,统计所述预设周期内,所述内核缓冲区中未发送到所述TCP连接对应的所述客户端的音视频数据的数量,得到所述剩余量。本发明中,通过利用用于调用内核扩展接口的操作码,调用内核内核扩展接口对内核缓冲区发起访问,进而实现对内核缓冲区的处理,通过将用于标识与各客户端之间的TCP连接的标识符来定位当前需要将直播内容的音视频数据发送给的客户端的TPC连接,进而根据定位的TCP连接来统计内核缓冲区中,未发送到所述TCP连接对应的所述客户端的音视频数据的数量,在实现对内核缓冲区访问的同时,也可以统计出不同客户端对应的剩余量。
另外,所述剩余量包括未从所述内核缓冲区中取出发送到网络中的音视频数据的数量,以及从所述内核缓冲区中取出发送到网络中,但未得到所述客户端确认的音视频数据的数量;所述基于预先创建的套接字的标识符,调用预封装的内核扩展接口,利用所述内核扩展接口,统计所述预设周期内,所述内核缓冲区中未发送到所述客户端的音视频数据的剩余量,包括:根据定位的TCP连接,统计预设周期内,所述内核缓冲区中未发送到网络的数量,以及从所述内核缓冲区中取出发送到网络中,但未得到所述TCP连接对应的所述客户端确认的数量,得到所述剩余量。
另外,所述根据所述第一未发送比例和预设的丢帧阈值,对下一所述预设周期内要写入所述内核缓冲区的音视频数据进行处理,包括:将所述第一未发送比例与所述丢帧阈值进行比较,并根据比较结果,调整状态机的状态;根据所述状态机的状态,对下一所述预设周期内要写入所述内核缓冲区的音视频数据进行处理。本发明中,通过根据实时计算出的第一未发送比例和预设的丢帧阈值的比较结果,对状态机的状态进行调整,并根据调整后的状态机所处的状态,提前对下一时间段要写入内核缓冲区中的音视频数据进行处理,从而可以提前感知网络拥堵,使得写入内核缓冲区的音视频数据时随着网络状况而改变的。
另外,所述丢帧阈值包括第一丢帧阈值和第二丢帧阈值,所述第一丢帧阈值大于所述第二丢帧阈值;所述将所述第一未发送比例与所述丢帧阈值进行比较,并根据比较结果,调整状态机的状态,包括:将所述第一未发送比例与所述第一丢帧阈值进行比较,若所述第一未发送比例大于或等于所述第一丢帧阈值,则将所述状态机的状态调整为丢帧状态;否则,将所述第一未发送比例与所述第二丢帧阈值进行比较,若所述第一未发送比例大于或等于所述第二丢帧阈值,则将所述状态机的状态调整为待丢帧状态。本发明中,通过设置大小不同的丢帧阈值,将第一未发送比例与第一丢帧阈值和第二丢帧阈值的比较,进而根据不同的比较结果将状态机设置为丢帧状态或待丢帧状态,使得后续要写入内核缓冲区中的音视频数据,能够根据状态机不同的状态进行不同的处理,从而能够适应不同的网络状况。
另外,所述根据所述状态机的状态,对下一所述预设周期内要写入所述内核缓冲区的音视频数据进行处理,包括:在所述状态机的状态为所述丢帧状态时,对下一所述预设周期内要写入所述内核缓冲区的音视频数据进行音视频分离,仅将分离出的音频数据写入所述内核缓冲区;在所述状态机的状态为所述待丢帧状态时,对下一所述预设周期内要写入所述内核缓冲区的音视频数据不作处理,将音视频数据中的音频数据和视频数据均写入所述内核缓冲区。本发明中,在状态机的状态为丢帧状态时,通过将下一时间段要写入内核缓冲区中的音视频数据进行音视频分离,仅将音频数据写入内核缓冲区,从而在网络状况欠佳的情况下,只发送内核缓冲区中写入的音频数据,进而大大减小了对带宽的占用,使得网络出现拥堵时,客户端能够以音频的方式播放直播内容,以保证用户能够获知实时的直播内容。
另外,在所述将所述状态机的状态调整为待丢帧状态之后,所述方法还包括:确定所述状态机处于所述丢帧状态时,各所述预设周期对应的第二未发送比例;根据各所述预设周期对应的所述第二未发送比例和所述第一丢帧阈值,对所述状态机进行状态切换。本发明中,在状态机处于待丢帧状态时,通过根据当前阶段的第二未发送比例来对状态机进行状态切换,从而可以在将直播内容的音视频数据发送给客户端的过程中,能够根据实际网络情况,不断调整音视频数据的传输策略,进而使得客户端能够更好地播放直播内容,提升用户体验。
另外,所述根据各所述预设周期对应的所述第二未发送比例和所述第一丢帧阈值,对所述状态机进行状态切换,包括:分别将各所述预设周期对应的所述第二未发送比例,与所述第一丢帧阈值进行比较;若存在大于或等于所述第一丢帧阈值的所述第二未发送比例,则将所述状态机从所述待丢帧状态切换为所述丢帧状态;否则,将所述状态机从所述待丢帧状态切换为正常状态。
另外,在所述将所述状态机从所述待丢帧状态切换为正常状态之前,所述方法还包括:分别将各所述预设周期对应的所述第二未发送比例,与所述第二丢帧阈值进行比较;若不存在大于或等于所述第二丢帧阈值的所述第二未发送比例,则执行所述将所述状态机从所述待丢帧状态切换为正常状态的步骤;否则,统计介于所述第一丢帧阈值和所述第二丢帧阈值之间的所述第二未发送比例的待丢帧状态持续时长,并在所述待丢帧状态持续时长大于或等于第一预设时长时,将所述状态机从所述待丢帧状态切换为所述丢帧状态。
另外,所述丢帧阈值还包括第三丢帧阈值,所述第三丢帧阈值小于所述第二丢帧阈值;在所述将所述状态机的状态设置为丢帧状态之后,所述方法还包括:确定所述状态机处于所述丢帧状态时,各所述预设周期对应的第三未发送比例;根据各所述预设周期对应的所述第三未发送比例和所述第三丢帧阈值,对所述状态机进行状态切换。本发明中,在状态机处于丢帧状态时,通过根据当前阶段的第三未发送比例来对状态机进行状态调整,从而可以在将直播内容的音视频数据发送给客户端的过程中,能够根据实际网络情况,不断调整音视频数据的传输策略,进而使得客户端能够更好的播放直播内容,提升用户体验。
另外,所述根据各所述预设周期对应的所述第三未发送比例和所述第三丢帧阈值,对所述状态机进行状态切换,包括:分别将各所述预设周期对应的所述第三未发送比例,与所述第三丢帧阈值进行比较;若存在小于所述第三丢帧阈值的所述第三未发送比例,则将所述状态机从所述丢帧状态切换为待恢复状态。
另外,在所述将所述状态机从所述丢帧状态切换为待恢复状态之后,所述方法还包括:确定所述状态机处于所述待恢复状态时,各所述预设周期对应的第四未发送比例;根据各所述预设周期对应的所述第四未发送比例和所述第三丢帧阈值,对所述状态机进行状态切换。本发明中,在状态机处于待恢复状态时,通过根据当前阶段的第四未发送比例来对状态机进行状态调整,从而可以在将直播内容的音视频数据发送给客户端的过程中,能够根据实际网络情况,不断调整音视频数据的传输策略,进而使得客户端能够更好的播放直播内容,提升用户体验。
另外,所述根据各所述预设周期对应的所述第四未发送比例和所述第三丢帧阈值,对所述状态机进行状态切换,包括:统计小于所述第三丢帧阈值的所述第四未发送比例的待恢复状态持续时长;判断所述待恢复状态持续时长是否大于或等于第二预设时长;若大于或等于所述第二预设时长,则将所述状态机从所述待恢复状态切换为正常状态。
另外,在所述根据所述第一未发送比例和预设的丢帧阈值,对下一所述预设周期内要写入所述内核缓冲区的音视频数据进行处理之前,所述方法还包括:判断所述第一未发送比例是否大于预设的断连阈值,所述断连阈值大于所述丢帧阈值;若大于,则基于所述标识符,调用所述内核扩展接口,并利用所述内核扩展接口停止向所述客户端发送音视频数据,并向所述客户端发送传输控制协议TCP终止包,断开与所述客户端的连接。本发明通过设置断连阈值,即断开与客户端连接的阈值,在根据所述第一未发送比例和预设的丢帧阈值,对下一所述预设周期内要写入所述内核缓冲区的音视频数据进行处理之前通过判断第一未发送比例是否大于断连阈值,从而在大于断连阈值,即网络严重拥堵期间,直接停止向客户端发送音视频数据,并向客户端发送TCP终止包,断开与客户端的连接,以触发客户端向服务端发起重连请求,从而缩短卡顿时间。
另外,在所述基于所述标识符,调用所述内核扩展接口,并利用所述内核扩展接口停止向所述客户端发送音视频数据之后,所述方法还包括:清除所述内核缓冲区中未发送到所述客户端的音视频数据。本发明中,在停止向客户端发送音视频数据之后,通过清除内核缓冲区中未发送到客户端的音视频数据,从而可以快速断开与客户端的连接,使得客户端能够立即重连,进而将客户端重新发起的请求调整到网络质量较优的线路,从而减少卡顿问题。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本发明第一实施例提供的直播方法的具体流程图;
图2是本发明第一实施例提供的直播方法中状态机不同状态的切换示意图;
图3是本发明第二实施例提供的直播方法的具体流程图;
图4是本发明第三实施例提供的直播装置的结结构示意图;
图5是本发明第四实施例提供的服务端的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施例进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施例中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施例的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本发明的实际应用方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
本发明第一实施例涉及一种直播方法,应用于服务端,即提供直播内容的设备。
下面对本实施例的直播方法的实现细节进行说明,以下内容仅为方便理解而提供的实现细节,并非实施本方案的必须。
本实施例的具体流程如图1所示,具体包括以下步骤:
步骤101,在将直播内容的音视频数据发送给客户端的过程中,统计预设周期内,写入内核缓冲区的音视频数据的写入量,并基于预先创建的套接字的标识符,调用预封装的内核扩展接口,利用所述内核扩展接口,统计所述预设周期内,所述内核缓冲区中未发送到所述客户端的音视频数据的剩余量。
具体的说,为了能够及时感知网络的波动,在将直播内容的音视频数据发送给客户端的过程中,可以按照预设时间周期,比如以秒为单位,每一秒统计一次写入内核缓冲区的音视频数据的写入量,以及所述内核缓冲区中未发送到所述客户端的音视频数据的剩余量。
此外,需要说明的是,本实施例中所说的标识符,具体是指用于标识服务端与各客户端之间的TCP连接的标识信息。在实际应用中,标识符具体是服务端在与需要通信的客户端建立TCP连接后,创建的套接字Socket中的fd标识。
此外,为了能够基于内核扩展接口,实现对内核缓冲区中访问,需要基于访问所述内核缓冲区的操作码。故而在统计所述内核缓冲区中未发送到所述客户端的音视频数据的剩余量时,需要获取所述内核扩展接口对应的操作码。
具体的说,所述操作码可以是预先预定好的,也可以是基于某种映射关系表,通过查表获取的,本实施例对此不作限制。
相应地,所述基于预先创建的套接字的标识符,调用预封装的内核扩展接口,利用所述内核扩展接口,统计所述预设周期内,所述内核缓冲区中未发送到所述客户端的音视频数据的剩余量的操作,在实际应用中,具体是通过将所述操作码和所述标识符作为所述内核扩展接口的入参,使所述内核扩展接口根据所述操作码对所述内核缓冲区发起访问,并根据所述标识符,定位与所述客户端之间的TCP连接,进而根据定位的所述TCP连接,统计所述预设周期内,所述内核缓冲区中未发送到所述TCP连接对应的所述客户端的音视频数据的数量,得到所述剩余量。
此外,在本实施例中,所述剩余量具体包括未从所述内核缓冲区中取出发送到网络中的音视频数据的数量(所述内核缓冲区中剩余的音视频数据的数量),以及从所述内核缓冲区中取出发送到网络中,但未得到所述客户端确认的音视频数据的数量。
相应地,所述基于预先创建的套接字的标识符,调用预封装的内核扩展接口,利用所述内核扩展接口,统计所述预设周期内,所述内核缓冲区中未发送到所述客户端的音视频数据的剩余量的操作,在实际应用中,具体是根据定位的TCP连接,统计预设周期内,所述内核缓冲区中未发送到网络的数量,以及从所述内核缓冲区中取出发送到网络中,但未得到所述TCP连接对应的所述客户端确认的数量,得到所述剩余量。
步骤102,根据所述写入量和所述剩余量,确定所述预设周期内的第一未发送比例。
具体的说,由于在实际应用中,服务端在将音视频数据发送给客户端时,通常会将需要发送给客户端的音视频数据缓冲到内核缓冲区,然后再从内核缓冲区取音视频数据发送给客户端。因此,在根据所述写入量和所述剩余量确定第一未发送比例时,具体是将所述写入量作为分母,将所述剩余量作为分子,进而得到未发送至客户端的音视频数据的第一未发送比例。
此外,需要说明的是,在实际应用中,上述操作,具体是在服务端的应用层完成。即应用层每一秒对比一下当前时刻的写入量和剩余量,进而得到当前时刻未发送的音视频数据,占实际需要发送出去的音视频数据的占比,即第一未发送比例。
步骤103,根据所述第一未发送比例和预设的丢帧阈值,对下一所述预设周期内要写入所述内核缓冲区的音视频数据进行处理。
具体的说,在本实施例中,对下一所述预设周期内要写入所述内核缓冲区的音视频数据进行的处理,具体是根据状态机的状态确定的。
为了便于理解,步骤103中所说的操作,以下将其划分为如下两个子步骤:
子步骤103-1:将所述第一未发送比例与所述丢帧阈值进行比较,并根据比较结果,调整状态机的状态。
为了便于说明,本实施例预设了四种针对状态机的状态,分别为正常状态、待丢帧状态、丢帧状态和待恢复状态。
关于所述正常状态,表示当前网络状况良好,服务端可以将直播内的音视频数据发送给客户端,状态机处于正常状态时,对下一预设周期内要写入内核缓冲区的音视频数据不作处理,即音频数据和对应的视频数据均会写入到内核缓冲区;所述待丢帧状态,表示当前网络可能存在波动,这种状态下,服务端可以不对直播内容的音视频数据进行处理,继续将下一预设周期的音视频数据全部写入内核缓冲区;所述丢帧状态,表示当前网络出现波动,即网络状态可能出现了拥堵,这种状态下,需要将下一周期要写入内核缓冲区的音视频数据进行音视频分离,然后仅将分离出的音频数据写入到内核缓冲区,丢弃视频数据;所述待恢复状态,表示当前网络即将恢复正常,这种状态下,服务端可以继续将要写入内核缓冲区的音视频数据进行音视频分离,然后仅将分离出的音频数据写入到内核缓冲区,丢弃视频数据与,以保证客户端不论是通过音频数据,还是音视频数据,均可获知实时直播的内容。
通过上述描述可知,在实际应用中,根据比较结果对状态机进行的状态调整,主要包括上述四种状态的切换。
相应地,为了实现对所述状态机的状态切换,所述丢帧阈值包括第一丢帧阈值X、第二丢帧阈值Y和第三丢帧阈值Z,并且这三个丢帧阈值的取值满足:X>Y>Z。
关于上述3个阈值的具体取值,本领域技术人员可以根据实际应用场景设置,本实施例对此不做限制。
为了便于理解,以下结合图2,以状态机的初始状态为正常状态为例,进行说明:
(1)在所述状态机处于正常状态的情况下,先基于步骤101和步骤102的方式确定第一未发送比例S1,然后将S1与X进行比较。
(2)在S1≥X时,将所述状态机的状态设置为丢帧状态,即将所述状态机从正常状态切换为丢帧状态。
(3)在S1<X时,S1与Y进行比较。
(4)在Y≤S1<时,将所述状态机的状态设置为待丢帧状态,即将所述状态机从正常状态切换为待丢帧状态。
由此,实现了根据S1和X、Y,将所述状态机从正常状态切换为丢帧状态或待丢帧状态的处理。
进一步地,在所述状态机的状态切换为待丢帧状态之后,需要确定所述状态机处于所述丢帧状态时,在接下来的各预设周期,即接下来的每一秒,或者说每一时刻对应的未发送比例,为了便于区分,本实施例将此阶段的未发送比例称为第二未发送比例S2。
关于S2的确定方式,依旧是采用步骤101和步骤102中所示的方式确定,此处不再赘述。
相应地,在确定各时刻对应的S2后,需要根据各时刻对应的S2和X,对所述状态机进行状态切换,具体的切换分为将所述状态机从待丢帧状态切换为丢帧状态,或者切换回正常状态。
关于将所述状态机从待丢帧状态切换为丢帧状态或切换回正常状态的操作,具体如下:
分别将S2,与X进行比较。
相应地,若通过比较,发现存在大于或等于X的S2时,则将所述状态机从所述待丢帧状态切换为所述丢帧状态;否则,将所述状态机从所述待丢帧状态切换为正常状态。
进一步地,为了尽可能保证对所述状态机的状态切换的合理性,避免将应该切换为丢帧状态的情况,切换为正常状态,从而影响客户端直播内容的播放效果。在将所述状态机从所述待丢帧状态切换为正常状态之前,可以先将各时刻对应的S2与Y进行比较。
相应地,若不存在大于或等于Y的S2,则统计S2<Y的持续时长,并在持续时长大于或等于某一预设时长,如图2中的T3时,将所述状态机从所述待丢帧状态切换为正常状态。
反之,即存在介于Y和X之间的S2,则统计介于Y和X之间的S2的待丢帧状态持续时长M,并在M≥某一预设时长,比如第一预设时长T1时,将所述状态机从所述待丢帧状态切换为所述丢帧状态。
此外,值得一提的是,在将所述状态机从待丢帧状态切换为丢帧状态或切换回正常状态的过程中,如果在统计介于Y和X之间的S2的待丢帧状态持续时长M时,出现了小于Y的情况,当前已经统计的待丢帧状态持续时长M不清零,另行启动一个计算器记录S2小于Y的待丢帧状态持续时长L。
相应地,若L先满足大于或等于T3的条件,则将所述状态机从待丢帧状态切换回正常状态,并将待丢帧持续时长L和待丢帧持续时长M均清零。
进一步地,若在记录S2小于Y的待丢帧状态持续时长L的过程中,又出现了大于Y,并介于Y和X之间的S2,则停止待丢帧状态持续时长L的记录,继续累积待丢帧状态持续时长M,以此类推,确定是将所述状态机从待丢帧状态切换为丢帧状态,还是正常状态。
由此,实现了将所述状态机从待丢帧状态切换为丢帧状态或正常状态的操作。
进一步地,在所述状态机的状态切换为丢帧状态之后,需要确定所述状态机处于所述丢帧状态时,各时刻对应的未发送比例,为了便于区分,本实施例将此阶段的未发送比例称为第三未发送比例S3。
关于S3的确定方式,依旧是采用步骤101和步骤102中所示的方式确定,此处不再赘述。
相应地,在确定各时刻对应的S3后,需要根据各时刻对应的S3,对所述状态机进行状态切换,具体的切换分为将所述状态机从丢帧状态切换为待恢复状态。
关于将所述状态机从丢帧状态切换为待恢复状态的操作,具体如下:
分别将S3,与Z进行比较。
相应地,若通过比较,发现存在小于Z的S3时,则将所述状态机从所述丢帧状态切换为待恢复状态。
由此,实现了将所述状态机从丢帧状态切换为待恢复状态的操作。
进一步地,在所述状态机的状态切换为待恢复状态之后,需要确定所述状态机处于所述待恢复状态时,各时刻对应的未发送比例,为了便于区分,本实施例将此阶段的未发送比例称为第四未发送比例S4。
关于S4的确定方式,依旧是采用步骤101和步骤102中所示的方式确定,此处不再赘述。
相应地,在确定各时刻对应的S4后,需要根据各时刻对应的S4,对所述状态机进行状态切换,具体的切换分为将所述状态机从待恢复状态切换为正常状态。
关于将所述状态机从待恢复状态切换为正常状态的操作,具体如下:
统计小于Z的S4的待恢复状态持续时长N,并判断N是否大于或等于第二预设时长T2。
相应地,若存在N≥T2,则将所述状态机从所述待恢复状态切换为正常状态。
此外,值得一提的是,在将所述状态机从待恢复状态切换为正常状态的过程中,如果在统计小于Z的S4的待恢复状态持续时长N时,出现了S4大于Z的情况,当前已经统计的待恢复状态持续时长N不清零,另行启动一个计算器记录S4大于Z的待恢复状态持续时长,如果S4大于Z的待恢复状态持续时长大于某一时长,则将待恢复持续时长N清零,如果S4大于Z后,紧接着又小于Z,则继续累计待恢复状态持续时长N,并在待恢复状态持续时长N大于第二预设时长T2时,将所述状态机从待恢复状态切换为正常状态。
相应地,在实际应用中,若S4大于Z的待恢复状态持续时长大于预设的待恢复状态的临界值时,可以将所述状态机从待恢复状态切换为丢帧状态。
由此,完成了将所述状态机从待恢复状态切换为正常状态或丢帧状态的操作。
应当理解的是,上述示例仅是为了更好地理解本实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
关于本实施例中提到的各种预设阈值、预设时长的取值,本领域技术人员可以根据需要进行设置,从而基于本实施例提供的直播方法的实现逻辑,实现对状态机各种状态的切换,进而根据所述状态机当前的状态确定合适的传输策略,以适应不同的网络状况。
子步骤103-2:根据所述状态机的状态,对下一所述预设周期内要写入所述内核缓冲区的音视频数据进行处理。
具体的说,在所述状态机的状态为所述丢帧状态或者待恢复状态时,对下一所述预设周期内要写入所述内核缓冲区的音视频数据进行音视频分离,仅将分离出的音频数据写入所述内核缓冲区,从而在网络状况欠佳的情况下,只发送内核缓冲区中写入的音频数据,进而大大减小了对带宽的占用,使得网络出现拥堵时,客户端能够以音频的方式播放直播内容,以保证用户能够获知实时的直播内容。
进一步地,在所述状态机的状态为所述待丢帧状态或正常状态时,对下一所述预设周期内要写入所述内核缓冲区的音视频数据不作处理,即音视频数据不进行分离,将音频数据和视频数据均写入内核缓冲区。
通过上述描述不难发现,本实施例中提供的直播方法,通过预先封装能够访问内核缓冲区的内核扩展接口,在将直播内容的音视频数据发送给客户端的过程中,通过统计一个时间段内写入内核缓冲区的音视频数据的写入了,并基于能够标识与各客户端之间的TCP连接的套接字的标识符,调用预封装的内核扩展接口,利用内核扩展接口来统计相同时间段内核缓冲区中未发送到客户端的音视频数据的剩余量,从而解决了现有只能向内核缓冲区写数据,但无法获知各个时间段内核缓冲区的剩余量的问题。同时,基于统计的内核缓冲区的写入量和剩余量,来确定未发送到客户端的音视频数据的未发送比例,最终根据确定的未发送比例和预设的丢帧阈值,实现对网络拥堵的提前感知,并根据感知到的网络状态对下一时间段要写入内核缓冲区的音视频数据进行处理,通过这种方式,在网络出现拥堵之前就及时调整音视频数据的传输策略,从而大大减少了客户端出现卡顿的次数、卡顿的持续时长,以及断开重连的次数。
本发明的第二实施例涉及一种直播方法。第二实施例在第一实施例的基础上做了进一步改进,主要改进之处为:根据第一未发送比例和预设的丢帧阈值,对下一所述预设周期内要写入所述内核缓冲区的音视频数据进行处理之前,先根据第一未发送比例和预设的断连阈值(网络严重拥堵的临界值)来判断当前网络是否严重拥堵,然后根据判断结果确定是根据第一未发送比例和预设丢帧阈值对对下一所述预设周期内要写入所述内核缓冲区的音视频数据进行处理,还是直接断开与客户端的连接。
如图3所示,第二实施例涉及的直播方法,包括如下步骤:
步骤301,在将直播内容的音视频数据发送给客户端的过程中,统计预设周期内,写入内核缓冲区的音视频数据的写入量,并基于预先创建的套接字的标识符,调用预封装的内核扩展接口,利用所述内核扩展接口,统计所述预设周期内,所述内核缓冲区中未发送到所述客户端的音视频数据的剩余量。
步骤302,根据所述写入量和所述剩余量,确定所述预设周期内的第一未发送比例。
不难发现,本实施例中的步骤301和步骤302与第一实施例中的步骤101和步骤102大致相同,此处不再赘述。
步骤303,判断所述第一未发送比例是否大于预设的断连阈值。
具体的说,若通过判断,确定所述第一未发送比例大于预设的断连阈值,则执行步骤304;否则,执行步骤305。
此外,值得一提的是,在本实施例中所述断连阈值的取值大于所述丢帧阈值,即大于第一丢帧阈值、第二丢帧阈值和第三丢帧阈值。
为了便于实现,在实际应用中,可以预先设置本实施例提供的直播方法中需要涉及到的4个阈值,即断连阈值K、第一丢帧阈值X、第二丢帧阈值Y和第三丢帧阈值Z,并规定K>X>Y>Z。
关于上述4个阈值的具体取值,本领域技术人员可以根据实际应用场景设置,本实施例对此不做限制。
步骤304,基于所述标识符,调用所述内核扩展接口,并利用所述内核扩展接口停止向所述客户端发送音视频数据,并向所述客户端发送传输控制协议TCP终止包,断开与所述客户端的连接。
具体的说,向客户端发送的TCP终止包,即通常所说的fin包,用于告知客户端本次通信中断。
进一步地,在实际应用中,在向客户端发送fin包,断开与客户端的连接之后,可以在客户端的用户界面弹出重连界面,以便用户触发重连请求,服务端根据接收到的重连请求重新与客户端建立通信连接。
进一步地,为了提升用户体现,减少用户操作,也可以设置客户端在接收到fin包后,自动触发重连请求,进而使服务端根据接收到的重连请求重新与客户端建立通信连接。
进一步地,在实际应用中,在停止向客户端发送音视频数据后,还需要清除内核缓冲区中未发送到客户端的音视频数据,从而可以快速断开与客户端的连接,使得客户端能够立即重连,进而将客户端重新发起的请求调整到网络质量较优的线路,从而减少卡顿问题。
通过上述方式,利用预先封装的能够访问内核缓冲区的内核扩展接口,在网络出现严重拥堵,服务端的应用层需要主动断开与客户端的TCP连接时,直接将能够定位该TPC连接的标识符传入内核扩展接口,由内核扩展接口主动发送fin包断开与客户端的TCP连接,同时停止向所述客户端发送音视频数据,并清除掉发送队列中的音视频数据,从而实现了及时中断与客户端的通信,使得客户端能够立即向服务段发起重连请求,使得服务端能够将与客户端的TCP连接调整的当前网络环境较优的线路,从而大大缓解了卡顿现象。
步骤305,根据所述第一未发送比例和预设的丢帧阈值,对下一所述预设周期内要写入所述内核缓冲区的音视频数据进行处理。
不难发现,本实施例中的步骤305与第一实施例中的步骤103大致相同,此处不再赘述。
由此,本实施例中提供的直播方法,通过设置断连阈值,即断开与客户端连接的阈值,在根据所述第一未发送比例和预设的丢帧阈值,对下一所述预设周期内要写入所述内核缓冲区的音视频数据进行处理之前通过判断第一未发送比例是否大于断连阈值,从而在大于断连阈值,即网络严重拥堵期间,直接停止向客户端发送音视频数据,并向客户端发送终止包,断开与客户端的连接,以触发客户端向服务端发起重连请求,从而缩短卡顿时间。
应当理解的是,上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本发明第三实施例涉及一种直播装置,如图4所示,包括:统计模块401、确定模块402和处理模块403。
其中,统计模块401,用于在将直播内容的音视频数据发送给客户端的过程中,统计预设周期内,写入内核缓冲区的音视频数据的写入量,并基于预先创建的套接字的标识符,调用预封装的内核扩展接口,利用所述内核扩展接口,统计所述预设周期内,所述内核缓冲区中未发送到所述客户端的音视频数据的剩余量,所述标识符用于标识与各所述客户端之间的传输控制协议TCP连接;确定模块402,用于根据所述写入量和所述剩余量,确定所述预设周期内的第一未发送比例;处理模块403,用于根据所述第一未发送比例和预设的丢帧阈值,对下一所述预设周期内要写入所述内核缓冲区的音视频数据进行处理。
此外,在另一个例子中,统计模块401,具体用于采用如下方式统计所述剩余量:
获取所述内核扩展接口对应的操作码;
将所述操作码和所述标识符作为所述内核扩展接口的入参,使所述内核扩展接口根据所述操作码对所述内核缓冲区发起访问,并根据所述标识符,定位与所述客户端之间的TCP连接;
根据定位的所述TCP连接,统计所述预设周期内,所述内核缓冲区中未发送到所述TCP连接对应的所述客户端的音视频数据的数量,得到所述剩余量。
此外,在另一个例子中,所述剩余量包括未从所述内核缓冲区中取出发送到网络中的音视频数据的数量,以及从所述内核缓冲区中取出发送到网络中,但未得到所述客户端确认的音视频数据的数量。
相应地,统计模块401,具体用于:
根据定位的TCP连接,统计预设周期内,所述内核缓冲区中未发送到网络的数量,以及从所述内核缓冲区中取出发送到网络中,但未得到所述TCP连接对应的所述客户端确认的数量,得到所述剩余量。
此外,在另一个例子中,所述处理模块403具体用于将所述第一未发送比例与所述丢帧阈值进行比较,并根据比较结果,调整状态机的状态;根据所述状态机的状态,对下一所述预设周期内要写入所述内核缓冲区的音视频数据进行处理。
此外,在另一个例子中,所述丢帧阈值包括第一丢帧阈值和第二丢帧阈值,所述第一丢帧阈值大于所述第二丢帧阈值。
相应地,处理模块403在将所述第一未发送比例与所述丢帧阈值进行比较,并根据比较结果,调整状态机的状态时,具体为:
将所述第一未发送比例与所述第一丢帧阈值进行比较,若所述第一未发送比例大于或等于所述第一丢帧阈值,则将所述状态机的状态调整为丢帧状态;
否则,将所述第一未发送比例与所述第二丢帧阈值进行比较,若所述第一未发送比例大于或等于所述第二丢帧阈值,则将所述状态机的状态调整为待丢帧状态。
此外,在另一个例子中,处理模块403执行的根据所述状态机的状态,对下一所述预设周期内要写入所述内核缓冲区的音视频数据进行处理操作,具体为:
在所述状态机的状态为所述丢帧状态时,对下一所述预设周期内要写入所述内核缓冲区的音视频数据进行音视频分离,仅将分离出的音频数据写入所述内核缓冲区;
在所述状态机的状态为所述待丢帧状态时,对下一所述预设周期内要写入所述内核缓冲区的音视频数据不作处理,将音视频数据中的音频数据和视频数据均写入所述内核缓冲区。
此外,在另一个例子中,直播装置还包括状态切换模块。
具体而言,状态切换模块,用于在处理模块403将所述状态机的状态设置为待丢帧状态之后,执行如下操作:
确定所述状态机处于所述丢帧状态时,各所述预设周期对应的第二未发送比例;
根据各所述预设周期对应的所述第二未发送比例和所述第一丢帧阈值,对所述状态机进行状态切换。
此外,在另一个例子中,状态切换模块在根据各所述预设周期对应的所述第二未发送比例和所述第一丢帧阈值,对所述状态机进行状态切换时,具体为:
分别将各所述预设周期对应的所述第二未发送比例,与所述第一丢帧阈值进行比较;
若存在大于或等于所述第一丢帧阈值的所述第二未发送比例,则将所述状态机从所述待丢帧状态切换为所述丢帧状态;
否则,将所述状态机从所述待丢帧状态切换为正常状态。
此外,在另一个例子中,状态切换模块在将所述状态机从所述待丢帧状态切换为正常状态之前,还会执行如下操作:
分别将各所述预设周期对应的所述第二未发送比例,与所述第二丢帧阈值进行比较。
相应地,若不存在大于或等于所述第二丢帧阈值的所述第二未发送比例,则执行所述将所述状态机从所述待丢帧状态切换为正常状态的步骤;否则,统计介于所述第一丢帧阈值和所述第二丢帧阈值之间的所述第二未发送比例的待丢帧状态持续时长,并在所述待丢帧状态持续时长大于或等于第一预设时长时,将所述状态机从所述待丢帧状态切换为所述丢帧状态。
此外,在另一个例子中,所述丢帧阈值还包括第三丢帧阈值,所述第三丢帧阈值小于所述第二丢帧阈值。
状态切换模块,还用于在处理模块403将所述状态机的状态设置为丢帧状态之后,执行如下操作:
确定所述状态机处于所述丢帧状态时,各所述预设周期对应的第三未发送比例;
根据各所述预设周期对应的所述第三未发送比例和所述第三丢帧阈值,对所述状态机进行状态切换。
此外,在另一个例子中,状态切换模块在根据各所述预设周期对应的所述第三未发送比例和所述第三丢帧阈值,对所述状态机进行状态切换时,具体为:
分别将各所述预设周期对应的所述第三未发送比例,与所述第三丢帧阈值进行比较;
相应地,若存在小于所述第三丢帧阈值的所述第三未发送比例,则将所述状态机从所述丢帧状态切换为待恢复状态。
此外,在另一个例子中,状态切换模块,还用于在将所述状态机从所述丢帧状态切换为待恢复状态之后,执行如下操作:
确定所述状态机处于所述待恢复状态时,各所述预设周期对应的第四未发送比例;
根据各所述预设周期对应的所述第四未发送比例和所述第三丢帧阈值,对所述状态机进行状态切换。
此外,在另一个例子中,状态切换模块在根据各所述预设周期对应的所述第四未发送比例和所述第三丢帧阈值,对所述状态机进行状态切换时,具体为:
统计小于所述第三丢帧阈值的所述第四未发送比例的待恢复状态持续时长;
判断所述待恢复状态持续时长是否大于或等于第二预设时长;
若大于或等于所述第二预设时长,则将所述状态机从所述待恢复状态切换为正常状态。
此外,在另一个例子中,直播装置还包括终止模块。
具体而言,终止模块,用于在处理模块403执行所述根据所述第一未发送比例和预设的丢帧阈值,对下一所述预设周期内要写入所述内核缓冲区的音视频数据进行处理操作之前,执行如下操作:
判断所述第一未发送比例是否大于预设的断连阈值,所述断连阈值大于所述丢帧阈值;
若大于,则基于所述标识符,调用所述内核扩展接口,并利用所述内核扩展接口停止向所述客户端发送音视频数据,并向所述客户端发送传输控制协议TCP终止包,断开与所述客户端的连接。
此外,在另一个例子中,终止模块在基于所述标识符,调用所述内核扩展接口,并利用所述内核扩展接口停止向所述客户端发送音视频数据之后,还用于清除所述内核缓冲区中未发送到所述客户端的音视频数据。
不难发现,本实施例为与第一或第二实施例相对应的装置实施例,本实施例可与第一或第二实施例互相配合实施。第一或第二实施例中提到的相关技术细节在本实施例中依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在第一或第二实施例中。
值得一提的是,本实施例中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施例中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施例中不存在其它的单元。
本发明第四实施例涉及一种服务端,如图5所示,包括至少一个处理器501;以及,与所述至少一个处理器501通信连接的存储器502;其中,所述存储器502存储有可被所述至少一个处理器501执行的指令,所述指令被所述至少一个处理器501执行,以使所述至少一个处理器501能够执行上述第一或第二实施例所描述的直播方法。
其中,存储器502和处理器501采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器501和存储器502的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器501处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传输给处理器501。
处理器501负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器502可以被用于存储处理器501在执行操作时所使用的数据。
本发明第五实施例涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述直播方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施例是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

Claims (17)

1.一种直播方法,其特征在于,包括:
在将直播内容的音视频数据发送给客户端的过程中,统计预设周期内,写入内核缓冲区的音视频数据的写入量,并基于预先创建的套接字的标识符,调用预封装的内核扩展接口,利用所述内核扩展接口,统计所述预设周期内,所述内核缓冲区中未发送到所述客户端的音视频数据的剩余量,所述标识符用于标识与各所述客户端之间的传输控制协议TCP连接;
根据所述写入量和所述剩余量,确定所述预设周期内的第一未发送比例;
根据所述第一未发送比例和预设的丢帧阈值,对下一所述预设周期内要写入所述内核缓冲区的音视频数据进行处理,包括:对下一所述预设周期内要写入所述内核缓冲区的音视频数据进行音视频分离,仅将分离出的音频数据写入所述内核缓冲区,或对下一所述预设周期内要写入所述内核缓冲区的音视频数据不作处理,将音视频数据中的音频数据和视频数据均写入所述内核缓冲区。
2.根据权利要求1所述的直播方法,其特征在于,所述基于预先创建的套接字的标识符,调用预封装的内核扩展接口,利用所述内核扩展接口,统计所述预设周期内,所述内核缓冲区中未发送到所述客户端的音视频数据的剩余量,包括:
获取所述内核扩展接口对应的操作码;
将所述操作码和所述标识符作为所述内核扩展接口的入参,使所述内核扩展接口根据所述操作码对所述内核缓冲区发起访问,并根据所述标识符,定位与所述客户端之间的TCP连接;
根据定位的所述TCP连接,统计所述预设周期内,所述内核缓冲区中未发送到所述TCP连接对应的所述客户端的音视频数据的数量,得到所述剩余量。
3.根据权利要求1或2所述的直播方法,其特征在于,所述剩余量包括未从所述内核缓冲区中取出发送到网络中的音视频数据的数量,以及从所述内核缓冲区中取出发送到网络中,但未得到所述客户端确认的音视频数据的数量;
所述基于预先创建的套接字的标识符,调用预封装的内核扩展接口,利用所述内核扩展接口,统计所述预设周期内,所述内核缓冲区中未发送到所述客户端的音视频数据的剩余量,包括:
根据定位的TCP连接,统计预设周期内,所述内核缓冲区中未发送到网络的数量,以及从所述内核缓冲区中取出发送到网络中,但未得到所述TCP连接对应的所述客户端确认的数量,得到所述剩余量。
4.根据权利要求1所述的直播方法,其特征在于,所述根据所述第一未发送比例和预设的丢帧阈值,对下一所述预设周期内要写入所述内核缓冲区的音视频数据进行处理,包括:
将所述第一未发送比例与所述丢帧阈值进行比较,并根据比较结果,调整状态机的状态;
根据所述状态机的状态,对下一所述预设周期内要写入所述内核缓冲区的音视频数据进行处理。
5.根据权利要求4所述的直播方法,其特征在于,所述丢帧阈值包括第一丢帧阈值和第二丢帧阈值,所述第一丢帧阈值大于所述第二丢帧阈值;
所述将所述第一未发送比例与所述丢帧阈值进行比较,并根据比较结果,调整状态机的状态,包括:
将所述第一未发送比例与所述第一丢帧阈值进行比较,若所述第一未发送比例大于或等于所述第一丢帧阈值,则将所述状态机的状态调整为丢帧状态;
否则,将所述第一未发送比例与所述第二丢帧阈值进行比较,若所述第一未发送比例大于或等于所述第二丢帧阈值,则将所述状态机的状态调整为待丢帧状态。
6.根据权利要求5所述的直播方法,其特征在于,所述根据所述状态机的状态,对下一所述预设周期内要写入所述内核缓冲区的音视频数据进行处理,包括:
在所述状态机的状态为所述丢帧状态时,对下一所述预设周期内要写入所述内核缓冲区的音视频数据进行音视频分离,仅将分离出的音频数据写入所述内核缓冲区;
在所述状态机的状态为所述待丢帧状态时,对下一所述预设周期内要写入所述内核缓冲区的音视频数据不作处理,将音视频数据中的音频数据和视频数据均写入所述内核缓冲区。
7.根据权利要求5所述的直播方法,其特征在于,在所述将所述状态机的状态调整为待丢帧状态之后,所述方法还包括:
确定所述状态机处于所述丢帧状态时,各所述预设周期对应的第二未发送比例;
根据各所述预设周期对应的所述第二未发送比例和所述第一丢帧阈值,对所述状态机进行状态切换。
8.根据权利要求7所述的直播方法,其特征在于,所述根据各所述预设周期对应的所述第二未发送比例和所述第一丢帧阈值,对所述状态机进行状态切换,包括:
分别将各所述预设周期对应的所述第二未发送比例,与所述第一丢帧阈值进行比较;
若存在大于或等于所述第一丢帧阈值的所述第二未发送比例,则将所述状态机从所述待丢帧状态切换为所述丢帧状态;
否则,将所述状态机从所述待丢帧状态切换为正常状态。
9.根据权利要求8所述的直播方法,其特征在于,在所述将所述状态机从所述待丢帧状态切换为正常状态之前,所述方法还包括:
分别将各所述预设周期对应的所述第二未发送比例,与所述第二丢帧阈值进行比较;
若不存在大于或等于所述第二丢帧阈值的所述第二未发送比例,则执行所述将所述状态机从所述待丢帧状态切换为正常状态的步骤;
否则,统计介于所述第一丢帧阈值和所述第二丢帧阈值之间的所述第二未发送比例的待丢帧状态持续时长,并在所述待丢帧状态持续时长大于或等于第一预设时长时,将所述状态机从所述待丢帧状态切换为所述丢帧状态。
10.根据权利要求5所述的直播方法,其特征在于,所述丢帧阈值还包括第三丢帧阈值,所述第三丢帧阈值小于所述第二丢帧阈值;
在所述将所述状态机的状态设置为丢帧状态之后,所述方法还包括:
确定所述状态机处于所述丢帧状态时,各所述预设周期对应的第三未发送比例;
根据各所述预设周期对应的所述第三未发送比例和所述第三丢帧阈值,对所述状态机进行状态切换。
11.根据权利要求10所述的直播方法,其特征在于,所述根据各所述预设周期对应的所述第三未发送比例和所述第三丢帧阈值,对所述状态机进行状态切换,包括:
分别将各所述预设周期对应的所述第三未发送比例,与所述第三丢帧阈值进行比较;
若存在小于所述第三丢帧阈值的所述第三未发送比例,则将所述状态机从所述丢帧状态切换为待恢复状态。
12.根据权利要求11所述的直播方法,其特征在于,在所述将所述状态机从所述丢帧状态切换为待恢复状态之后,所述方法还包括:
确定所述状态机处于所述待恢复状态时,各所述预设周期对应的第四未发送比例;
根据各所述预设周期对应的所述第四未发送比例和所述第三丢帧阈值,对所述状态机进行状态切换。
13.根据权利要求12所述的直播方法,其特征在于,所述根据各所述预设周期对应的所述第四未发送比例和所述第三丢帧阈值,对所述状态机进行状态切换,包括:
统计小于所述第三丢帧阈值的所述第四未发送比例的待恢复状态持续时长;
判断所述待恢复状态持续时长是否大于或等于第二预设时长;
若大于或等于所述第二预设时长,则将所述状态机从所述待恢复状态切换为正常状态。
14.根据权利要求1或2所述的直播方法,其特征在于,在所述根据所述第一未发送比例和预设的丢帧阈值,对下一所述预设周期内要写入所述内核缓冲区的音视频数据进行处理之前,所述方法还包括:
判断所述第一未发送比例是否大于预设的断连阈值,所述断连阈值大于所述丢帧阈值;
若大于,则基于所述标识符,调用所述内核扩展接口,并利用所述内核扩展接口停止向所述客户端发送音视频数据,并向所述客户端发送传输控制协议TCP终止包,断开与所述客户端的连接。
15.根据权利要求14所述的直播方法,其特征在于,在所述基于所述标识符,调用所述内核扩展接口,并利用所述内核扩展接口停止向所述客户端发送音视频数据之后,所述方法还包括:
清除所述内核缓冲区中未发送到所述客户端的音视频数据。
16.一种服务端,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至15中任一项所述的直播方法。
17.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至15中任一项所述的直播方法。
CN202011239505.5A 2020-11-09 2020-11-09 直播方法、服务端及计算机可读存储介质 Active CN112511848B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011239505.5A CN112511848B (zh) 2020-11-09 2020-11-09 直播方法、服务端及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011239505.5A CN112511848B (zh) 2020-11-09 2020-11-09 直播方法、服务端及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN112511848A CN112511848A (zh) 2021-03-16
CN112511848B true CN112511848B (zh) 2023-06-20

Family

ID=74955670

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011239505.5A Active CN112511848B (zh) 2020-11-09 2020-11-09 直播方法、服务端及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN112511848B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113259697B (zh) * 2021-05-12 2022-04-08 腾讯科技(深圳)有限公司 一种直播状态的通知方法、相关装置、设备及存储介质
CN116567364A (zh) * 2022-01-28 2023-08-08 华为技术有限公司 一种网络质量确定方法及通信装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR960027683A (ko) * 1994-12-22 1996-07-22 양승택 망 노드 폭주상태 결정장치 및 방법
CN101426142A (zh) * 2008-12-04 2009-05-06 上海大学 一种传输流再复用方法
WO2010015142A1 (zh) * 2008-08-04 2010-02-11 中兴通讯股份有限公司 一种实现零拷贝发送流媒体数据的方法及系统
JP2010098475A (ja) * 2008-10-15 2010-04-30 Yamaha Corp ネットワークシステム及び音響信号処理装置
WO2016015670A1 (zh) * 2014-08-01 2016-02-04 广州金山网络科技有限公司 一种音频流解码方法及装置
CN105992023A (zh) * 2015-02-11 2016-10-05 杭州海康威视数字技术股份有限公司 视频图像数据的处理方法及装置
CN106060648A (zh) * 2016-06-07 2016-10-26 青岛海信电器股份有限公司 一种音频数据的传输方法及智能电视

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005167506A (ja) * 2003-12-01 2005-06-23 Fujitsu Ltd バッファ制御装置および制御装置
US8713195B2 (en) * 2006-02-10 2014-04-29 Cisco Technology, Inc. Method and system for streaming digital video content to a client in a digital video network
JP2010197957A (ja) * 2009-02-27 2010-09-09 Seiko Epson Corp 画像音声供給装置、画像音声出力装置、画像供給方法、画像音声出力方法、及びプログラム
US9183580B2 (en) * 2010-11-04 2015-11-10 Digimarc Corporation Methods and systems for resource management on portable devices
CZ2010226A3 (cs) * 2010-03-26 2011-05-11 CESNET, zájmové sdružení právnických osob Zarízení pro príjem obrazového signálu s vysokým rozlišením prenášeného s malým zpoždením asynchronní paketovou pocítacovou sítí
US9229813B2 (en) * 2014-03-06 2016-01-05 HGST Netherlands B.V. Error correction with on-demand parity sectors in magnetic data storage devices
CN103929681B (zh) * 2014-04-09 2017-02-22 安徽超远信息技术有限公司 一种提升低速网络中rtp视频流处理效率的方法
JP2016071766A (ja) * 2014-10-01 2016-05-09 富士通株式会社 情報処理装置、情報処理システムおよび書き込み制御プログラム
CN104699422B (zh) * 2015-03-11 2018-03-13 华为技术有限公司 缓存数据的确定方法及装置
CN105744342B (zh) * 2016-01-28 2019-04-12 腾讯科技(深圳)有限公司 移动终端的数据传输方法和装置
CN108769826A (zh) * 2018-06-22 2018-11-06 广州酷狗计算机科技有限公司 直播媒体流获取方法、装置、终端及存储介质
EP3598721B1 (en) * 2018-07-17 2021-05-05 Facebook, Inc. Detecting network congestions in a communication network
CN111698275B (zh) * 2019-03-15 2021-12-14 华为技术有限公司 数据处理方法、装置及设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR960027683A (ko) * 1994-12-22 1996-07-22 양승택 망 노드 폭주상태 결정장치 및 방법
WO2010015142A1 (zh) * 2008-08-04 2010-02-11 中兴通讯股份有限公司 一种实现零拷贝发送流媒体数据的方法及系统
JP2010098475A (ja) * 2008-10-15 2010-04-30 Yamaha Corp ネットワークシステム及び音響信号処理装置
CN101426142A (zh) * 2008-12-04 2009-05-06 上海大学 一种传输流再复用方法
WO2016015670A1 (zh) * 2014-08-01 2016-02-04 广州金山网络科技有限公司 一种音频流解码方法及装置
CN105992023A (zh) * 2015-02-11 2016-10-05 杭州海康威视数字技术股份有限公司 视频图像数据的处理方法及装置
CN106060648A (zh) * 2016-06-07 2016-10-26 青岛海信电器股份有限公司 一种音频数据的传输方法及智能电视

Also Published As

Publication number Publication date
CN112511848A (zh) 2021-03-16

Similar Documents

Publication Publication Date Title
CN112511848B (zh) 直播方法、服务端及计算机可读存储介质
CA2842098C (en) A system and method for transmission of data signals over a wireless network
EP2563034B1 (en) Dynamic Bandwidth Re-Allocation
CN111246284B (zh) 视频流播放方法、系统、终端及存储介质
EP3547580A1 (en) Data sending method and apparatus, and data receiving method and apparatus
US20150334400A1 (en) Coding Manner Switching Method, Transmit End, and Receive End
WO2022127605A1 (zh) 一种网络切换方法及装置
US8448213B2 (en) Contents distribution system, contents distribution server, contents reproduction terminal, and contents distribution method
US20220014574A1 (en) Data distribution method and network device
CN109428864B (zh) 提高nginx-rtmp拉流服务质量的方法及装置
CN101409828A (zh) 视频监控数据传输方法和系统、及视频监控中心服务器
WO2021238940A1 (zh) 视频数据处理方法、装置和电子设备
WO2010041469A1 (ja) コンテンツ配信システム、コンテンツ配信方法およびコンピュータプログラム
CN104053002A (zh) 视频解码方法和视频解码装置
US20020038370A1 (en) Communication system
US11799576B2 (en) Data sending method and apparatus, and FlexE switching system
US9667443B2 (en) Data distribution device and imaging apparatus
CN110620943B (zh) 基于多媒体接口的控制方法及装置
KR20160140012A (ko) 영상 데이터 전송 및 수신 방법 및 장치
CN111200562B (zh) 导流方法、静态父节点、边缘节点以及cdn网络
KR20150100100A (ko) 데이터 처리속도 증가장치 및 그 방법
CN105491394B (zh) 发送mmt包的方法及装置、接收mmt包的方法
CN114416013A (zh) 数据发送方法、装置、电子设备及计算机可读存储介质
CN113365089A (zh) 一种数据传输方法、装置、存储介质及电子装置
CN113747237B (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