zoukankan      html  css  js  c++  java
  • (七)计算G711语音的打包长度和RTP里timestamp的增长量

    如何计算G711语音等的打包长度和RTP里timestamp的增长量

    一般对于不同的语音有不同的打包周期,而不同的打包周期又对应着不同的timestamp in RTP

    那么是如何计算的呢,我们通过G711举个例子

    G711的打包周期分为10ms,20ms,30ms,sample rate是8000,速率是64kbit/s

    64kbits,意味着每秒发送64000比特

    那么10ms发送= 64000 * (10/1000) = 640 比特 = 80 字节

    那么10ms的包 = 80字节
    20ms = 160 字节
    30ms = 240 字节

    那么64kbits 如何来的?
    因为采样周期为8000,那么意味着1秒8000个采样,每次采样站8个比特
    那么 8000*8 = 64000bit/s = 64kbit/s

    接下来计算timestamp的增长量,公式如下:
    两帧之间RTP timestamp的增量 = 时钟频率 / 帧率
    同样以10ms的G711举例:

    10ms的G711帧率 = 100,意味着每秒发送100帧

    那么10ms的timestamp增量 = 8000/100 = 80

    20ms的timestamp增量 = 160

    30ms的timestamp增量 = 240

    那么其他语音的计算以此类推,举一反三

    m=audio 1234 RTP/AVP 0
    a=rtpmap:0 pcma/8000/1
    a=framerate:25

    c=IN IP4 172.18.168.45

    1.m=是媒体级会话的开始处,audio:媒体类型 ; 1234:端口号    ;RTP/AVP:传输协议   ;0:rtp头中的payload格式

    2.a=rtpmap:证明是动态绑定的进一步说明    ;0:rtp头中的payload格式;pcma:编码名 ;8000:采样频率;1:单声道

              注意:g711有两种编码类型,另一种是pcmu

    3.a=framerate:25    指1s播放几个rtp包,单位帧每秒,倒数为一个rtp包承载的数据播放的时间,单位s

                                       8000/25=320   表示每个时间戳增量值    每个rtp包的g711数据大小

    4.c=:媒体链接信息;IN:网络类型一般为IN;IP4:地址类型一般为IP4;后面是IP地址(注意是VLC所在的IP地址,不是发送方的IP)

    m=audio 1234 RTP/AVP 0
    a=rtpmap:0 pcma/8000/1
    a=framerate:25

    c=IN IP4 172.18.168.45

    1.m=是媒体级会话的开始处,audio:媒体类型 ; 1234:端口号    ;RTP/AVP:传输协议   ;0:rtp头中的payload格式

    2.a=rtpmap:证明是动态绑定的进一步说明    ;0:rtp头中的payload格式;pcma:编码名 ;8000:采样频率;1:单声道

              注意:g711有两种编码类型,另一种是pcmu

    3.a=framerate:25    指1s播放几个rtp包,单位帧每秒,倒数为一个rtp包承载的数据播放的时间,单位s

                                       8000/25=320   表示每个时间戳增量值    每个rtp包的g711数据大小

    4.c=:媒体链接信息;IN:网络类型一般为IN;IP4:地址类型一般为IP4;后面是IP地址(注意是VLC所在的IP地址,不是发送方的IP)

    关于sdp文件的详细介绍请看:http://blog.csdn.net/zhangjikuan/article/details/27367437

    2音频RTP包特点

    以G711A为例,G711A编码位数为8位,如下表,第0位为极性位,1到3位为段位码,4-7位为段内码,如以8K频率对信号进行采样,每个采样点以8位编码,显然编码速率为64Kbps。

    以G711A编码的音频包如果以20ms打包,那么每个包有160个采样点(采样频率为8KHZ,那么每毫秒的采样个数为8个,因此20ms即为160个),这同样体现在时戳,如下图,两个包之间的时戳间隔为160。

    并且,净荷的长度即为160×1字节/包=160个字节,见下图,DSP在解码时读取每个采样点的数值,查表就可以恢复信号。

    3速率计算

    对于每路媒体通道速率大小的描述,可用kbps或是每秒传输的RTP包数,用前者描述便于计算带宽,可以和底板/扣板逻辑接口速率进行对照,后者便于计算NP处理包数。

    a. 对音频而言,知道打包时长就可以诂算通道每秒传输的包数,例如打包时长为20ms,每秒该通道即传输50个包。

    b. 计算通道带宽速率

    速率=RTP包大小(包头+净荷)×每秒处理包数(1/打包周期)

    =(Ethernet头+IP头+UDP头+RTP头+有效载荷)×(1/打包周期)
    =(208bit(不一定) +160bit+64bit+96bit +有效载荷)×(1/打包周期)
    =(528bit+(打包周期(秒)×每秒的比特数))×(1/打包周期)
    =( 528 / 打包周期 ) + 每秒比特数

    G711:20ms打包,带宽为 ( 528/20 + 64) Kbit/s=90.4 Kbit/s

    G729:20ms打包,带宽为 ( 528/20 + 8 ) Kbit/s= 34.4 Kbit/s

    性能测试时可根据通道处理速率诂算产品处理性能。

    各个报头长度参考下面报文格式:

    UDP报头8字节,64位

    IP报头固定长度为20字节,160位

  • 相关阅读:
    用户管理
    grep
    Java中的Map
    WinForm------Reflector反编译工具下载
    SQLServer------解决IP地址登录不了数据库问题
    WinForm------弹出MessageBox窗口的同时隐藏当前窗口
    WinForm------DockManager控件的使用方法(里面包含DockPanel控件)
    IIS------Http错误:50019,由于权限不足无法读取配置文件
    IIS------配置错误:不能在此路径中使用此配置节
    IIS------配置.Net 4.0
  • 原文地址:https://www.cnblogs.com/zhangshenghui/p/7281590.html
Copyright © 2011-2022 走看看