一种流媒体数据的传输方法及接收方法、电子设备与流程

文档序号:20616752发布日期:2020-05-06 20:15阅读:195来源:国知局
一种流媒体数据的传输方法及接收方法、电子设备与流程

本申请涉及通信技术领域,特别是涉及一种流媒体数据的传输方法及接收方法、电子设备。



背景技术:

随着互联网在全球范围内的迅猛发展,基于互联网的智能终端大规模应用如智能电视等快速普及,人们观看电视直播的媒介逐渐从传统dvb(digitalvideobroadcast,数字视频广播)、数字电视等向网络电视过渡。目前流媒体网络电视直播的传输协议如hls(httplivestreaming)、flv(flashvideo)、rtmp(realtimemessagingprotocol,实时消息传输协议)等,基本都是基于tcp(transmissioncontrolprotocol,传输控制协议)传输协议实现。由于tcp协议存在一些先天不足之处,可能会存在播放不流畅等问题。



技术实现要素:

本申请实施例提供一种流媒体数据的传输方法及接收方法、电子设备、存储介质,可解决流媒体网络电视直播时播放不流畅的问题。

一种流媒体数据的传输方法,包括:

按预设时间周期对流媒体数据进行分片,将每个分片分成若干个数据包,并将所述若干个数据包加入缓冲队列;

接收客户端发送的分片请求;

根据所述分片请求从所述缓冲队列中获取分片信息以及与所述分片信息对应的所述若干个数据包;

向所述客户端发送所述分片信息以及与所述分片信息对应的所述若干个数据包,所述分片信息用于指示所述客户端接收所述数据包,并在确定完成接收所述若干个数据包后,将接收的所述若干个数据包传输至播放器。

一种流媒体数据的接收方法,包括:

向服务器发送分片请求,所述分片请求用于指示所述服务器从缓冲队列中获取分片信息以及与所述分片信息对应的所述若干个数据包,所述缓冲队列中存储有流媒体的多个分片中每个分片的若干个数据包;

接收所述服务器发送的所述分片信息以及与所述分片信息对应的所述若干个数据包;

在确定完成接收所述若干个数据包后,将接收的所述若干个数据包传输至播放器。

一种电子设备,包括存储器及处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器实现如上所述的方法。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的方法。

上述流媒体数据的传输方法及接收方法、电子设备、存储介质,服务器按预设时间周期对流媒体数据进行分片,将每个分片分成若干个数据包,并将若干个数据包加入缓冲队列,接收客户端发送的分片请求,根据分片请求从缓冲队列中获取分片信息以及与分片信息对应的若干个数据包,并向客户端发送分片信息以及与分片信息对应的若干个数据包,在客户端完成接收完成若干个数据包后,将接收的若干个数据包传输至播放器,采用分组传输的方式,每组传输一个分片,在网络环境变差时可按片丢弃流媒体数据,增强网络波动时的抵抗力,提高播放流畅度。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为一个实施例中流媒体数据的传输方法及接收方法的应用场景图;

图2为一个实施例中服务器与客户端进行流媒体数据传输时的时序图;

图3为一个实施例中流媒体数据的传输方法的流程图;

图4为一个实施例中对缺失的数据包进行重传的流程图;

图5为一个实施例中服务器向客户端发送分片信息及数据包的流程图;

图6为一个实施例中流媒体数据的接收方法的流程图;

图7为一个实施例中流媒体数据的传输装置的框图;

图8为一个实施例中流媒体数据的接收装置的框图;

图9为一个实施例中电子设备的框图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。

可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。举例来说,在不脱离本申请的范围的情况下,可以将第一客户端称为第二客户端,且类似地,可将第二客户端称为第一客户端。第一客户端和第二客户端两者都是客户端,但其不是同一客户端。

图1为一个实施例中流媒体数据的传输方法及接收方法的应用场景图。如图1所示,服务器10可与客户端20建立网络通信连接。服务器10按预设时间周期对流媒体数据进行分片,将每个分片分成若干个数据包,并将若干个数据包加入缓冲队列。客户端20向服务器10发送用于请求流媒体数据的分片请求。服务器10接收客户端20发送的分片请求,并根据该分片请求从缓冲队列中获取分片信息以及与该分片信息对应的若干个数据包。服务器10向客户端20发送分片信息及与分片信息对应的若干个数据包。客户端20接收服务器10发送的分片信息以及与分片信息对应的若干个数据包,并在确定完成接收该若干个数据包后,将接收的若干个数据包传输至播放器。

图2为一个实施例中服务器与客户端进行流媒体数据传输时的时序图。如图2所示,服务器10与客户端20进行流媒体数据传输时,可执行以下步骤:

1、服务器10按预设时间周期对流媒体数据进行分片,将每个分片分成若干个数据包,并将若干个数据包加入缓冲队列。

在一个实施例中,服务器10按预设时间周期对流媒体数据进行分片,并分配每个分片的分片标识,可按网络最大传输单元将每个分片分成若干个数据包,每个数据包携带有包标识及所属分片的分片标识。

在一个实施例中,服务器10按预设时间周期对流媒体数据进行分片,可将每个分片分成若干个udp(userdatagramprotocol,用户数据报协议)数据包。

2、客户端20向服务器10发送分片请求。

3、服务器10根据分片请求从缓冲队列中获取分片信息以及与分片信息对应的若干个数据包。

4、服务器10向客户端20发送分片信息以及与分片信息对应的若干个数据包。

在一个实施例中,服务器10可获取客户端20的缓冲区大小,并根据该缓冲区大小设置发包频率。服务器10向客户端20发送分片信息,并按照该发包频率向客户端20发送与分片信息对应的若干个数据包。

在一个实施例中,服务器10可通过tcp端口向客户端20发送分片信息,并通过udp端口向客户端20发送与该分片信息对应的若干个udp数据包。

在一个实施例中,分片信息包括分片标识,以及分片包含的数据包数量,数据包携带有包标识及所属分片的分片标识。客户端20在接收到服务器10发送的分片信息时,可根据数据包数量设置超时时间。客户端20在接收到服务器10发送的数据包时,将接收的数据包加入缓存队列。当接收时长达到超时时间时,判断缓存队列中的数据包的数量是否与该分片包含的数据包数量匹配。若匹配,则可确定完成接收若干个数据包。若不匹配,则可确定存在缺失的数据包。

在一个实施例中,客户端20可确定缓存队列中缺失的数据包的包标识,并根据确定的包标识及该分片标识向服务器10发送重传请求。服务器10接收客户端20发送的重传请求,可对重传请求进行解析,获取请求重传的数据包的包标识及所属分片的分片标识。服务器10可根据请求重传的数据包的包标识及所属分片的分片标识从缓冲队列中获取待重传的数据包,并向客户端20发送该待重传的数据包。

5、客户端20在确定完成接收若干个数据包后,将接收的若干个数据包传输至播放器。

如图3所示,在一个实施例中,提供一种流媒体数据的传输方法,应用于上述服务器,该方法可包括如下步骤:

步骤310,按预设时间周期对流媒体数据进行分片,将每个分片分成若干个数据包,并将若干个数据包加入缓冲队列。

流媒体是指将一连串的媒体数据压缩后,经过网上分段发送数据,在网上即时传输影音以供观赏的一种技术。流媒体数据主要包括时间上连续的媒体数据,例如音频数据、视频数据等。作为一种方式,服务器可存储有大量的媒体数据,可对媒体数据进行压缩后得到hls、flv等多种封装格式的流媒体数据。可以理解地,流媒体数据的封装格式可为多种,并不限于上述几种。服务器可对封装的流媒体数据进行解析,按预设时间周期对流媒体数据进行分片,也即,按预设时间周期将流媒体数据切分成多个片段,一个片段也可称为一个分片,每个分片包含的流媒体数据的时间均为预设时间周期。其中,预设时间周期可根据实际需求进行设定,例如,可为1秒、2秒等,以保证每个分片的流媒体数据能包含完整的媒体信息,例如,每个分片均包含完整的画面视频等。

服务器按预设时间周期将流媒体数据切分成多个片段后,进一步地,可将每个分片分成若干个数据包,划分的数据包的数量在此不作限定,可根据传输带宽、最大传输单元(maximumtransmissionunit,mtu)等进行设定,但不限于此,其中,mtu可用于说明服务器能够接受的有效载荷大小。每个数据包中可携带有所属分片的部分流媒体数据,每个分片划分的若干个数据包可组成对应分片完整的流媒体数据。

服务器可将分片分成的若干个数据包加入缓冲队列进行缓存,以方便客户端进行数据访问及下载。作为一种实施方式,缓冲队列可为环形缓冲区,环形缓冲区可以为一个固定尺寸、头尾相连的缓冲区,可遵循先进先出的数据读取原则。可选地,环形缓冲区可基于哈希算法等进行实现,环形缓冲区的实现方式在此不作限定。服务器可按照分片对应的时间先后顺序,依次将每个分片所分成的若干个数据包加入缓冲队列中,每个分片所包含的若干个数据包可相当于一个组,在向客户端发送流媒体数据时,可按组发送,也即,每次发送一个分片的数据包。

步骤320,接收客户端发送的分片请求。

客户端可指安装在终端设备上的应用程序,该终端设备可以为手机、平板电脑、个人计算机(personalcomputer,pc)等电子设备,但不限于此。可以理解地,本申请实施例中的客户端也可指终端设备本身,并不局限于应用程序。

客户端可向服务器发送分片请求,分片请求可用于向服务器请求获取流媒体数据。在一些实施例中,服务器按预设时间周期对流媒体数据进行分片时,可分配每个分片对应的分片标识,分片标识可用于唯一标识分片的身份。可选地,分片标识可由数字、字母、符号等中的一种或多种组成的编号表示。例如,对流媒体数据进行分片,按照分片的时间先后顺序分配的分片标识为1、2、3、4……,也可为a、b、c、d……,还可以为a001、a002、a003……,但不限于此。客户端向服务器发送的分片请求中可包含有分片标识,用于表示请求获取该分片标识对应分片的流媒体数据。服务器接收客户端发送的分片请求,可对分片请求进行解析,得到分片标识。

步骤330,根据分片请求从缓冲队列中获取分片信息以及与分片信息对应的若干个数据包。

在一个实施例中,服务器可根据分片请求中包含的分片标识,在缓冲队列中查找到该分片标识对应的分片的存储地址。基于该存储地址,可从缓冲队列获取分片信息及与分片信息对应的若干个数据包。可选地,该分片信息可包括分片标识及分片包含的数据包数量,例如,分片标识1,包含的数据包数量为5。

步骤340,向客户端发送分片信息以及与分片信息对应的若干个数据包,分片信息用于指示客户端接收数据包,并在确定完成接收若干个数据包后,将接收的若干个数据包传输至播放器。

服务器从缓冲队列中获取分片信息以及与分片信息对应的若干个数据包后,可向客户端发送分片信息以及与分片信息对应的若干个数据包。客户端接收服务器发送的分片信息及数据包,可根据分片信息中的数据包数量确定是否接收完成分片包含的所有数据包。客户端在确定完成接收若干个数据包后,可将接收的分片包含的若干个数据包传输至播放器进行缓存,以进行后续的播放。

在一个实施例中,客户端在确定完成接收分片包含的所有数据包后,可继续向服务器发送分片请求,以请求获取下一分片的流媒体数据,直至所有分片的流媒体数据全部接收完成。例如,客户端在确定接收完成分片1包含的若干个数据包后,可继续向服务器请求获取分片2,服务器将分片2包含的若干个数据包发送给客户端,客户端在确定接收完成分片2包含的若干个数据包后,可继续向服务器请求获取分片3……以此类推,直至客户端获取到所有分片,即获取到整个流媒体数据。采用此种按片发送、按片确认的方式,可减少不必要的确认信令,提高传输效率。

在一些实施方式中,客户端向服务器发送的分片请求可不包含分片标识,客户端首次向服务器发送分片请求,该分片请求可包含播放串,播放串可用于表示所请求下载的流媒体数据的身份,不同的流媒体可对应不同的播放串。服务器接收该分片请求后,可提取该分片请求包含的播放串,并根据该播放串确定对应的流媒体数据在缓冲队列的存储位置。可获取该对应的流媒体数据的第一个分片的存储位置,并根据该第一个分片的存储位置获取第一个分片的分片信息及包含的若干个数据包。服务器可将第一个分片的分片信息及包含的若干个数据包发送给客户端。客户端在确定接收完成第一个分片包含的若干个数据包后,可继续向服务器发送下一分片请求,服务器根据下一分片请求向客户端发送第二个分片的分片信息及包含的若干个数据包,以此类推,直至客户端获取到所有分片,即获取到整个流媒体数据。

在本申请实施例中,服务器按预设时间周期对流媒体数据进行分片,将每个分片分成若干个数据包,并将若干个数据包加入缓冲队列,接收客户端发送的分片请求,根据分片请求从缓冲队列中获取分片信息以及与分片信息对应的若干个数据包,并向客户端发送分片信息以及与分片信息对应的若干个数据包,在客户端完成接收完成若干个数据包后,将接收的若干个数据包传输至播放器,采用分组传输的方式,每组传输一个分片,在网络环境变差时可按片丢弃流媒体数据,增强网络波动时的抵抗力,提高播放流畅度。

如图4所示,在一个实施例中,上述流媒体数据的传输方法,还包括以下步骤:

步骤402,接收客户端发送的重传请求。

服务器根据接收的分片请求,向客户端发送分片信息及与分片信息对应的若干个数据包。客户端在接收到分片信息时,可获取分片信息中包含的数据包数量。在一个实施例中,客户端可根据获取的数据包数量设置超时时间,该超时时间用于表示接收分片的流媒体数据的最大时长,当接收分片包含的若干个数据包的接收时长超过该超时时长时,可判断已接收的数据包的数量是否与该分片信息包含的数据包数量匹配。

作为一种具体实施方式,在客户端接收到分片信息时,可开始计算接收时长,该接收时长可用于表示客户端接收分片的数据包的时长。同时,可接收服务器发送的数据包,并将接收的数据包加入缓存队列中,并检测接收时长是否达到设置的超时时间。当接收时长到达超时时间时,可判断缓存队列中接收的数据包的数量是否与分片信息中包含的数据包数量匹配。若匹配,则可说明在超时时间内,客户端已将分片包含的若干个数据包接收完闭。若不匹配,则可说明在超时时间内,客户端未接收完成分片包含的若干个数据包。客户端可确定缓存队列中缺失的数据包,并向服务器发送重传请求。

在一个实施方式中,服务器按预设时间周期对流媒体数据进行分片,该预设时间周期可以采用gop(groupofpictures,画面组)进行设置,一个gop是一组连续的画面,每个分片均可作为一个gop,以保证每个分片对应的流媒体数据都是一段完整的画面。服务器可按网络最大传输单元(mtu)将每个分片分成若干个数据包,每个数据包携带有包标识及所属分片的分片标识。可选地,包标识可以由数字、字母及符号等中的一种或多种组成,例如,分片标识为1的分片,包含的数据包的包标识分别为001、002、003等,但不限于此。

当客户端的接收时长达到超时时长,且缓存队列中接收的数据包的数量与分片信息中包含的数据包数量不匹配,则客户端可确定缓存队列中缺失的数据包的包标识。作为一种具体实施方式,客户端可逐一获取缓存队列中的各个数据包的包标识,并根据获取的包标识确定缺失的数据包的包标识。例如,缓存队列中包含的包标识包括001、002、004、005,分片包含的数据包数量为5,则可确定缺失的数据包的包标识为003。客户端可根据缺失的数据包的包标识及分片标识向服务器发送重传请求,以请求重新获取缺失的数据包。

在一些实施方式中,客户端根据分片包含的数据包数量设置超时时间,超时时间可与数据包数量成正相关关系,数据包数量越多,超时时间可越长。具体地,该超时时间的计算公式可如式(1)所示:

其中,t0为超时时间,ms为数据包数量,为服务器发送数据包的发包频率,devrtt为往返时延(round-triptime,rtt)的抖动均值。

devrtt可通过式(2)进行计算:

devrtt=(1-β)*devrtt+β*(|rtt-srtt|)(2);

其中,β=0.25,srtt可为往返时延的系统平滑值,rtt则为当前检测到的往返时延。在一个实施例中,客户端可每隔预设第一时长向服务器发送ping指令,根据该ping指令探测rtt。第一时长可根据实际需求进行设定,例如1秒、2秒等,但不限于此。

srtt可通过式(3)进行计算:

srtt=srtt+α*(rtt-srtt)(3);

其中,α为加权因子,取值范围可在0.1到0.2之间。

步骤404,对重传请求进行解析,获取请求重传的数据包的包标识及所属分片的分片标识。

客户端向服务器发送重传请求,重传请求可包括客户端缺失的数据包的包标识及对应的分片标识。服务器接收客户端发送的重传请求,可对重传请求进行解析,得到请求重传的数据包的包标识及所属分片的分片标识。

步骤406,根据请求重传的数据包的包标识及所属分片的分片标识从缓冲队列中获取待重传的数据包,并向客户端发送待重传的数据包。

服务器可根据获取的请求重传的数据包的包标识及所属分片的分片标识,在缓冲队列中查找客户端缺失的数据包。例如,重传请求包含的分片标识为1,包标识为004,则可从缓冲队列中查找携带有分片标识为1、包标识为004的数据包,该数据包即为待重传的数据包。服务器可将待重传的数据包发送给客户端。客户端重新接收缺失的数据包后,可确定接收完成分片包含的若干个数据包,并将接收的分片包含的若干个数据包传送至播放器进行缓存。在客户端确定接收完成分片包含的若干个数据包后,可销毁当前设置的超时时长,每个分片对应的超时时长不同,客户端需重新设置下一分片的超时时长。

在一些实施方式中,客户端向服务器发送重传请求的同时,可设置重传时长,重传时长可用于限定客户端接收重传的数据包的时长。在客户端向服务器发送重传请求时,可计算请求时间,并检测请求时间是否达到重传时长。若在请求时间未达到重传时长时,客户端接收到服务器重新发送的数据包,即客户端在重传时长内接收到缺失的数据包,则确定接收完成分片包含的若干个数据包,在将分片包含的若干个数据包传送至播放器进行缓存后,可向服务器继续发送分片请求。若在请求时间达到重传时长时,客户端还未接收到服务器重新发送的数据包,则可重新向服务器发送重传请求。

在一个实施例中,重传时长可通过式(4)进行计算:

tr=μ*srtt+δ*devrtt(4);

其中,tr为重传时长,μ和δ可分别取值为1/4。

在本申请实施例中,客户端在检测到数据包缺时时,可向服务器发送重传请求,以重新获取缺失的数据包,可根据分片的数据包数量确定快速重传时机,减少确认次数和重复请求次数,提升带宽利用率。

如图5所示,在一个实施例中,上述流媒体数据的传输方法,还包括以下步骤:

步骤502,将每个分片分成若干个用户数据报协议udp数据包。

服务器对流媒体数据进行解析,将流媒体数据切分成多个分片,可再进一步将每个分片分成若干个数据片段,并进行封装,可每个数据片段按照udp封装成udp数据包,udp数据包可携带有分片标识、包标识及数据。

步骤504,接收客户端发送的分片请求。

服务器可监听tcp端口,并通过tcp端口接收客户端发送的分片请求。作为一个实施方式,服务器首次接收到客户端发送的分片请求,可对该分片请求进行解析,提取分片请求中包含的播放串和认证码。服务器可通过认证码对客户端的身份进行认证,认证通过后,再向客户端发送与播放串对应的流媒体数据。服务器可将认证码与数据库中预先存储的认证码进行匹配,若匹配成功,则认证成功,其中,匹配成功可指的是可在数据库中查找到与该认证码相同的预先存储的认证码。

步骤506,根据分片请求从缓冲队列中获取分片信息以及与分片信息对应的若干个数据包。

步骤508,通过传输控制协议tcp端口向客户端发送分片信息。

步骤510,通过udp端口向客户端发送与分片信息对应的若干个udp数据包。

在一个实施例中,对客户端认证通过后,服务器可创建会话并生成会话id(identity,身份),并向客户端发送推流(pullstream)信令,该推流信令可包含tcp端口号、udp端口号及会话id。客户端接收推流信令后,可提取推流信令携带的tcp端口号、udp端口号及会话id,根据该会话id、tcp端口号及udp端口号与服务器的tcp端口、udp端口进行连接,建立用于传输信息的tcp通道及传输流媒体数据的udp通道。在连接完成后,客户端可向服务器返回推流响应信令。

服务器可从缓冲队列中获取分片信息以及与分片信息对应的若干个数据包,并发送给客户端。服务器在接收到推流响应信令后,可根据推流响应信令包含的会话id确定客户端连接的tcp端口及udp端口。可通过该连接的tcp端口向客户端发送分片信息,并通过该连接的udp端口向客户端发送与分片信息对应的若干个udp数据包。通过udp端口向客户端发送udp数据包,可减少不必要的确认信令,客户端只有在接成完成分片包含的所有udp数据包后,才会进行确认。

在一个实施例中,服务器可获取客户端的缓冲区大小,并根据该缓冲区大小设置发包频率,发包频率指的是服务器向客户端发送数据包的频率。作为一种具体实施方式,发包频率可通过式(5)进行计算:

ν=bu÷mtu·ε(5);

其中,ν为发包频率,bu为客户端缓冲区大小,mtu为网络最大传输单元,ε为强度系数取值为10~20。服务器可按照该发包频率向客户端发送分片的数据包。根据客户端的缓冲区大小设置发包频率,可防止客户端的缓冲区溢出。

在一个实施例中,服务器接收客户端发送的分片请求或重传请求,可获取分片标识,当检测到该分片标识对应的分片已在缓冲队列中过期时,可获取当前缓冲队列中缓存的分片标识,并生成相应的标识序列。该标识序列可包括按时间先后顺序依次排序的分片标识。服务器可将标识序列发送至客户端。客户端可清空缓存,并根据该标识序列中的分片标识向服务器发送分片请求,重新下载流媒体数据的分片。

在一个实施例中,服务器接收客户端发送的分片请求,可获取分片标识,当检测到该分片标识对应的分片还未产生时,也即,该分片标识对应的分片还未进入缓冲队列,则可触发客户端的订阅事件。在服务器生成该分片标识对应的分片,并将该分片包含的若干个数据包加入缓冲队列后,可直接向客户端发送该分片的分片信息及包含的若干个数据包,客户端无需重新发送分片请求。

在一个实施例中,服务器可每隔预设第二时长向客户端发送ping指令,若在响应时长内没有接收到客户端返回的响应,则可关闭与该客户端之间的会话,并断开与该客户端的tcp及udp连接。第二时长及响应时长可根据实际需求进行设定,例如第二时长可为1秒、2秒等,响应时长可为10秒、13秒、20秒等,但不限于此。

在本申请实施例中,可通过tcp传输分片信息,通过udp传输数据包,避免信令传输通道拥堵,增强网络波动时的抵抗力,提高播放流畅度。

如图6所示,在一个实施例中,提供一种流媒体数据的接收方法,可应用于客户端,该方法可包括以下步骤:

步骤610,向服务器发送分片请求,分片请求用于指示服务器从缓冲队列中获取分片信息以及与分片信息对应的若干个数据包,缓冲队列中存储有流媒体的多个分片中每个分片的若干个数据包。

步骤620,接收服务器发送的分片信息以及与分片信息对应的若干个数据包。

在一些实施例中,客户端在在接收到服务器发送的分片信息时,可根据数据包数量设置超时时间。在接收到服务器发送的数据包时,将接收的数据包加入缓存队列。当接收时长达到超时时间时,判断缓存队列中的数据包的数量是否与分片包含的数据包数量匹配。若匹配,则确定完成接收若干个数据包。

在一些实施例中,若缓存队列中的数据包的数量与分片包含的数据包数量不匹配,客户端可确定缓存队列中缺失的数据包的包标识。根据确定的包标识及分片标识向服务器发送重传请求,重传请求用于指示服务器返回与分片标识及包标识对应的数据包。

步骤630,在确定完成接收若干个数据包后,将接收的若干个数据包传输至播放器。

本申请实施例中的流媒体数据的接收方法可参考上述实施例中的流媒体数据的传输方法中的描述,在此不再一一赘述。

在本申请实施例中,服务器按预设时间周期对流媒体数据进行分片,将每个分片分成若干个数据包,并将若干个数据包加入缓冲队列,接收客户端发送的分片请求,根据分片请求从缓冲队列中获取分片信息以及与分片信息对应的若干个数据包,并向客户端发送分片信息以及与分片信息对应的若干个数据包,在客户端完成接收完成若干个数据包后,将接收的若干个数据包传输至播放器,采用分组传输的方式,每组传输一个分片,在网络环境变差时可按片丢弃流媒体数据,增强网络波动时的抵抗力,提高播放流畅度。

应该理解的是,虽然上述各个流程示意图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述各个流程示意图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,提供一种流媒体数据的传输系统,包括服务器和客户端。

服务器用于按预设时间周期对流媒体数据进行分片,将每个分片分成若干个数据包,并将若干个数据包加入缓冲队列。

客户端用于与服务器建立通信连接,向服务器发送分片请求。

服务器用于接收客户端发送的分片请求,根据分片请求从缓冲队列中获取分片信息以及与分片信息对应的若干个数据包,并向客户端发送分片信息以及与分片信息对应的若干个数据包。

客户端用于接收服务器发送的分片信息以及与分片信息对应的若干个数据包,并在确定完成接收若干个数据包后,将接收的若干个数据包传输至播放器。

本申请实施例中的流媒体数据的接收系统可参考上述实施例中的流媒体数据的传输方法及接收方法中的描述,在此不再一一赘述。

在本申请实施例中,服务器按预设时间周期对流媒体数据进行分片,将每个分片分成若干个数据包,并将若干个数据包加入缓冲队列,接收客户端发送的分片请求,根据分片请求从缓冲队列中获取分片信息以及与分片信息对应的若干个数据包,并向客户端发送分片信息以及与分片信息对应的若干个数据包,在客户端完成接收完成若干个数据包后,将接收的若干个数据包传输至播放器,采用分组传输的方式,每组传输一个分片,在网络环境变差时可按片丢弃流媒体数据,增强网络波动时的抵抗力,提高播放流畅度。

如图7所示,在一个实施例中,提供一种流媒体数据的传输装置700,可应用于服务器。该流媒体数据的传输装置700包括分片模块710、接收模块720、数据获取模块730及发送模块740。

分片模块710,用于按预设时间周期对流媒体数据进行分片,将每个分片分成若干个数据包,并将若干个数据包加入缓冲队列。

接收模块720,用于接收客户端发送的分片请求。

数据获取模块730,用于根据分片请求从缓冲队列中获取分片信息以及与分片信息对应的若干个数据包。

发送模块740,用于向客户端发送分片信息以及与分片信息对应的若干个数据包,分片信息用于指示客户端接收数据包,并在确定完成接收若干个数据包后,将接收的若干个数据包传输至播放器。

在本申请实施例中,服务器按预设时间周期对流媒体数据进行分片,将每个分片分成若干个数据包,并将若干个数据包加入缓冲队列,接收客户端发送的分片请求,根据分片请求从缓冲队列中获取分片信息以及与分片信息对应的若干个数据包,并向客户端发送分片信息以及与分片信息对应的若干个数据包,在客户端完成接收完成若干个数据包后,将接收的若干个数据包传输至播放器,采用分组传输的方式,每组传输一个分片,在网络环境变差时可按片丢弃流媒体数据,增强网络波动时的抵抗力,提高播放流畅度。

在一个实施例中,分片模块710,包括分片单元及分包单元。

分片单元,用于按预设时间周期对流媒体数据进行分片,并分配每个分片的分片标识。

分包单元,用于按网络最大传输单元将每个分片分成若干个数据包,每个数据包携带有包标识及所属分片的分片标识。

在一个实施例中,上述流媒体数据的传输装置700,除了包括分片模块710、接收模块720、数据获取模块730及发送模块740,还包括解析模块。

接收模块720,还用于接收客户端发送的重传请求。

解析模块,用于对重传请求进行解析,获取请求重传的数据包的包标识及所属分片的分片标识。

数据获取模块730,还用于根据请求重传的数据包的包标识及所属分片的分片标识从缓冲队列中获取待重传的数据包。

发送模块740,还用于向客户端发送待重传的数据包。

在本申请实施例中,客户端在检测到数据包缺时时,可向服务器发送重传请求,以重新获取缺失的数据包,可根据分片的数据包数量确定快速重传时机,减少确认次数和重复请求次数,提升带宽利用率。

在一个实施例中,分包单元,还用于将每个分片分成若干个用户数据报协议udp数据包。

发送模块740,包括tcp单元及udp单元。

tcp单元,用于通过传输控制协议tcp端口向客户端发送分片信息。

udp单元,用于通过udp端口向客户端发送与分片信息对应的若干个udp数据包。

在一个实施例中,上述流媒体数据的传输装置700,除了包括分片模块710、接收模块720、数据获取模块730、发送模块740及解析模块,还包括设置模块。

设置模块,用于获取客户端的缓冲区大小,并根据缓冲区大小设置发包频率。

发送模块740,还用于向客户端发送分片信息,并按照发包频向客户端发送与分片信息对应的若干个数据包。

在本申请实施例中,可通过tcp传输分片信息,通过udp传输数据包,避免信令传输通道拥堵,增强网络波动时的抵抗力,提高播放流畅度。

如图8所示,在一个实施例中,提供一种流媒体数据的接收装置800,可应用于客户端。该流媒体数据的接收装置800包括发送模块810、接收模块820及传输模块830。

发送模块810,用于向服务器发送分片请求,分片请求用于指示服务器从缓冲队列中获取分片信息以及与分片信息对应的若干个数据包,缓冲队列中存储有流媒体的多个分片中每个分片的若干个数据包。

接收模块820,用于接收服务器发送的分片信息以及与分片信息对应的若干个数据包。

在一个实施例中,分片信息包括分片标识,以及分片包含的数据包数量,数据包携带有包标识及所属分片的分片标识。

接收模块820,包括设置单元、缓存单元、判断单元及确定单元。

设置单元,用于在接收到服务器发送的分片信息时,根据数据包数量设置超时时间。

缓存单元,用于在接收到服务器发送的数据包时,将接收的数据包加入缓存队列。

判断单元,用于当接收时长达到超时时间时,判断缓存队列中的数据包的数量是否与分片包含的数据包数量匹配。

确定单元,用于若缓存队列中的数据包的数量与分片包含的数据包数量匹配,则确定完成接收若干个数据包。

在一个实施例中,发送模块810,还用于若缓存队列中的数据包的数量与分片包含的数据包数量不匹配,则确定缓存队列中缺失的数据包的包标识,并根据确定的包标识及分片标识向服务器发送重传请求,重传请求用于指示服务器返回与分片标识及包标识对应的数据包。

传输模块830,用于在确定完成接收若干个数据包后,将接收的若干个数据包传输至播放器。

在本申请实施例中,服务器按预设时间周期对流媒体数据进行分片,将每个分片分成若干个数据包,并将若干个数据包加入缓冲队列,接收客户端发送的分片请求,根据分片请求从缓冲队列中获取分片信息以及与分片信息对应的若干个数据包,并向客户端发送分片信息以及与分片信息对应的若干个数据包,在客户端完成接收完成若干个数据包后,将接收的若干个数据包传输至播放器,采用分组传输的方式,每组传输一个分片,在网络环境变差时可按片丢弃流媒体数据,增强网络波动时的抵抗力,提高播放流畅度。

图9为一个实施例中电子设备的结构框图。如图9所示,在一个实施例中,该电子设备900可以是服务器,也可以是终端设备。电子设备900可以包括一个或多个如下部件:处理器910和存储器920,其中一个或多个应用程序可以被存储在存储器920中并被配置为由一个或多个处理器910执行,一个或多个程序配置用于执行如上述的方法。

处理器910可以包括一个或者多个处理核。处理器910利用各种接口和线路连接整个电子设备900内的各个部分,通过运行或执行存储在存储器920内的指令、程序、代码集或指令集,以及调用存储在存储器920内的数据,执行电子设备900的各种功能和处理数据。可选地,处理器910可以采用数字信号处理(digitalsignalprocessing,dsp)、现场可编程门阵列(field-programmablegatearray,fpga)、可编程逻辑阵列(programmablelogicarray,pla)中的至少一种硬件形式来实现。处理器910可集成中央处理器(centralprocessingunit,cpu)、图像处理器(graphicsprocessingunit,gpu)和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器910中,单独通过一块通信芯片进行实现。

存储器920可以包括随机存储器(randomaccessmemory,ram),也可以包括只读存储器(read-onlymemory)。存储器920可用于存储指令、程序、代码、代码集或指令集。存储器920可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等。存储数据区还可以存储电子设备900在使用中所创建的数据等。

可以理解地,电子设备900可包括比上述结构框图中更多或更少的结构元件,在此不进行限定。

在一个实施例中,还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如上述实施例描述的方法。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)等。

如此处所使用的对存储器、存储、数据库或其它介质的任何引用可包括非易失性和/或易失性存储器。合适的非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram),它用作外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1