编解码几个重要概念

帧的概念:

音频的帧的概念没有视频帧那么清晰,几乎所有视频编码格式都可以简单的认为一帧就是编码后的一副图像。

但音频帧跟编码格式相关,它是各个编码标准自己实现的。因为如果以PCM(未经编码的音频数据)来说,它根本就不需要帧的概念,根据采样率和采样精度就可以播放了。比如采样率为44.1HZ,采样精度为16位的音频,你可以算出bitrate(比特率)是4410016kbps,每秒的音频数据是固定的4410016/8 字节。

amr帧比较简单,它规定每20ms的音频是一帧,每一帧音频都是独立的,有可能采用不同的编码算法,以及不同的编码参数。

mp3帧较为复杂一点,包含了更多的信息,比如采样率,比特率,等各种参数。

采样率:

采样频率是指将模拟声音波形进行数字化时,每秒钟抽取声波幅度样本的次数。

正常人听觉的频率范围大约在20Hz~20kHz之间,根据奈奎斯特采样理论,为了保证声音不失真,采样频率应该在40kHz左右。常用的音频采样频率有8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.1kHz、48kHz等,如果采用更高的采样频率,还可以达到DVD的音质。

**采样精度:**每次采集数据的位数。

**通道数:**存在几路音频。

**比特率:**针对编码格式,表示压缩编码后每秒的音频数据量大小。

时间戳和播放时间:

1 、AAC

(一个AAC原始帧包含一段时间内1024个采样及相关数据)。

对采样率为44.1kHz的AAC音频进行解码时,一帧的解码时间须控制在23.22毫秒内。

音频帧的播放时间=一个AAC帧对应的采样样本的个数/采样频率(单位为s)

一帧 1024个 sample。采样率 Samplerate 44100Hz,每秒44100个sample, 所以根据公式音频帧的播放时间=一个AAC帧对应的采样样本的个数/采样频率

当前AAC一帧的播放时间是= 1024*1000/44100= 22.32ms(单位为ms)

2 、MP3

mp3 每帧均为1152个字节, 则:

frame_duration = 1152 * 1000 / sample_rate

例如:sample_rate = 44100HZ时,计算出的时长为26.122ms,这就是经常听到的mp3每帧播放时间固定为26ms的由来。

**所需带宽:**由编解码算法的编码率决定
如何计算一路话音消耗的带宽 ?
在voice这方面,是如何计算使用某种codec所消耗的带宽呢?在默认情况下,把模拟话音转换为数字话音后,按20ms一段20ms一段切开,用rtp封装起来,然后包上udp header,ip header,最后是layer 2的包头,然后发出去。
假设咱们用g.729编码,并在ethernet上传输。一起来算算一路话音需要多大带宽吧。
g.729每路话音是8kbit/s,那么开始转换:
8000bps / 8 = 1000 bytes/s,得到g.729每秒需要带宽1000 bytes
那么默认都是把20ms的话音封成一个packet,也就可以算出1秒内发送多少个packet:
1s / 20ms = 50个
也就是说g.729每20ms需要的带宽为:1000bytes/s / 50 =20bytes/s
之后以太网帧头6-byte,ip包头20-byte,udp包头8-byte,rtp包头12-byte,这样,再加上g.729的payload为20bytes,也就是说每20ms就要产生一个6 + 20 + 8 + 12 +20 = 66-byte长度的帧,那么一秒就要发送50个66-byte,等于3300-byte,转成kbit/s: 3300byte/s * 8/1000 = 26.4kbit/s
最终得出g.729一路话音占用带宽(包括layer2 header)为26.4kbps

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值