具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,为本发明实施例提供的一种流媒体数据处理的架构图。其中,流媒体服务器向流媒体数据封装设备发送应用层流媒体数据块,流媒体数据封装设备把接收到的应用层流媒体数据块分段封装成报文,将分段封装后每个报文发送给客户端。
其中,作为示例而非限定,所述流媒体数据封装设备可以是网卡或具有报文封装功能的设备。
基于图1所示的架构图,本发明实施例提供一种流媒体数据处理方法。如图2所示,该方法具体包括:
S201:流媒体服务器确定应用层流媒体数据的源格式以及目标格式;
S202:所述流媒体服务器根据所述源格式以及所述目标格式,确定一个所述目标格式的报文能够包含的所述源格式的数据包的最大整数数目;
其中,需要说明的是,所述流媒体服务器根据所述源格式确定所述源格式的数据包的大小,根据所述数据包的大小以及所述目标格式的报文的容量,确定一个所述目标格式的报文能够包含的所述源格式的数据包的最大整数数目;
例如,源格式为TS文件或TS流,目标格式为TS/UDP,TS包的大小为188字节,由于MTU为1500个字节,IP头占20个字节,UDP头占8个字节,因此,UDP报文负荷最多为1472个字节,UDP报文的容量为1472字节,即最多1472字节,因此,流媒体服务器根据TS包的大小以及UDP报文的容量,可以确定TS/UDP格式的报文最多能够包含7个TS包;又例如,源格式为TS文件或TS流,目标格式为TS/RTP/UDPTS/RTP/UDP,基于同样的理由,流媒体服务器可以确定TS/RTP/UDP报文最多能够包含7个TS包,对于其他的目标格式,例如TS/TCP,可以采用类似的方式确定目标格式的报文能够包含的源格式的数据包的最大整数数目;
需要说明的是,TS/UDP格式表示TS格式的UDP报文,TS/RTP/UDP格式表示RTP格式的UDP报文,其中,RTP包包含TS格式的数据包;
对于其他的源格式以及目标格式,例如源格式为H.264,目标格式为H.264/RTP/UDP,可以采用类似的方式进行判断;
S203:所述流媒体服务器向流媒体数据封装设备发送应用层流媒体数据块,其中,所述应用层流媒体数据块中数据包的数目大于所述最大整数数目;
例如,源格式为TS文件或TS流,目标格式为TS/UDP,一个UDP报文最多能够包含7个TS包,流媒体服务器向流媒体数据封装设备发送的应用层流媒体数据块中TS包的数目大于7,可以减少流媒体服务器与流媒体数据封装设备之间的通信次数,降低流媒体服务器的处理负荷;对于其他目标格式,如TS/RTP/UDPTS/RTP/UDP,可以采用类似的方式向流媒体数据封装设备发送应用层流媒体数据块;
需要说明的是,对于其他的源格式以及目标格式,例如源格式为H.264,目标格式为H.264/RTP/UDP,可以采用类似的方式向流媒体数据封装设备发送应用层流媒体数据块;
需要说明的是,所述流媒体服务器可以根据流媒体业务的实时性,确定应用层流媒体数据块中数据包的数目,具体的,对于某些需要考虑用户体验的业务,应用层流媒体数据块中数据包的数目至少要保证不影响用户体验,作为示例而非限定,其中一种具体的实施方式中,流媒体服务器可以根据流媒体数据的平均播放速率以及发送应用层流媒体数据块的发送时间间隔,确定应用层流媒体数据块中数据包的数目,例如,对于在线点播业务,至少按照流媒体数据的平均播放速率发送,以保证播放的连续性,如果流媒体数据的平均播放速率为2Mbit/s,即要求流媒体服务器每秒发送2Mbit的数据,若该应用层流媒体数据块为TS格式的数据,并且应用层流媒体服务器一秒钟向流媒体数据封装设备发送一次应用层流媒体数据块,则要求流媒体服务器每秒发送1400个TS包给流媒体数据封装设备;
需要说明的是,所述应用层流媒体数据块中数据包的数目可以是所述最大整数数目的整数倍,便于流媒体数据封装设备进行封装处理,降低流媒体数据封装设备分段封装的处理复杂度;
需要说明的是,流媒体服务器向流媒体数据封装设备发送应用层流媒体数据块之后,由所述流媒体数据封装设备对所述应用层流媒体数据块进行分段封装处理。
本发明实施例提供的一种流媒体数据处理方法,应用层流媒体数据块中数据包的数目大于一个目标格式的报文能够包含的源格式的数据包的最大整数数目,减少了流媒体服务器与流媒体数据封装设备之间通信的次数,降低了流媒体服务器的处理负荷;其次,流媒体服务器向流媒体数据封装设备发送应用层流媒体数据块,由流媒体数据封装设备对应用层流媒体数据块进行分段封装处理,进一步降低了流媒体服务器的处理负荷;另外,流媒体服务器根据流媒体业务的实时性,确定应用层流媒体数据块中数据包的数目,保证了流媒体数据播放的连续性,提升了用户体验;再次,应用层流媒体数据块中数据包的数目为上述最大整数数目的整数倍,便于流媒体数据封装设备对应用层流媒体数据块进行分段封装处理,简化了封装处理的复杂度。
基于图1所示的架构图,本发明实施例提供另一种流媒体数据处理方法。如图3所示,该方法具体包括:
S301:接收流媒体服务器发送的应用层流媒体数据块;
其中,需要说明的是,本方法实施例的执行主体为流媒体数据封装设备,所述流媒体数据封装设备可包括网卡或具有报文封装功能的设备;
S302:确定所述应用层流媒体数据块的源格式以及目标格式,其中,所述应用层流媒体数据块中数据包的数目大于一个所述目标格式的报文能够包含的所述源格式的数据包的最大整数数目;
作为示例而非限定,以源格式为TS文件或TS流,目标格式为TS/UDP为例,由于一个TS包为188字节,一个UDP头占8字节,因此,一个UDP报文最多包含7个TS包,则应用层流媒体数据块中TS包的数目大于7;
需要说明的是,所述应用层流媒体数据块中数据包的数目为整数;
其中,需要说明的是,确定所述应用层流媒体数据块的源格式以及目标格式的方式,可以包括以下任一方式:
方式一:应用层流媒体数据块携带源格式标识以及目标格式标识,所述流媒体数据封装设备根据所述应用层流媒体数据块携带的源格式标识以及目标格式标识,确定所述应用层流媒体数据块的源格式以及目标格式;
方式二:根据预先保存的配置参数,确定所述应用层流媒体数据块的源格式以及目标格式,其中,所述配置参数包括所述应用层流媒体数据块的源格式标识以及目标格式标识;
S303:根据所述源格式确定每个数据包的大小,根据所述每个数据包的大小以及所述最大整数数目,将所述应用层流媒体数据块中的数据包分段封装成至少两个所述目标格式的报文,其中,分段封装后的每个所述目标格式的报文包含整数个所述源格式的数据包;
其中,将所述应用层流媒体数据块中的数据包分段封装成至少两个所述目标格式的报文的方式,具体包括以下方式:
将所述应用层流媒体数据块中的数据包分为至少两个分段,其中,每个分段包含的数据包的数目为整数且不大于所述最大整数数目;将所述至少两个分段分别封装成所述目标格式的报文;
例如,源格式为TS流或TS文件,目标格式为TS/UDP,则表明需把源格式的TS包封装成TS格式的UDP报文,由于TS包的大小为188字节,MTU的值为1500字节,因此,一个UDP报文最多能携带7个TS包,可以按照不大于7个TS包的分段方式对应用层流媒体数据块进行分段,例如应用层流媒体数据块包含35个TS包,按每5个TS包分为一段的方式,将该应用层流媒体数据块分段封装成7个UDP报文,每个UDP报文的格式如下表所示:
又例如,源格式为TS流或TS文件,目标格式为TS/RTP/UDPTS/RTP/UDP,则表明需首先把多个源格式的TS包加上RTP头封装成RTP(Real-timeTransportProtocol,实时传输协议)格式的包,再把RTP格式的包加上UDP头封装成UDP报文,由于TS包的大小为188字节,UDP头占8个字节,RTP头占12个字节,因此,一个UDP报文最多能携带7个TS包,可以按照不大于7个TS包的分段方式对应用层流媒体数据块进行分段,例如按每5个TS包分为一段的方式,将分段后每个分段封装成UDP报文,RTP格式的UDP报文与TS格式的UDP报文不同之处在于多了一个RTP头,如下表所示:
UDP头 |
RTP头 |
TS包 |
TS包 |
TS包 |
TS包 |
TS包 |
需要说明的是,对于其他的目标格式,可以采用类似的方式扩展流媒体数据封装设备相应的功能,作为示例而非限定,源格式为TS文件或TS流,目标格式为TS/TCP,则按照类似的方式确定TCP报文能够包含的TS包的最大整数数目,并按照类似的方式对应用层流媒体数据块进行分段封装,在此不再赘述;
对于其他的源格式以及目标格式,例如源格式为H.264,目标格式为H.264/RTP/UDP,可采用类似方式扩展流媒体数据封装设备相应的功能,在此不再赘述;
需要说明的是,将应用层流媒体数据块中的数据包分为至少两个分段的方式,可以包括以下方式:
按照所述最大整数数目,将所述应用层流媒体数据块中的数据包分为至少两个分段,例如,在源格式为TS文件或TS流,目标格式为TS/RTP/UDP时,按每7个TS包为一段的方式,对应用层流媒体数据块进行分段,若应用层流媒体数据块包含了1400个TS包,则将该1400个TS包分为200段,每段包含7个TS包,将该200个分段分别封装成RTP格式的UDP报文。
本发明实施例提供的一种流媒体数据处理方法,应用层流媒体数据块中数据包的数目大于一个目标格式的报文能够包含的源格式的数据包的最大整数数目,减少了流媒体服务器与流媒体数据封装设备之间通信的次数,降低了流媒体服务器的处理负荷;其次,流媒体服务器向流媒体数据封装设备发送应用层流媒体数据块,由流媒体数据封装设备对应用层流媒体数据块进行封装,进一步降低了流媒体服务器的处理负荷;另外,流媒体数据封装设备根据应用层流媒体数据块的源格式以及目标格式,对应用层流媒体数据块进行分段封装,使得流媒体数据封装设备可以自适应地对各种类型的应用层流媒体数据块进行封装;再次,通过在应用层流媒体数据块中携带源格式标识以及目标格式标识,使得流媒体数据封装设备可以同时处理多种类型的应用层流媒体数据块;此外,通过预先保存的配置参数获知应用层流媒体数据块的源格式以及目标格式,可以进一步降低流媒体服务器与流媒体数据封装设备之间的通信开销,节省网络带宽;进一步地,流媒体数据封装设备封装得到的目标格式的报文包含整数个源格式的数据包,简化了封装处理的复杂度;再进一步地,流媒体数据封装设备按照目标格式的报文能够包含的源格式的数据包的最大整数数目,将应用层流媒体数据块中的数据包进行分段,使得封装后的目标格式的报文包含最多的数据包,减少了流媒体数据封装设备与客户端之间的通信次数,降低了流媒体数据封装设备的处理负荷。
如图4所示,为本发明实施例提供的一种流媒体数据处理方法的实现流程图,具体包括:
S401:流媒体服务器确定应用层流媒体数据的源格式以及目标格式;
S402:所述流媒体服务器根据所述源格式以及所述目标格式,确定一个所述目标格式的报文能够包含的所述源格式的数据包的最大整数数目;
其中,需要说明的是,所述流媒体服务器根据所述源格式确定所述源格式的数据包的大小,根据所述数据包的大小以及所述目标格式的报文的容量,确定一个所述目标格式的报文能够包含的所述源格式的数据包的最大整数数目;
例如,源格式为TS文件或TS流,目标格式为TS/UDP,TS包的大小为188字节,UDP报文最多1472字节,因此,流媒体服务器根据TS包的大小以及UDP报文的容量,可以确定TS/UDP格式的报文最多能够包含7个TS包;
又例如,源格式为TS文件或TS流,目标格式为TS/RTP/UDP,基于同样的理由,流媒体服务器可以确定TS/RTP/UDP报文最多能够包含7个TS包,对于其他的目标格式,例如TS/TCP,可以采用类似的方式确定目标格式的报文能够包含的源格式的数据包的最大整数数目;
对于其他的源格式以及目标格式,例如源格式为H.264,目标格式为H.264/RTP/UDP,可以采用类似的方式进行判断;
S403:所述流媒体服务器根据所述最大整数数目,确定每次读取应用层流媒体数据的读数据包数目;
其中,需要说明的是,所述流媒体服务器可根据自身缓存大小,确定所述读数据包数目,其中一种具体的实施方式中,所述读数据包数目与自身缓存的大小成正相关关系,所述读数据包数目可随自身缓存的增大而增大,随自身缓存的减小而减小;
需要说明的是,在自身缓存允许的情况下,所述读数据包数目可以尽可能地大;
S404:所述流媒体服务器按照确定的读数据包数目,读取应用层流媒体数据;
其中,需要说明的是,若未读取的数据包数目小于所述读数据包数目,则按实际数据包数目进行读取,否则,按所述读数据包数目进行读取;
S405:流媒体服务器向流媒体数据封装设备发送应用层流媒体数据块,其中,所述应用层流媒体数据块中数据包的数目大于所述最大整数数目;
例如,源格式为TS文件或TS流,目标格式为TS/UDP,一个UDP报文最多能够包含7个TS包,流媒体服务器向流媒体数据封装设备发送的应用层流媒体数据块中TS包的数目大于7,可以减少流媒体服务器与流媒体数据封装设备之间的通信次数,降低流媒体服务器的处理负荷;对于其他目标格式,如TS/RTP/UDP,可以采用类似的方式向流媒体数据封装设备发送应用层流媒体数据块;
需要说明的是,对于其他的源格式以及目标格式,例如源格式为H.264,目标格式为H.264/RTP/UDP,可以采用类似的方式向流媒体数据封装设备发送应用层流媒体数据块;
需要说明的是,所述流媒体服务器可以根据流媒体业务的实时性,确定应用层流媒体数据块中数据包的数目,具体的,对于某些需要考虑用户体验的业务,应用层流媒体数据块中数据包的数目至少要保证不影响用户体验,作为示例而非限定,其中一种具体的实施方式中,流媒体服务器可以根据流媒体数据的平均播放速率以及发送应用层流媒体数据块的发送时间间隔,确定应用层流媒体数据块中数据包的数目,例如,对于在线点播业务,至少按照流媒体数据的平均播放速率发送,以保证播放的连续性,如果流媒体数据的平均播放速率为2Mbit/s,即要求流媒体服务器每秒发送2Mbit的数据,若该应用层流媒体数据块为TS格式的数据,并且应用层流媒体服务器一秒钟向流媒体数据封装设备发送一次应用层流媒体数据块,则要求流媒体服务器每秒发送1400个TS包给流媒体数据封装设备;
需要说明的是,所述应用层流媒体数据块中数据包的数目可以是所述最大整数数目的整数倍,便于流媒体数据封装设备进行封装处理,降低流媒体数据封装设备分段封装的处理复杂度,例如,若应用层流媒体数据块的源格式为TS文件或TS流,目标格式为TS/UDP,则目标格式的UDP报文最多能携带7个TS包,所述流媒体服务器发送的应用层流媒体数据块中数据包的数目为7的整数倍,例如所述流媒体服务器发送的应用层流媒体数据块中数据包的数目为1400,对于其他类型的源格式以及目标格式,例如源格式为H.264,目标格式为H.264/RTP/UDP,可采用类似方式扩展流媒体数据封装设备相应的功能,在此不再赘述;
可选地,在流媒体数据封装设备的缓存允许时,在向流媒体数据封装设备发送应用层流媒体数据块的过程中,流媒体服务器可以尽可能多地增加一次性向流媒体数据封装设备发送数据包的数目,以减少流媒体服务器和流媒体数据封装设备通信的次数,进一步减轻流媒体服务器的处理负荷;
需要说明的是,若流媒体服务器读取的数据包的数目不足所述最大整数数目,则按照实际读取的数据包数目,向流媒体数据封装设备发送应用层流媒体数据块;
优选地,所述读数据包数目可以大于或等于所述最大整数数目;
其中,需要指出的是,本发明实施例并不限定流媒体服务器向流媒体数据封装设备发送应用层流媒体数据块的具体方式,作为示例而非限定,流媒体服务器可以通过自定义一个新的套接字结构类型,在该结构中包含应用层流媒体数据块的源格式标识、目标格式标识以及净荷等,如下表所示:
其中,ST为源格式标识,用于表示应用层流媒体数据块的源格式,标识DT为目标格式标识,用于表示应用层流媒体数据块的目标格式,Block_SN为应用层流媒体数据块的块序号,TimeStamp为时间戳,由于Block_SN值和TimeStamp值是有规律的,其中,TimeStamp初始值为随机值,只要得到该随机值就可以对应用层流媒体数据块进行处理,Length为净荷长度,Payload为净荷,例如,对于源格式为TS流或TS文件的应用层流媒体数据块,对于第一个应用层流媒体数据块,ST=1,DT=1,Block-SN=1,Timestamp为初始随机值,Length=1400,表示Payload中包含1400个TS包;
需要说明的是,流媒体服务器还可以利用已定义的套接字结构类型,将应用层流媒体数据块发送到流媒体数据封装设备;
需要进一步说明的是,若所述流媒体数据封装设备没有打开分段封装功能,所述流媒体服务器指示所述流媒体数据封装设备打开分段封装功能,以便所述流媒体数据封装设备对所述流媒体服务器发送的流媒体数据块进行分段封装;
S406:流媒体数据封装设备确定所述应用层流媒体数据块的源格式以及目标格式;
其中,需要说明的是,确定所述应用层流媒体数据块的源格式以及目标格式的方式,可以包括以下任一方式:
方式一:所述应用层流媒体数据块携带源格式标识以及目标格式标识,所述流媒体数据封装设备根据所述应用层流媒体数据块携带的源格式标识以及目标格式标识,确定所述应用层流媒体数据块的源格式以及目标格式,例如,在上述自定义的套接字结构类型中,通过ST标识以及DT标识,确定应用层流媒体数据块的源格式以及目标格式;
方式二:根据预先保存的配置参数,确定所述应用层流媒体数据块的源格式以及目标格式,其中,所述配置参数包括所述应用层流媒体数据块的源格式标识以及目标格式标识;
其中,需要说明的是,在获取预先保存的配置参数之前,所述流媒体数据封装设备可以预先接收所述流媒体服务器发送的配置参数,并保存所述配置参数,以便流媒体数据封装设备接收到流媒体服务器发送的应用层流媒体数据块时,根据预先保存的配置参数确定应用层流媒体数据块的源格式以及目标格式;
需要说明的是,流媒体服务器可以根据自定义的套接字(Socket)或已定义的套接字,向流媒体数据封装设备发送配置参数,以源格式为TS文件或TS流,目标格式为TS/UDP报文为例,所述已定义的套接字可采用传统UDP报文类型的套接字,作为示例而非限定,其中一种具体的实施方式中,可通过自定义的套接字选项或者已定义的套接字选项,向流媒体数据封装设备发送所述配置参数,例如,可定义一个SOL_UDP层或SOL_SOCKET层的选项SO_MEDIA,同时定义配置参数数据结构及其指针,通过函数setsockopt向所述流媒体数据封装设备发送所述配置参数;在另一种具体的实施方式中,对所述配置参数中每个需要配置的参数选项定义一个配置选项,使用函数setsockopt向流媒体数据封装设备发送所述配置参数,例如,定义一个源格式是TS文件或TS流,目标格式是TS/UDP的开关选项SO_MEDIA_TS,其中一种具体的实施方式中,该开关选项SO_MEDIA_TS的值为布尔类型,可以取值Ture或False,取值为Ture表示源格式为TS格式,目标格式为TS/UDP,流媒体数据封装设备接收到TS格式的应用层流媒体数据块后,将所述TS格式的应用层流媒体数据块分段封装成TS格式的UDP报文;也可以定义一个源格式配置选项SO_MEDIA_SOURCE,该SO_MEDIA_SOURCE选项的值为枚举类型,例如该SO_MEDIA_SOURCE的值包括SO_MEDIA_SOURCE_TS,SO_MEDIA_SOURCE_H.264等;
其中,需要说明的是,定义配置参数数据结构具体是指定义所述源格式标识的数据结构以及、所述目标格式标识的数据结构;
S407:所述流媒体数据封装设备根据所述源格式确定每个数据包的大小;
例如,若源格式为TS文件或TS流,所述流媒体数据封装设备确定每个TS包的大小为188字节;
S408:所述流媒体数据封装设备根据所述每个数据包的大小以及所述最大整数数目,将所述应用层流媒体数据块中的数据包分段封装成至少两个所述目标格式的报文,其中,分段封装后的每个所述目标格式的报文包含整数个所述源格式的数据包;
其中,将所述应用层流媒体数据块中的数据包分段封装成至少两个所述目标格式的报文的方式,具体包括以下方式:
将所述应用层流媒体数据块中的数据包分为至少两个分段,其中,每个分段包含的数据包的数目为整数且不大于所述最大整数数目;将所述至少两个分段分别封装成所述目标格式的报文;
例如,源格式为TS流或TS文件,目标格式为TS/UDP,则表明需把源格式的TS包封装成TS格式的UDP报文,由于TS包的大小为188字节,MTU的值为1500字节,因此,一个UDP报文最多能携带7个TS包,可以按照不大于7个TS包的分段方式对应用层流媒体数据块进行分段,例如应用层流媒体数据块包含35个TS包,按每5个TS包分为一段的方式,将该应用层流媒体数据块分段封装成7个UDP报文,每个UDP报文的格式如下表所示:
又例如,源格式为TS流或TS文件,目标格式为TS/RTP/UDPTS/RTP/UDP,则表明需首先把多个源格式的TS包加上RTP头封装成RTP(Real-timeTransportProtocol,实时传输协议)格式的包,再把RTP格式的包加上UDP头封装成UDP报文,由于TS包的大小为188字节,UDP头占8个字节,RTP头占12个字节,因此,一个UDP报文最多能携带7个TS包,可以按照不大于7个TS包的分段方式对应用层流媒体数据块进行分段,例如按每5个TS包分为一段的方式,将分段后每个分段封装成UDP报文,RTP格式的UDP报文与TS格式的UDP报文不同之处在于多了一个RTP头,如下表所示:
UDP头 |
RTP头 |
TS包 |
TS包 |
TS包 |
TS包 |
TS包 |
需要说明的是,对于其他的目标格式,可以采用类似的方式扩展流媒体数据封装设备相应的功能,作为示例而非限定,源格式为TS文件或TS流,目标格式为TS/TCP,则按照类似的方式确定TCP报文能够包含的TS包的最大整数数目,并按照类似的方式对应用层流媒体数据块进行分段封装,在此不再赘述;
对于其他的源格式以及目标格式,例如源格式为H.264,目标格式为H.264/RTPUDP,可采用类似方式扩展流媒体数据封装设备相应的功能,在此不再赘述;
需要说明的是,将应用层流媒体数据块中的数据包分为至少两个分段的方式,可以包括以下方式:
按照所述最大整数数目,将所述应用层流媒体数据块中的数据包分为至少两个分段,例如,在源格式为TS文件或TS流,目标格式为TS/RTP/UDP时,按每7个TS包为一段的方式,对应用层流媒体数据块进行分段,若应用层流媒体数据块包含了1400个TS包,则将该1400个TS包分为200段,每段包含7个TS包,将该200个分段分别封装成RTP格式的UDP报文;
S409:流媒体数据封装设备向客户端发送分段封装得到的每个所述目标格式的报文;
其中,需要说明的是,流媒体数据封装设备向客户端发送分段封装得到的每个目标格式的报文的方式,可以具体包括以下方式:
按照预先保存的发送参数,依次向所述客户端发送分段封装得到的每个所述目标格式的报文,其中,所述发送参数包括发送速率以及发送时间间隔;
需要说明的是,获取预先保存的发送参数之前,所述流媒体数据封装设备可以预先接收所述流媒体服务器发送的发送参数,并保存所述发送参数;
需要说明的是,可以在流媒体服务器通过套接字选项向流媒体数据封装设备发送配置参数的同时,向流媒体数据封装设备发送所述发送参数,作为示例而非限定,若源格式为TS文件或TS流,目标格式为TS/UDP,可以通过自定义的套接字选项或者已定义的套接字选项,向流媒体数据封装设备发送所述配置参数以及所述发送参数,例如,可以定义一个SOL_UDP层或SOL_SOCKET层的选项SO_MEDIA,同时定义配置参数数据结构以及发送参数数据结构,通过函数setsocketopt向所述流媒体数据封装设备发送所述配置参数以及所述发送参数;在另一种具体的实施方式中,对所述配置参数以及所述发送参数中每个需要配置的参数选项定义一个配置选项,使用函数setsockopt向流媒体数据封装设备发送所述配置参数以及发送参数,例如,发送参数包括两个参数选项,即发送速率以及发送时间间隔,对于发送参数则定义两个配置选项,分别对于发送速率以及发送时间间隔,配置参数的情况与此类似,在此不再赘述;
可选地,所述发送参数还可以包括缓存区大小,所述流媒体数据封装设备按照所述缓存区大小设置缓存。
本发明实施例提供的方法实施例,应用层流媒体数据块中数据包的数目大于一个目标格式的报文能够包含的源格式的数据包的最大整数数目,减少了流媒体服务器与流媒体数据封装设备之间通信的次数,降低了流媒体服务器的处理负荷;其次,流媒体服务器向流媒体数据封装设备发送应用层流媒体数据块,由流媒体数据封装设备对应用层流媒体数据块进行封装,进一步降低了流媒体服务器的处理负荷;另外,流媒体数据封装设备根据应用层流媒体数据块的源格式以及目标格式,对应用层流媒体数据块进行分段封装,使得流媒体数据封装设备可以自适应地对各种类型的应用层流媒体数据块进行封装;再次,通过在应用层流媒体数据块中携带源格式标识以及目标格式标识,使得流媒体数据封装设备可以同时处理多种类型的应用层流媒体数据块;此外,通过预先保存的配置参数获知应用层流媒体数据块的源格式以及目标格式,可以进一步降低流媒体服务器与流媒体数据封装设备之间的通信开销,节省网络带宽;进一步地,流媒体数据封装设备封装的目标格式的报文包含整数个源格式的数据包,简化了封装处理的复杂度;再进一步地,流媒体数据封装设备按照目标格式的报文能够包含的源格式的数据包的最大整数数目,将应用层流媒体数据块中的数据包进行分段,使得封装后的每一个目标格式的报文包含最多的数据包,减少了流媒体数据封装设备与客户端之间的通信次数,降低了流媒体数据封装设备的处理负荷;除此之外,流媒体服务器根据流媒体业务的实时性,确定应用层流媒体数据块中数据包的数目,保证了流媒体数据播放的连续性,提升了用户体验;并且,应用层流媒体数据块中数据包的数目为上述最大整数数目的整数倍,便于流媒体数据封装设备对应用层流媒体数据块进行分段封装处理,简化了封装处理的复杂度;最后,流媒体数据封装设备根据预先保存的发送参数向客户端发送目标格式的报文,使得流媒体数据封装设备可以自适应地向客户端发送目标格式的报文,从而保证能够满足业务的需求。
如图5所示,为本发明实施例提供的一种流媒体数据处理系统,包括流媒体服务器501,流媒体数据封装设备502,其中,
所述流媒体服务器501,用于确定应用层流媒体数据的源格式以及目标格式,根据所述源格式以及所述目标格式,确定一个所述目标格式的报文能够包含的所述源格式的数据包的最大整数数目后,向所述流媒体数据封装设备502发送应用层流媒体数据块,其中,所述应用层流媒体数据块中数据包的数目大于所述最大整数数目;
所述流媒体数据封装设备502,用于接收所述流媒体服务器501发送的应用层流媒体数据块,确定所述应用层流媒体数据块的源格式以及目标格式,根据所述源格式确定所述应用层流媒体数据块中每个数据包的大小,根据所述每个数据包的大小以及所述最大整数数目,将所述应用层流媒体数据块中的数据包分段封装成至少两个所述目标格式的报文,其中,分段封装后的每个所述目标格式的报文包含整数个所述源格式的数据包。
本发明实施例提供的一种流媒体数据处理系统,应用层流媒体数据块中数据包的数目大于一个目标格式的报文能够包含的源格式的数据包的最大整数数目,减少了流媒体服务器与流媒体数据封装设备之间通信的次数,降低了流媒体服务器的处理负荷;其次,流媒体服务器向流媒体数据封装设备发送应用层流媒体数据块,由流媒体数据封装设备对应用层流媒体数据块进行分段封装处理,进一步降低了流媒体服务器的处理负荷。
如图6所示,为本发明实施例提供的一种流媒体服务器,所述流媒体服务器可以应用于上述的流媒体数据处理系统,所述流媒体服务器包括:
确定器601,用于确定应用层流媒体数据的源格式以及目标格式;
所述确定器601还用于根据所述源格式以及所述目标格式,确定一个所述目标格式的报文能够包含的所述源格式的数据包的最大整数数目;
发送器602,用于向流媒体数据封装设备发送应用层流媒体数据块,其中,所述应用层流媒体数据块中数据包的数目大于所述确定器601确定的最大整数数目。
其中,需要说明的是,所述确定器601还用于根据流媒体业务的实时性,确定所述应用层流媒体数据块中数据包的数目。
需要进一步说明的是,所述确定器601具体用于根据流媒体数据的平均播放速率以及发送所述应用层流媒体数据块的发送时间间隔,确定所述应用层流媒体数据块中数据包的数目。
需要说明的是,所述发送器602还用于向所述流媒体数据封装设备发送配置参数,所述配置参数包括源格式标识以及目标格式标识,使得所述流媒体数据封装设备根据所述配置参数将所述应用层流媒体数据块分段封装成至少两个所述目标格式的报文。
需要说明的是,所述发送器602还用于向所述流媒体数据封装设备发送发送参数,所述发送参数包括发送速率以及发送时间间隔,使得所述流媒体数据封装设备根据所述发送参数,依次向客户端发送分段封装得到的每个所述目标格式的报文。
需要说明的是,所述确定器601还用于根据所述最大整数数目,确定每次读取应用层流媒体数据的读数据包数目;
则,所述服务器还包括:
数据读取器,用于按照所述确定器602确定的读数据包数目,读取应用层流媒体数据。
需要说明的是,所述确定器601确定的读数据包数目可以大于所述最大整数数目。
本发明实施例提供的一种流媒体服务器,发送器向流媒体数据封装设备发送的应用层流媒体数据块中数据包的数目大于一个目标格式的报文能够包含的源格式的数据包的最大整数数目,减少了流媒体服务器与流媒体数据封装设备之间通信的次数,降低了流媒体服务器的处理负荷;其次,发送器向流媒体数据封装设备发送应用层流媒体数据块,由流媒体数据封装设备对应用层流媒体数据块进行分段封装处理,进一步降低了流媒体服务器的处理负荷;另外,确定器根据流媒体业务的实时性,确定应用层流媒体数据块中数据包的数目,保证了流媒体数据播放的连续性,提升了用户体验。
如图7所示,为本发明实施例提供的一种流媒体数据封装设备,所述流媒体数据封装设备可以应用于上述的流媒体数据处理系统,所述流媒体数据封装设备包括:
接收器701,用于接收流媒体服务器发送的应用层流媒体数据块;
确定器702,用于确定所述接收器701接收到的应用层流媒体数据块的源格式以及目标格式,其中,所述接收器接收到的应用层流媒体数据块中数据包的数目大于一个所述目标格式的报文能够包含的所述源格式的数据包的最大整数数目;
所述确定器702还用于根据所述源格式确定每个数据包的大小;
分段封装器703,用于根据所述确定器702确定的每个数据包的大小以及所述最大整数数目,将所述接收器701接收到的应用层流媒体数据块中的数据包分段封装成至少两个所述目标格式的报文,其中,分段封装后的每个所述目标格式的报文包含整数个所述源格式的数据包。
其中,需要说明的是,所述分段封装器703包括:
分段器,用于根据所述确定器702确定的每个数据包的大小以及所述最大整数数目,将所述应用层流媒体数据块中的数据包分为至少两个分段,其中,每个分段包含的数据包的数目为整数且不大于所述最大整数数目;
封装器,用于将所述分段器分段得到的至少两个分段分别封装成所述目标格式的报文。
需要说明的是,所述分段器具体用于按照所述最大整数数目,将所述应用层流媒体数据块中的数据包分为至少两个分段。
需要说明的是,所述接收器701具体用于接收所述流媒体服务器发送的应用层流媒体数据块,所述应用层流媒体数据块中数据包的数目为所述最大整数数目的整数倍。
需要进一步说明的是,所述接收器701具体用于接收所述流媒体服务器发送的应用层流媒体数据块,其中,所述流媒体服务器根据业务的实时性,确定所述应用层流媒体数据块中数据包的数目,其中一种具体的实施方式中,所述流媒体服务根据流媒体数据的平均播放速率以及发送所述应用层流媒体数据块的发送时间间隔,确定所述应用层流媒体数据块中数据包的数目。
需要说明的是,所述确定器702具体用于根据所述接收器701接收到的应用层流媒体数据块携带的源格式标识以及目标格式标识,确定所述应用层流媒体数据块的源格式以及目标格式。
需要说明的是,所述确定器702还可以具体用于根据预先保存的配置参数,确定所述接收器701接收到的应用层流媒体数据块的源格式以及目标格式,其中,所述配置参数包括所述应用层流媒体数据块的源格式标识以及目标格式标识。
需要进一步说明的是,所述接收器701还用于预先接收所述流媒体服务器发送的的配置参数;
则,所述设备还包括:
第一存储器,用于保存所述接收器701接收到的配置参数。
需要说明的是,所述设备还包括:
发送器,用于向客户端发送所述分段封装器703封装得到的每个目标格式的报文。
需要说明的是,所述发送器具体用于按照预先保存的发送参数,依次向所述客户端发送所述分段封装器703封装得到的每个目标格式的报文,其中,所述发送参数包括发送速率以及发送时间间隔。
需要进一步说明的是,所述接收器701还用于预先接收所述流媒体服务器发送的发送参数;
则,所述设备还包括:
第二存储器,用于保存所述接收器701接收到的发送参数。
本发明实施例提供的一种流媒体数据处理方法、装置及系统,应用层流媒体数据块中数据包的数目大于一个目标格式的报文能够包含的源格式的数据包的最大整数数目,减少了流媒体服务器与流媒体数据封装设备之间通信的次数,降低了流媒体服务器的处理负荷;其次,流媒体服务器向流媒体数据封装设备发送应用层流媒体数据块,由流媒体数据封装设备对应用层流媒体数据块进行封装,进一步降低了流媒体服务器的处理负荷;另外,流媒体数据封装设备根据应用层流媒体数据块的源格式以及目标格式,对应用层流媒体数据块进行分段封装,使得流媒体数据封装设备可以自适应地对各种类型的应用层流媒体数据块进行封装;再次,通过在应用层流媒体数据块中携带源格式标识以及目标格式标识,使得流媒体数据封装设备可以同时处理多种类型的应用层流媒体数据块;此外,通过预先保存的配置参数获知应用层流媒体数据块的源格式以及目标格式,可以进一步降低流媒体服务器与流媒体数据封装设备之间的通信开销,节省网络带宽;进一步地,流媒体数据封装设备封装的目标格式的报文包含整数个源格式的数据包,简化了封装处理的复杂度;再进一步地,流媒体数据封装设备按照目标格式的报文能够包含的源格式的数据包的最大整数数目,将应用层流媒体数据块中的数据包进行分段,使得封装后的每一个目标格式的报文包含最多的数据包,减少了流媒体数据封装设备与客户端之间的通信次数,降低了流媒体数据封装设备的处理负荷;除此之外,应用层流媒体数据块中数据包的数目为上述最大整数数目的整数倍,便于流媒体数据封装设备对应用层流媒体数据块进行分段封装处理,简化了封装处理的复杂度;并且,流媒体服务器根据流媒体业务的实时性,确定应用层流媒体数据块中数据包的数目,保证了流媒体数据播放的连续性,提升了用户体验;进一步地,流媒体服务器根据根据流媒体数据的平均播放速率以及发送所述应用层流媒体数据块的发送时间间隔,向流媒体数据封装设备发送应用层流媒体数据块,使得能够满足实时业务的需求;最后,流媒体数据封装设备根据预先保存的发送参数向客户端发送目标格式的报文,使得流媒体数据封装设备可以自适应地向客户端发送目标格式的报文,从而保证能够满足业务的需求。
通过以上实施方式的描述,本领域技术人员可以清楚地了解到各实施方式可以借助软件加必需的通用硬件平台的方式来实现,也可以通过专门的硬件来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁盘、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,网络设备,或者各种手持终端)执行各个实施例或者实施例的某些部分所述的方法。
总之,以上所述仅为本发明技术方案的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。