一种用于VoIP开发调试的codec解包实现方法及装置与流程

文档序号:15625013发布日期:2018-10-09 22:45阅读:243来源:国知局

本发明涉及voip话机领域,具体涉及一种voip开发调试的codec解包实现方法及装置。



背景技术:

在voip开发调试中对声音的问题的排查,最直观的是能直接听到声音。但是在开发中,经常只能抓到通话中的数据包,而数据包是经过编码的,有的还有加密。这对开发和测试来说是一个很大问题,无法判定当时的声音质量。

目前,一般通过wireshark对抓到的包进行解析,但其只能解析pcmu、pcma等简单codec。而目前语音通话很多不只是这些codec。另外,很多抓包文件是经过加密的,而现有的wireshark对此也是无法实现解密的。



技术实现要素:

本发明的目的在于提供一种用于voip开发调试的codec解包实现方法及装置,其能够解析多种语音codec。

为实现上述目的,本发明采用的技术方案是:

一种用于voip开发调试的codec解包实现方法,其包括以下步骤:

步骤1、抓取pcap文件并进行解析,以获取sdp包,若sdp包获取成功,进入步骤2,若获取sdp包失败,进入步骤3;

步骤2、从sdp包中获取解包输入信息,并判断解包输入信息是否完整,若解包输入信息完整,进入步骤4;若解包输入信息不完整,则从log文件中获取缺失的解包输入信息,以完整解包输入信息,并进入步骤4;

解包输入信息包括通话两端的ip地址、端口、codec信息、是否加密,若加密时,解包输入信息还包括加密密钥;

步骤3、通过识别rtp包的包头获取部分解包输入信息,然后根据log文件中获取缺失的解包输入信息,以完整解包输入信息,然后进入步骤4;

步骤4、当解包输入信息完整时,根据解包输入信息判断rtp包是否加密,若rtp包没有加密,进入步骤5;若rtp包有加密,则根据解包输入信息中的加密密钥对rtp包进行解密,解密完成后进入步骤5;

步骤5、根据解包输入信息中的codec信息查找对应的codec模块,利用该codec模块进行codec解码,生成可播放的wav文件。

本发明还提供了另一技术方案:

一种用于voip开发调试的codec解包实现装置,其包括pcap解析模块、srtp解密模块和codec解码模块,

所述pcap解析模块,用于读取pcap文件,并对pcap文件进行逐层分析,获取sdp包,用于获取解包输入信息;若获取sdp包失败,则通过识别rtp包的包头获取部分解包输入信息,并结合log文件来获取缺失的解包输入信息;

所述srtp解密模块,用于根据解包输入信息中的加密密钥对rtp包进行解密;

所述codec解码模块,设有两种以上的codec模块;用于根据解包输入信息中的codec信息查找codec解码模块中对应的codec模块,并利用该codec模块进行codec解码,生成wav文件。

采用上述方案后,本发明在进行codec解码时,会根据解包输入信息中的codec信息查找相应的codec模块,不同类型的codec对应不同的codec模块,从而实现多种语音codec的解析。而且根据设置灵活方便,在使用过程中易于添加新增codec模块。此外,本发明可以方便开发人员快速解析出pcap包;针对技术支持、没有现场的情况下,利用话机的抓包文件(pcap文件)和log文件,能再现通话场景。

附图说明

图1为本发明结构框图;

图2为本发明流程图。

具体实施方式

图1为本发明用于voip开发调试的codec解包实现装装置的结构框图,如图1所示,用于voip开发调试的codec解包实现装置包括pcap解析模块、srtp解密模块和codec解码模块。

其中,pcap解析模块,用于读取pcap文件,并对pcap文件进行逐层分析,获取sdp包,用于获取解包输入信息;若获取sdp包失败,则通过识别rtp包的包头获取部分解包输入信息,并结合log文件来获取缺失的解包输入信息。

其中,rtp包通过解析pcap文件识别获取,具体通过下述流程识别出rtp包:

按照网络包的格式,逐层识别出是否为以太网帧、是否为ip包、是否为udp包;

udp载荷长度是否大于12字节;

udp载荷前两个比特是否为0x10,即rtp头的版本号是否为2;

rtp流负载类型是否不改变;

rtp流的sequencenumber是否递增;

rtp包的ssrc值是否为定值。

srtp解密模块,用于根据解包输入信息中的加密密钥对rtp包进行解密。

codec解码模块,设有两种以上的codec模块;用于根据解包输入信息中的codec信息查找codec解码模块中对应的codec模块,并利用该codec模块进行codec解码,生成wav文件。

图2为本发明用于voip开发调试的codec解包实现方法的流程图,如图2所示,用于voip开发调试的codec解包实现方法的流程图具体包括以下步骤:

步骤1、抓取pcap文件并进行解析,以获取sdp包,若sdp包获取成功,进入步骤2,若获取sdp包失败,进入步骤3。

步骤2、从sdp包中获取解包输入信息,并判断解包输入信息是否完整,若解包输入信息完整,进入步骤4;若解包输入信息不完整,则从log文件中获取缺失的解包输入信息,以完整解包输入信息,并进入步骤4。

其中,解包输入信息包括通话两端的ip地址、端口、codec信息、是否加密,若加密时,解包输入信息还包括加密密钥;codec信息包括codec名称、payloadtype(负载类型)、采样率、比特率和ptime(媒体打包时长)。

步骤3、通过识别rtp包的包头获取部分解包输入信息,然后根据log文件中获取缺失的解包输入信息,以完整解包输入信息,然后进入步骤4。

步骤4、当解包输入信息完整时,根据解包输入信息判断rtp包是否加密,若rtp包没有加密,进入步骤5;若rtp包有加密,则根据解包输入信息中的加密密钥对rtp包进行解密,解密完成后进入步骤5。

步骤5、根据解包输入信息中的codec信息查找对应的codec模块,利用该codec模块进行codec解码,生成可播放的wav文件。

本发明的关键在于,本发明在进行codec解码时,会根据解包输入信息中的codec信息查找相应的codec模块,不同类型的codec对应不同的codec模块,从而实现多种语音codec的解析。而且根据设置灵活方便,在使用过程中易于添加新增codec模块。此外,本发明可以方便开发人员快速解析出pcap包;针对技术支持、没有现场的情况下,利用话机的抓包文件(pcap文件)和log文件,能再现通话场景。

以上所述,仅是本发明实施例而已,并非对本发明的技术范围作任何限制,故凡是依据本发明的技术实质对以上实施例所作的任何细微修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

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