关于G.729压缩问题的一些总结

G.729 使用single channel, 16bit 的sample,8000 sample per second 的PCM格式作为输入源, 即:

WAVEFORMATEX waveformat;

waveformat.wFormatTag 
=  WAVE_FORMAT_PCM;
waveformat.nChannels 
=   1 ;
waveformat.nSamplesPerSec 
=   8000 ;
waveformat.wBitsPerSample 
=   16 ;
waveformat.nAvgBytesPerSec 
=  waveformat.nSamplesPerSec * (waveformat.wBitsPerSample / 8 );
waveformat.nBlockAlign 
=  waveformat.nChannels   *  (waveformat.wBitsPerSample / 8 );
waveformat.cbSize 
=   0 ;

G.729 is a frame based encoding 10ms/frame, 16:1 compress rate,就是形成一个frame的数据需要10ms的sample.对于上述PCM格式来说,音频驱动会产生 8000 samples * (16 bit/s / 8 bit/bytes) = 16000 byte/s 就是说 一秒钟内音频驱动产生16000 bytes, 就是一毫秒产生16个字节

于是作为G.729的输入源的数据大小应该为 160byte的倍数, 就是说产生一个G.729的frame (这个frame 10 byte)需要输入160 byte的数据。

含有G.729的RTP包中payload根据RFC3551应该是2个frame,就是默认传输G.729的每个RTP包中有20Bytes=2frame的净负载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值