一种多媒体流的识别方法、装置及设备的制作方法

文档序号:7777967阅读:153来源:国知局
一种多媒体流的识别方法、装置及设备的制作方法
【专利摘要】本发明实施例提供了一种多媒体流的识别方法、装置及设备,根据获取的RTSP包中携带的、用于标识传输多媒体流所采用的传输机制的传输机制参数值,确定是否采用TCP协议传输所述多媒体流;当确定采用TCP协议传输多媒体流时,根据获取的RTSP包中携带的、用于标识不同类型的多媒体流在传输时分别使用的传输通道的通道参数值,确定不同类型的多媒体流在传输时分别使用的传输通道的通道标识;在接收多媒体流时,根据接收的多媒体流在传输时使用的传输通道的通道标识,识别接收的多媒体流的类型。实现了对基于TCP传输的流媒体数据包进行识别。本发明涉及网络通信领域。
【专利说明】一种多媒体流的识别方法、装置及设备
【技术领域】
[0001]本发明涉及网络通信【技术领域】,尤其涉及一种多媒体流的识别方法、装置及设备。【背景技术】
[0002]现有技术中的多媒体流的传输方式为:将音频、视频、以及多媒体文件按照指定格式生成多个压缩包,并按照流的方式进行传输。接收到多媒体流的用户,不必等待整个多媒体流传输完毕,就能够在多媒体流传输的过程中,解压并播放音频、视频、以及多媒体文件,实现了多媒体数据的实时传输。
[0003]目前,常用的与多媒体流传输相关的网络协议主要包括如下几种:实时传输协议(RTP, Real-time Transport Protocol)、实时传输控制协议(RTCP, Real-time TransportControl Protocol)、以及实时流协议(RTSP, Real Time Streaming Protocol)。
[0004]RTP被定义为传输音频、视频、以及多媒体文件等实时数据的传输协议,与传统的注重高可靠的数据传输的传输层协议相比,RTP更加侧重数据传输的实时性。因此,RTP本身并不能为按顺序传送多媒体数据包提供可靠的传输机制,也不提供流量控制或拥塞控制,而是由RTCP提供这些服务。在RTP会话期间,各参与者周期性地传送RTCP包。RTCP包中含有已发送的数据包的数量、丢失的数据包的数量等统计资料,因此,服务器可以利用这些信息动态地改变传输速率,甚至改变有效载荷类型。RTP和RTCP配合使用,能以有效的反馈和最小的开销使传输效率最佳化。RTSP是应用层协议,常与RTP结合使用,在多媒体流传输的启动阶段负责服务器和客户端之间的、与传输相关参数的协商。
[0005]但是,Internet环境是复杂多变的,流媒体文件在传输过程中,容易出现分片、丢包、乱序等现象,导致客户端在对接收到多媒体流进行播放时,出现唇音不同步、卡顿、马赛克等现象。因此,在多媒体流传输的中间节点(例如:路由器)上提前识别多媒体数据包,并对识别出的多媒体数据包中的多媒体数据进行重新排序和音视频同步等处理,能够避免在客户端播放多媒体流时出现的上述问题。
[0006]现有技术中,RTP通常基于UDP进行传输,因此,现有技术中能够识别的流媒体数据包,通常是基于UDP进行传输的,又由于UDP是不可靠的传输协议,越来越多的多媒体流开始基于TCP进行传输,因此,对基于TCP传输的流媒体数据包进行识别成为亟待解决的问题。

【发明内容】

[0007]本发明实施例提供了一种多媒体流的识别方法、装置及设备,用以解决现有技术中无法对基于TCP传输的流媒体数据包进行识别的问题。
[0008]基于上述问题,本发明实施例提供的一种多媒体流的识别方法,包括:
[0009]根据获取的实时流协议RTSP包中携带的、用于标识传输多媒体流所采用的传输机制的传输机制参数值,确定是否采用TCP协议传输所述多媒体流;
[0010]当确定采用TCP协议传输所述多媒体流时,根据所述获取的RTSP包中携带的、用于标识不同类型的多媒体流在传输时分别使用的传输通道的通道参数值,确定所述不同类型的多媒体流在传输时分别使用的传输通道的通道标识,其中,多媒体流的类型包括视频数据流、音频数据流、视频控制流、以及音频控制流;
[0011]在接收多媒体流时,根据接收的多媒体流在传输时使用的传输通道的通道标识,识别接收的多媒体流的类型。
[0012]本发明实施例提供的一种多媒体流的识别装置,包括:
[0013]传输机制确定模块,用于根据获取的实时流协议RTSP包中携带的、用于标识传输多媒体流所采用的传输机制的传输机制参数值,确定是否采用TCP协议传输所述多媒体流;
[0014]通道标识确定模块,用于当确定采用TCP协议传输所述多媒体流时,根据所述获取的RTSP包中携带的、用于标识不同类型的多媒体流在传输时分别使用的传输通道的通道参数值,确定所述不同类型的多媒体流在传输时分别使用的传输通道的通道标识,其中,多媒体流的类型包括视频数据流、音频数据流、视频控制流、以及音频控制流;
[0015]多媒体类型确定模块,用于在接收多媒体流时,根据接收的多媒体流在传输时使用的传输通道的通道标识,识别接收的多媒体流的类型。
[0016]本发明实施例提供的一种多媒体流的识别设备,包括:上述的多媒体流的识别装置。
[0017]本发明实施例的有益效果包括:
[0018]本发明实施例提供的一种多媒体流的识别方法、装置及设备,根据获取的RTSP包中携带的、用于标识传输多媒体流所采用的传输机制的传输机制参数值,确定是否采用TCP协议传输所述多媒体流;当确定采用TCP协议传输多媒体流时,根据获取的RTSP包中携带的、用于标识不同类型的多媒体流在传输时分别使用的传输通道的通道参数值,确定不同类型的多媒体流在传输时分别使用的传输通道的通道标识;在接收多媒体流时,根据接收的多媒体流在传输时使用的传输通道的通道标识,识别接收的多媒体流的类型。实现了对基于TCP传输的流媒体数据包进行识别,因此,可以对识别出的多媒体流的类型为多媒体数据流中的多媒体数据进行重新排序、音视频同步等处理,避免了在客户端播放多媒体流时出现唇音不同步、卡顿、马赛克等问题。
【专利附图】

【附图说明】
[0019]图1为本发明实施例提供的一种多媒体流的识别方法的流程图;
[0020]图2为本发明实施例1提供的一种多媒体流的识别方法的流程图;
[0021]图3为本发明实施例2提供的一种多媒体流的识别方法的流程图;
[0022]图4为本发明实施例3提供的一种多媒体流的识别方法的流程图;
[0023]图5为本发明实施例4提供的确定TCP载荷中包含的interleaved frame的方法的流程图;
[0024]图6a-图6d为本发明实施例提供的通过软件抓取的RTSP包以及RTP数据包图;
[0025]图7为本发明实施例提供的一种多媒体流的识别装置的结构示意图。
【具体实施方式】[0026]本发明实施例提供了一种多媒体流的识别方法、装置及设备,以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0027]本发明实施例提供一种多媒体流的识别方法,如图1所示,包括:
[0028]S101、根据获取的RTSP包中携带的、用于标识传输多媒体流所采用的传输机制的传输机制参数值,确定是否采用TCP协议传输多媒体流。
[0029]S102、当确定采用TCP协议传输所述多媒体流时,根据获取的RTSP包中携带的、用于标识不同类型的多媒体流在传输时分别使用的传输通道的通道参数值,确定不同类型的多媒体流在传输时分别使用的传输通道的通道标识,其中,多媒体流的类型包括视频数据流、音频数据流、视频控制流、以及音频控制流。
[0030]S103、在接收多媒体流时,根据接收的多媒体流在传输时使用的传输通道的通道标识,识别接收的多媒体流的类型。
[0031]进一步地,本发明提供的一种多媒体流的识别方法可以应用在多媒体流传输的中间节点(例如:路由器)上提前识别多媒体数据包。
[0032]进一步地,在上述步骤SlOl之前,还可以包括判断获取的数据包是否为RTSP包的步骤。由于协议规定RTSP的对应端口为554,当获取到目的端口为554的数据包时,可以确定该获取的数据包为RTSP数据包。也就是说,可以通过RTSP对应的端口,识别获取的数据包是否为RTSP包。
[0033]进一步地,上述获取目的端口为554的数据包,是由于上述步骤SlOl中获取的数据包为客户端发送给服务器的RTSP包。例如下述应用场景:当客户端通过网络观看视频,点击播放按钮之后,客户端会向视频所在的服务器发送RTSP包,对后续传输多媒体流进行传输参数协商,在位于多媒体流传输的路由器上获取该RTSP包,目的端口为554。
[0034]下面结合附图,用具体实施例对本发明提供的方法及相关设备进行详细描述。
[0035]实施例1:
[0036]本发明实施例1,如图2所示,具体包括如下步骤:
[0037]S201、判断获取的RTSP包中携带的方法标识是否为设置(SETUP),若是,则进入步骤S202 ;若否,则继续对后续RTSP包进行解析,本流程结束。
[0038]S202、若是,贝U进一步判断获取的RTSP包中携带的传输(transport)参数的第一个参数值,是否为RTP/AVP/TCP,若是,则进入步骤S203 ;若否,则继续对后续RTSP数据包进行解析,本流程结束。
[0039]本步骤中,方法标识为SETUP的RTSP数据包中,携带了 transport参数,transport参数的第一个参数值,表征了多媒体数据流的传输机制,即基于UDP传输还是基于TCP传输。
[0040]本步骤中,AVP为audio video profile的缩写,中文解释为:音视频规格。
[0041]S203、确定采用TCP协议传输多媒体流。
[0042]S204、当确定采用TCP协议传输所述多媒体流时,根据获取的RTSP包中携带的、用于标识不同类型的多媒体流在传输时分别使用的传输通道的通道参数值,确定不同类型的多媒体流在传输时分别使用的传输通道的通道标识,其中,多媒体流的类型包括视频数据流、视频控制流、音频数据流和音频控制流。
[0043]进一步地,视频数据流和音频数据流通常可以基于RTP协议进行传输,统称为多媒体数据流,视频控制流和音频控制流通常可以基于RTCP协议进行传输,统称为多媒体控制流。
[0044]S205、在接收多媒体流时,根据接收的多媒体流在传输时使用的传输通道的通道标识,识别接收的多媒体流的类型。
[0045]实施例2:
[0046]本发明实施例2提供的一种多媒体流的识别方法,如图3所示,具体包括如下步骤:
[0047]S301、根据获取的RTSP包中携带的、用于标识传输多媒体流所采用的传输机制的传输机制参数值,确定是否采用TCP协议传输多媒体流。
[0048]S302、当确定采用TCP协议传输多媒体流时,获取并记录获取的RTSP包携带的请求(Request)参数的轨道识别符(trackID)参数值,以及transport参数的交错(interleaved)参数值。
[0049]本步骤中,transport参数的第三个参数为interleaved参数,interleaved参数的参数值通常为两个连续整数,该两个连续整数中,较小值标识多媒体数据流(即RTP数据流)传输通道的通道标识,较大值标识多媒体控制流(即RTCP数据流)传输通道的通道标识。
[0050]进一步地,服务器可以将RTP数据和该RTP数据的控制数据(RTCP数据)分别进行传输,也可以在同一个数据包中进行传输。但是,不论是分别进行传输还是在同一个数据包中进行传输,RTP数据和RTCP数据都有各自的传输通道,并在进行多媒体数据传输之前,客户端与服务器进行参数协商时,为RTP数据和RTCP控制数据分配不同的传输通道,并通过interleaved参数携带传输通道的通道标识。
[0051]S303、判断是否存在在先获取的RTSP包,其中,在先获取的RTSP包为在获取到上述获取的RTSP包之前获取到的、方法标识为SETUP的RTSP包。若存在,则进入步骤S304 ;否则,进入步骤S307。
[0052]进一步地,在传输多媒体数据时,可以只有视频数据,也可以既有视频数据又有音频数据,可以通过trackID参数值标识当前协商的参数值为视频数据的传输参数值还是音频数据的传输参数值。根据RTSP协议的规定,当同时传输视频流和音频流时,可以通过两个RTSP包分别对视频流和音频流传输参数进行设置,并且该两个RTSP包分别携带的trackID中,较小trackID值所在RTSP包表征视频流使用的传输参数,较大trackID值所在RTSP包表征音频流使用的传输参数。
[0053]进一步地,由于在每个RTSP包中,仅包含一个trackID参数值,因此当接收到一个方法标识为SETUP的RTSP包时,可以将该RTSP包中的trackID参数值保存,并接收下一个方法标识为SETUP的RTSP包,并将该下一个RTSP包中的trackID参数值保存,将两个trackID参数值进行比较,其中,较小trackID参数值所在的RTSP包中协商的传输参数,为传输视频流使用的传输参数(即较小trackID参数值所在的RTSP包中interleaved参数中,较小值为视频数据流使用的传输通道的通道标识,较大值为视频控制流使用的传输通道的通道标识),较大trackID参数值所在的RTSP包中协商的传输参数,为传输音频流使用的传输参数(即较小trackID参数值所在的RTSP包中interleaved参数中,较小值为音频数据流使用的传输通道的通道标识,较大值为音频控制流使用的传输通道的通道标识)。因此,通过将在先接收到的RTSP包以及在后接收到的RTSP包中分别包含的trackID参数值以及interleaved参数值相结合,就可以判断出传输的多媒体流中,音频数据流使用的传输通道的通道标识、音频控制流使用的传输通道的通道标识、视频数据流使用的传输通道的通道标识、以及视频控制流使用的传输通道的通道标识。
[0054]S304、若存在,则执行比较操作,将上述获取的RTSP包携带的trackID参数值与预先记录的在先获取的RTSP包携带的trackID参数值进行比较。
[0055]进一步地,在针对一次多媒体流传输进行参数协商时,携带SETUP方法标识的RTSP包可能存在一个或者两个,当存在一个携带SETUP方法标识的RTSP包时,表征此次将要传输的多媒体流为视频流或者音频流(一般单纯的音频流不使用RTP协议进行传输),当存在两个携带SETUP方法标识的RTSP包时,表征此次将要传输的多媒体流包括视频流和音频流,该两个携带SETUP方法标识的RTSP包中,一个为针对视频流传输参数的协商,另一个为针对音频流传输参数的协商。该两个携带SETUP方法标识的RTSP包中,均携带有trackID参数值,当接收到第一个携带SETUP方法标识的RTSP包时,可以先将该第一个RTSP包中的trackID参数值存储,若能接收到第二个携带SETUP方法标识的RTSP包,则获取该第二个RTSP包中的trackID参数值,并与第一个RTSP包中的trackID参数值进行比较,其中,较小trackID值所属的RTSP包为针对视频流传输参数的设置,较大trackID值所属的RTSP包为针对音频流传输参数的设置。
[0056]S305、根据比较结果,将较小的trackID参数值所在的RTSP包中,携带的transport参数的interleaved参数值中,最小值确定为视频数据流使用的传输通道的通道标识,最大值确定为视频控制流使用的传输通道的通道标识。
[0057]S306、将较大的trackID参数值所在的RTSP包中,携带的transport参数的interleaved参数值中,最小值确定为音频数据流使用的传输通道的通道标识,最大值确定为音频控制流使用的传输通道的通道标识。进入步骤S310。
[0058]步骤S305与步骤S306的执行没有严格的先后顺序。
[0059]S307、获取下一个方法标识为SETUP的RTSP包。若能够获取到,则进入步骤S308 ;否则,进入步骤S309。
[0060]S308、若能够获取到下一个方法标识为SETUP的RTSP包,则针对该下一个RTSP包和所述获取的RTSP包,执行S304中的比较操作。进入步骤S310。
[0061]S309、若未能获取到下一个方法标识为SETUP的RTSP包,则将获取的RTSP包中,携带的transport参数的interleaved参数值中,最小值确定为视频数据流使用的传输通道的通道标识,最大值确定为视频控制流使用的传输通道的通道标识。
[0062]进一步地,本步骤中,由于一般单纯的音频流不使用RTP协议进行传输,因此,若未能获取到下一个方法标识为SETUP的RTSP包,则可以认为传输的多媒体流只有视频流,而没有音频流,因此,可以直接将interleaved参数值中,最小值确定为视频数据流使用的传输通道的通道标识,最大值确定为视频控制流使用的传输通道的通道标识。
[0063]S310、在接收多媒体流时,根据接收的多媒体流在传输时使用的传输通道的通道标识,识别接收的多媒体流的类型。
[0064]本步骤中,可以通过判断接收到的数据包的源端口是否为554来确定接收到的数据包是否为传输多媒体流的多媒体数据包。
[0065]实施例3:
[0066]本发明实施例3提供的一种多媒体流的识别方法,如图4所示,具体包括如下步骤:
[0067]S401、根据获取的RTSP包中携带的、用于标识传输多媒体流所采用的传输机制的传输机制参数值,确定是否采用TCP协议传输多媒体流。
[0068]S402、当确定采用TCP协议传输所述多媒体流时,根据获取的RTSP包中携带的、用于标识不同类型的多媒体流在传输时分别使用的传输通道的通道参数值,确定不同类型的多媒体流在传输时分别使用的传输通道的通道标识。
[0069]S403、确定接收到的多媒体数据包的TCP载荷中包含的interleaved frame,其中,多媒体数据包为基于RTP传输的数据包或基于RTCP传输的控制包。
[0070]进一步地,本步骤中,多媒体数据包的TCP载荷中可以包含多个interleavedframe, interleaved frame指音/视频数据包,以及音/视频控制包在TCP报文内混合传输。TCP载荷的第一个字节为第一个interleaved frame的第一个字节,每个interleavedframe为4个字节,第一个字节为该interleaved frame起始的魔数(Magic)( interleavedframe的唯一标识符),即0x24,第二个字节为该interleaved frame引导的多媒体载荷使用的传输通道的通道标识,第三个和第四个字节为该interleaved frame引导的多媒体载荷的长度,从第五个字节开始为该interleaved frame引导的多媒体载荷,该多媒体载荷之后为下一个该 interleaved frame。
[0071]S404、针对每个interleaved frame,从确定的各通道标识中确定与该interleaved frame的第二个字节表征的通道标识匹配的通道标识。
[0072]S405、确定该interleaved frame引导的多媒体载荷的类型为上述匹配的通道标识对应的多媒体流的类型。
[0073]本步骤中,假设在步骤S402中确定出视频数据流在传输时使用的传输通道的通道标识为01,视频控制流在传输时使用的传输通道的通道标识为02,音频数据流在传输时使用的传输通道的通道标识为03,音频控制流在传输时使用的传输通道的通道标识为04,在步骤S404中,确定某个interleaved frame的第二个字节表征的通道标识为01,则步骤S405中,可以确定该interleaved frame引导的多媒体载荷的类型为视频数据流。
[0074]实施例4:
[0075]本发明实施例4,针对实施例3中,步骤S403、确定接收到的多媒体数据包的TCP载荷中包含的interleaved frame,提供了一种确定TCP载荷中包含的interleaved frame的方法,如图5所示,具体包括如下步骤:
[0076]S501、当接收到的多媒体数据包中TCP载荷的第一个字节为预设起始字节时,确定以该第一个字节为起始字节的interleaved frame为TCP载荷包含的第一个interleaved frame。
[0077]S502、将所述第一个 interleaved frame 作为当前 interleaved frame,循环执行如下步骤,顺次遍历每个interleaved frame,直到不存在未遍历的interleaved frame为止:
[0078]S503、将上述TCP载荷的长度与包括当前interleaved frame在内的、已遍历的interleaved frame分别引导的多媒体载荷长度之和相减。
[0079]其中,每个interleaved frame的第三个和第四个字节表征该interleaved frame引导的多媒体载荷的长度;
[0080]S504、判断S503中相减得到的差值是否等于4与包括上述当前interleavedframe在内的、已遍历的interleaved frame个数的乘积,若是,贝U进入步骤S505 ;若否,贝丨J进入步骤S506。
[0081]S505、当相减得到的差值等于4与包括所述当前interleaved frame在内的、已遍历的interleaved frame个数的乘积时,确定已遍历完所述TCP载荷中包含的所有interleaved frame。本流程结束。
[0082]S506、根据上述当前interleaved frame引导的多媒体载荷的长度,将紧邻上述当前interleaved frame引导的多媒体载荷之后的interleaved frame,更新为新的当前interleaved frame。进入步骤 S503。
[0083]本步骤中,TCP的载荷包括interleaved frame和interleaved frame引导的多媒体载荷,当TCP仅包含一个interleaved frame时,TCP载荷的长度与interleaved frame引导的多媒体载荷的长度之间的差值为interleaved frame的长度,即4个字节。
[0084]当TCP载荷的长度与TCP载荷中第一个interleaved frame引导的多媒体载荷的长度相减得到的差值大于4个字节时,确定所述TCP载荷中包含至少两个interleavedframe,需要从第一个interleaved frame开始,顺次确定每个interleaved frame的起始位置,这样才能确定每个interleaved frame的第二个字节,得到各interleaved frame引导的多媒体载荷的类型。
[0085]下面以一个具体的例子对本发明实施例提供的多媒体流的识别方法进行说明。图6a-图6d为通过软件抓取的RTSP包以及RTP数据包。
[0086]图6a为当客户端向服务器发送RTSP包时,通过软件抓取的RTSP包的内容,如图6a所示,RTSP包的目的端口为554,即“Dst Port:rtsp (554)”,RTSP包的方法标识为 SETUP, Request 参数的 trackID 参数值为 1,即 “trackID=l”,transport 参数的第一个参数值为“RTP/AVP/TCP”,(其中,AVP为audio video profile,中文解释为:音视频规格))表征多媒体流基于TCP进行传输,transport参数的interleaved参数值为0-1,即“ interleaved=0-l”。
[0087]图6b为当客户端向服务器发送RTSP包时,在抓取到图6a所示的RTSP包之后,抓取的RTSP包的内容,如图6b所示,RTSP包的目的端口(destination port)为554,即“DstPort:rtsp (554)”,RTSP包的方法标识为SETUP, Request参数的trackID参数值为2,即“ trackID=2 ”, transport参数的第一个参数值为“ RTP/AVP/TCP ”,表征多媒体流基于TCP进行传输,transport参数的interleaved参数值为2-3,即“interleaved=2_3”。将在先接收的RTSP包(如图6a所示)与在后接收的RTSP包(如图6b所示)相结合进行解析,由于在先接收的RTSP包中trackID的值小于在后接收的RTSP包中trackID的值,因此可以确定在先接收的RTSP包是对传输视频流的相关参数的协商,在后接收的RTSP包是对传输音频流的相关参数的协商,也就是说,在先接收的RTSP包中,interleaved参数值为0-1,表征视频数据流使用的传输通道的通道标识为0,视频控制流使用的传输通道的通道标识为1,在后接收的RTSP包中,interleaved参数值为2_3,表征音频数据流使用的传输通道的通道标识为2,音频控制流使用的传输通道的通道标识为3。
[0088]图6c为客户端接收到的传输视频数据流的数据包。如图6c所示,该视频流数据包源端口(source port)为 554,即 “src port:rtsp (554)”,TCP 载荷的长度为 580,即 “ Ien:580”, interleaved frame 中第一个字节为 0x24,即 “Magic:0x24”,第 二个字节为interleaved frame引导的多媒体载荷使用的传输通道的通道(Channel)标识,即“Channel:0x00”,第三个字节和第四个字节为interleaved frame引导的多媒体载荷的长度(Length),即“Length:576byteS”,在接收到该数据包之后,根据TCP载荷长度与为interleaved frame引导的多媒体载荷的长度之差(580-576=4),确定该TCP载荷中只携带了一个interleaved frame,并且根据interleaved frame的第二个字节0x00,以及图6a中RTSP包中解析出的视频数据流使用的传输通道的通道标识为O,确定出interleavedframe引导的多媒体载荷为视频数据流。
[0089]图6d为客户端接收到的传输视频数据流的数据包。如图6d所示,该视频流数据包源端口为 554,即 “src port:rtsp (554)”,TCP 载荷的长度为 476,即 “len:476”,TCP载荷中的第一个interleaved frame中第一个字节为0x24,即“Magic:0x24”,第二个字节为第一个interleaved frame引导的多媒体载荷使用的传输通道的通道标识,即“Channel:0x02”,第三个字节和第四个字节为第一个interleaved frame引导的多媒体载荷的长度,即“Length:332byteS”,在接收到该数据包之后,根据TCP载荷长度与为interleaved frame引导的多媒体载荷的长度之差(476_332>4),确定该TCP载荷中携带了多个interleaved frame,根据第一个interleaved frame引导的多媒体载荷的长度332bytes,从第一个interleaved frame后的332字节之后的第一个字节为0x24,即“Magic:0x24”,确定该字节为第二个interleaved frame的起始字节,第二个interleavedframe第二个字节为第二个interleaved frame引导的多媒体载荷使用的传输通道的通道标识,即“Channel:0x00”,第一个interleaved frame的第三个字节和第四个字节为第一个interleaved frame引导的多媒体载荷的长度,即“Length:136bytes”,由于332bytes(第一个interleaved frame引导的多媒体载荷的长度)+136bytes (第二个interleavedframe引导的多媒体载荷的长度)+8bytes (两个interleaved frame的长度)=476bytes(TCP载荷的长度),说明该TCP载荷包含两个interleaved frame及其引导的多媒体载荷;
[0090]进一步地,根据第一个interleaved frame的第二个字节0x02,以及图6a中RTSP包中解析出的音频数据流使用的传输通道的通道标识为2,确定出第一个interleavedframe引导的多媒体载荷为音频数据流,根据第二个interleaved frame的第二个字节0x00,以及图6a中RTSP包中解析出的视频数据流使用的传输通道的通道标识为0,确定出第二个interleaved frame引导的多媒体载荷为视频数据流。
[0091]基于同一发明构思,本发明实施例还提供了一种多媒体流的识别装置及设备,由于这些装置和设备所解决问题的原理与前述多媒体流的识别方法相似,因此该装置和设备的实施可以参见前述方法的实施,重复之处不再赘述。
[0092]本发明实施例提供了一种多媒体流的识别装置,如图7所示,包括如下模块:
[0093]传输机制确定模块701,用于根据获取的实时流协议RTSP包中携带的、用于标识传输多媒体流所采用的传输机制的传输机制参数值,确定是否采用TCP协议传输所述多媒体流;[0094]通道标识确定模块702,用于当确定采用TCP协议传输所述多媒体流时,根据所述获取的RTSP包中携带的、用于标识不同类型的多媒体流在传输时分别使用的传输通道的通道参数值,确定所述不同类型的多媒体流在传输时分别使用的传输通道的通道标识,其中,多媒体流的类型包括视频数据流、音频数据流、视频控制流、以及音频控制流;
[0095]多媒体类型确定模块703,用于在接收多媒体流时,根据接收的多媒体流在传输时使用的传输通道的通道标识,识别接收的多媒体流的类型。
[0096]进一步地,所述传输机制确定模块701具体用于判断获取的RTSP包中携带的方法标识是否为设置SETUP ;若是,则进一步判断所述获取的RTSP包中携带的传输transport参数的第一个参数值,是否为RTP/AVP/TCP ;若是,则确定采用TCP协议传输多媒体流。
[0097]进一步地,所述通道标识确定模块702具体用于当确定采用TCP协议传输所述多媒体流时,获取并记录所述获取的RTSP包携带的Request参数的轨道识别符trackID参数值,以及transport参数的交错interleaved参数值;判断是否存在在先获取的RTSP包,其中,所述在先获取的RTSP包为在获取到所述获取的RTSP包之前获取到的、方法标识为SETUP的RTSP包;若存在,则执行比较操作,将所述获取的RTSP包携带的trackID参数值与预先记录的所述在先获取的RTSP包携带的trackID参数值进行比较;根据比较结果,将较小的trackID参数值所在的RTSP包中,携带的transport参数的interleaved参数值中,最小值确定为视频数据流使用的传输通道的通道标识,最大值确定为视频控制流使用的传输通道的通道标识;将较大的trackID参数值所在的RTSP包中,携带的transport参数的interleaved参数值中,最小值确定为音频数据流使用的传输通道的通道标识,最大值确定为音频控制流使用的传输通道的通道标识。
[0098]进一步地,所述通道标识确定模块702具体用于若不存在在先获取的RTSP包,获取下一个方法标识为SETUP的RTSP包;若能够获取到下一个方法标识为SETUP的RTSP包,则针对该下一个RTSP包和所述获取的RTSP包,执行所述比较操作。
[0099]进一步地,所述通道标识确定模块702具体用于若未能获取到下一个方法标识为SETUP的RTSP包,则将所述获取的RTSP包中,携带的transport参数的interleaved参数值中,最小值确定为视频数据流使用的传输通道的通道标识,最大值确定为视频控制流使用的传输通道的通道标识。
[0100]进一步地,所述多媒体类型确定模块703具体用于确定接收到的多媒体数据包的TCP载荷中包含的交错巾贞interleaved frame ;针对每个interleaved frame,从确定的各通道标识中确定与该interleaved frame的第二个字节表征的通道标识匹配的通道标识;确定该interleaved frame引导的多媒体载荷的类型为所述匹配的通道标识对应的多媒体流的类型。
[0101]进一步地,所述多媒体类型确定模块703具体用于当接收到的多媒体数据包中TCP载荷的第一个字节为预设起始字节时,确定以所述第一个字节为起始字节的interleaved frame为所述TCP载荷包含的第一个interleaved frame ;将所述第一个interleaved frame作为当前interleaved frame,循环执行如下步骤,顺次遍历每个interleaved frame,直到不存在未遍历的interleaved frame为止:将所述TCP载荷的长度与包括当前interleaved frame在内的、已遍历的interleaved frame分别引导的多媒体载荷长度之和相减,其中,每个interleaved frame的第三个和第四个字节表征该interleaved frame引导的多媒体载荷的长度;当相减得到的差值等于4与包括所述当前interleaved frame在内的、已遍历的interleaved frame个数的乘积时,确定已遍历完所述TCP载荷中包含的所有interleaved frame ;否则,根据所述当前interleaved frame引导的多媒体载荷的长度,将紧邻所述当前interleaved frame引导的多媒体载荷之后的interleaved frame,更新为当前 interleaved frame。
[0102]本发明实施例提供了一种多媒体流的识别设备,包括:上述的多媒体流的识别装置。
[0103]上述各单元的功能可对应于图1至图5所示流程中的相应处理步骤,在此不再赘述。
[0104]本发明实施例提供的一种多媒体流的识别方法、装置及设备,根据获取的RTSP包中携带的、用于标识传输多媒体流所采用的传输机制的传输机制参数值,确定是否采用TCP协议传输所述多媒体流;当确定采用TCP协议传输多媒体流时,根据获取的RTSP包中携带的、用于标识不同类型的多媒体流在传输时分别使用的传输通道的通道参数值,确定不同类型的多媒体流在传输时分别使用的传输通道的通道标识;在接收多媒体流时,根据接收的多媒体流在传输时使用的传输通道的通道标识,识别接收的多媒体流的类型。实现了对基于TCP传输的流媒体数据包进行识别,因此,可以对识别出的多媒体流的类型为多媒体数据流中的多媒体数据进行重新排序、音视频同步等处理,避免了在客户端播放多媒体流时出现唇音不同步、卡顿、马赛克等问题。
[0105]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明实施例可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是⑶-R0M,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0106]本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
[0107]本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
[0108]上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0109]显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
【权利要求】
1.一种多媒体流的识别方法,其特征在于,包括: 根据获取的实时流协议RTSP包中携带的、用于标识传输多媒体流所采用的传输机制的传输机制参数值,确定是否采用TCP协议传输所述多媒体流; 当确定采用TCP协议传输所述多媒体流时,根据所述获取的RTSP包中携带的、用于标识不同类型的多媒体流在传输时分别使用的传输通道的通道参数值,确定所述不同类型的多媒体流在传输时分别使用的传输通道的通道标识,其中,多媒体流的类型包括视频数据流、音频数据流、视频控制流、以及音频控制流; 在接收多媒体流时,根据接收的多媒体流在传输时使用的传输通道的通道标识,识别接收的多媒体流的类型。
2.如权利要求1所述的方法,其特征在于,根据获取的RTSP包中携带的、用于标识传输多媒体流所采用的传输机制的传输机制参数值,确定是否采用TCP协议传输所述多媒体流,具体包括: 判断获取的RTSP包中携带的方法标识是否为设置SETUP ; 若是,则进一步判断所述获取的RTSP包中携带的传输transport参数的第一个参数值,是否为 RTP/AVP/TCP ; 若是,则确定采用TCP协议传输多媒体流。
3.如权利要求1所述的方法,其特征在于,根据所述获取的RTSP包中携带的、用于标识不同类型的多媒体流在传 输时分别使用的传输通道的通道参数值,确定所述不同类型的多媒体流在传输时分别使用的传输通道的通道标识,具体包括: 获取并记录所述获取的RTSP包携带的请求Request参数的轨道识别符trackID参数值,以及transport参数的交错interleaved参数值; 判断是否存在在先获取的RTSP包,其中,所述在先获取的RTSP包为在获取到所述获取的RTSP包之前获取到的、方法标识为SETUP的RTSP包; 若存在,则执行比较操作,将所述获取的RTSP包携带的trackID参数值与预先记录的所述在先获取的RTSP包携带的trackID参数值进行比较; 根据比较结果,将较小的trackID参数值所在的RTSP包中,携带的transport参数的interleaved参数值中,最小值确定为视频数据流使用的传输通道的通道标识,最大值确定为视频控制流使用的传输通道的通道标识; 将较大的trackID参数值所在的RTSP包中,携带的transport参数的interleaved参数值中,最小值确定为音频数据流使用的传输通道的通道标识,最大值确定为音频控制流使用的传输通道的通道标识。
4.如权利要求3所述的方法,其特征在于,若不存在在先获取的RTSP包,还包括: 获取下一个方法标识为SETUPRTSP的RTSP包; 若能够获取到下一个方法标识为SETUPRTSP的RTSP包,则针对该下一个RTSP包和所述获取的RTSP包,执行所述比较操作; 若未能获取到下一个方法标识为SETUP的RTSP包,则将所述获取的RTSP包中,携带的transport参数的interleaved参数值中,最小值确定为视频数据流使用的传输通道的通道标识,最大值确定为视频控制流使用的传输通道的通道标识。
5.如权利要求1-4任一项所述的方法,其特征在于,在接收多媒体流时,根据接收的多媒体流在传输时使用的传输通道的通道标识,识别接收的多媒体流的类型,具体包括: 确定接收到的多媒体数据包的TCP载荷中包含的交错帧interleaved frame ; 针对每个interleaved frame,从确定的各通道标识中确定与该interleaved frame的第二个字节表征的通道标识匹配的通道标识; 确定该interleaved frame引导的多媒体载荷的类型为所述匹配的通道标识对应的多媒体流的类型。
6.如权利要求5所述的方法,其特征在于,确定接收到的多媒体数据包的TCP载荷中的interleaved frame,具体包括: 当接收到的多媒体数据包中TCP载荷的第一个字节为预设起始字节时,确定以所述第一个字节为起始字节的interleaved frame为所述TCP载荷包含的第一个interleavedframe ; 将所述第一个interleaved frame作为当前interleaved frame,循环执行如下步骤,顺次遍历每个interleaved frame,直到不存在未遍历的interleaved frame为止:将所述TCP载荷的长度与包括当前interleaved frame在内的、已遍历的interleaved frame分别引导的多媒体载荷长度之和相减,其中,每个interleaved frame的第三个和第四个字节表征该interleaved frame引导的多媒体载荷的长度;当相减得到的差值等于4与包括所述当前interleave d frame在内的、已遍历的interleaved frame个数的乘积时,确定已遍历完所述TCP载荷中包含的所有interleaved frame ;否则,根据所述当前interleavedframe引导的多媒体载荷的长度,将紧邻所述当前interleaved frame引导的多媒体载荷之后的 interleaved frame,更新为当前 interleaved frame。
7.一种多媒体流的识别装置,其特征在于,包括: 传输机制确定模块,用于根据获取的实时流协议RTSP包中携带的、用于标识传输多媒体流所采用的传输机制的传输机制参数值,确定是否采用TCP协议传输所述多媒体流; 通道标识确定模块,用于当确定采用TCP协议传输所述多媒体流时,根据所述获取的RTSP包中携带的、用于标识不同类型的多媒体流在传输时分别使用的传输通道的通道参数值,确定所述不同类型的多媒体流在传输时分别使用的传输通道的通道标识,其中,多媒体流的类型包括视频数据流、音频数据流、视频控制流、以及音频控制流; 多媒体类型确定模块,用于在接收多媒体流时,根据接收的多媒体流在传输时使用的传输通道的通道标识,识别接收的多媒体流的类型。
8.如权利要求7所述的装置,其特征在于,所述传输机制确定模块具体用于判断获取的RTSP包中携带的方法标识是否为设置SETUP ;若是,则进一步判断所述获取的RTSP包中携带的传输transport参数的第一个参数值,是否为RTP/AVP/TCP ;若是,则确定采用TCP协议传输多媒体流。
9.如权利要求7所述的装置,其特征在于,所述通道标识确定模块具体用于当确定采用TCP协议传输所述多媒体流时,获取并记录所述获取的RTSP包携带的Request参数的轨道识别符trackID参数值,以及transport参数的交错interleaved参数值;判断是否存在在先获取的RTSP包,其中,所述在先获取的RTSP包为在获取到所述获取的RTSP包之前获取到的、方法标识为SETUP的RTSP包;若存在,则执行比较操作,将所述获取的RTSP包携带的trackID参数值与预先记录的所述在先获取的RTSP包携带的trackID参数值进行比较;根据比较结果,将较小的trackID参数值所在的RTSP包中,携带的transport参数的interleaved参数值中,最小值确定为视频数据流使用的传输通道的通道标识,最大值确定为视频控制流使用的传输通道的通道标识;将较大的trackID参数值所在的RTSP包中,携带的transport参数的interleaved参数值中,最小值确定为音频数据流使用的传输通道的通道标识,最大值确定为音频控制流使用的传输通道的通道标识。
10.如权利要求9所述的装置,其特征在于,所述通道标识确定模块具体用于若不存在在先获取的RTSP包,获取下一个方法标识为SETUP的RTSP包;若能够获取到下一个方法标识为SETUP的RTSP包,则针对该下一个RTSP包和所述获取的RTSP包,执行所述比较操作;若未能获取到下一个方法标识为SETUP的RTSP包,则将所述获取的RTSP包中,携带的transport参数的interleaved参数值中,最小值确定为视频数据流使用的传输通道的通道标识,最大值确定为视频控制流使用的传输通道的通道标识。
11.如权利要求7-10任一项所述的装置,其特征在于,所述多媒体类型确定模块具体用于确定接收到的多媒体数据包的TCP载荷中包含的交错帧interleaved frame ;针对每个interleaved frame,从确定的各通道标识中确定与该interleaved frame的第二个字节表征的通道标识匹配的通道标识;确定该interleaved frame引导的多媒体载荷的类型为所述匹配的通道标识对应的多媒体流的类型。
12.如权利要求11所述的装置,其特征在于,所述多媒体类型确定模块具体用于当接收到的多媒体数据包中TCP载荷的第一个字节为预设起始字节时,确定以所述第一个字节为起始字节的interleaved frame为所述TCP载荷包含的第一个interleaved frame ;将所述第一个interleaved frame作为当前interleaved frame,循环执行如下步骤,顺次遍历每个interleaved frame,直到不存在未遍历的interleaved frame为止:将所述TCP载荷的长度与包括当前interleaved frame在内的、已遍历的interleaved frame分别引导的多媒体载荷长度之和相减,其中,每个interleaved frame的第三个和第四个字节表征该interleaved frame引导`的多媒体载荷的长度;当相减得到的差值等于4与包括所述当前interleaved frame在内的、已遍历的interleaved frame个数的乘积时,确定已遍历完所述TCP载荷中包含的所有interleaved frame ;否则,根据所述当前interleaved frame引导的多媒体载荷的长度,将紧邻所述当前interleaved frame引导的多媒体载荷之后的interleaved frame,更新为当前 interleaved frame。
13.一种多媒体流的识别设备,其特征在于,包括:如权利要求7-12任一项所述的多媒体流的识别装置。
【文档编号】H04N21/6437GK103607663SQ201310616936
【公开日】2014年2月26日 申请日期:2013年11月27日 优先权日:2013年11月27日
【发明者】杨泛舟 申请人:福建星网锐捷网络有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1