音频换算相关

G7221采样率为16000Hz, 采样位宽为16bit, 采样通道为1, 则有如下定义和公式:
采样位宽: BitWide = 16 bit
采样通道: Channel = 1 (单声道:1,立体声:2)
每秒16000个样本: SampleRate = 16000
每个样本时间: PerSampleTime = 1/16000 (单位: 秒)
每秒采集字节大小: PerSecondCaptureByte = SampleRate*BitWide*Channel/8 = 32000 (单位: 字节)
每个样本字节大小: PerSampleByte = SampleRate*BitWide*Channel/8/SampleRate = 2 (单位: 字节)
帧率: FrameRate = 50 (固定)
每帧播放时间: PerFramePlayTime = 1000 / 50 = 20 (单位: 毫秒)
每帧处理的样本数量: PerFrameSampleNum = SampleRate*20/1000 = 320
每帧数据大小: PerFrameDataSize = PerFrameSampleNum*PerSampleByte = 640 (单位: 字节)
解码后的音频包大小: AudioPackageSize (单位: 字节) 假如收到G7221的音频包长度为80字节, 解码后的PCM音频长度为1280字节, 则AudioPackageSize = 1280
解码后的音频包播放时间: AudioPackagePlayTime = AudioPackageSize/PerFrameDataSize*PerFramePlayTime = 40ms
RTP包时间戳增量:
1.如果一个RTP包负载一帧音频数据, 则: RTPTimestampInterval_Normal = SampleRate / FrameRate = 320
2.如果一个RTP包负载多帧(n)音频数据, 则: RTPTimestampInterval_Special = AudioPackageSize/PerFrameDataSize*RTPTimestampInterval_Normal = 640

例: PCMU 8000Hz 8bit 1 每包大小320字节
PerSampleByte = SampleRate*BitWide*Channel/8/SampleRate = 8000×8×1/8/8000 = 1
PerFrameSampleNum = SampleRate*20/1000 = 8000×20/1000 = 160
PerFrameDataSize = PerFrameSampleNum*PerSampleByte = 160
AudioPackagePlayTime = AudioPackageSize/PerFrameDataSize*PerFramePlayTime = 320/160×20 = 40ms

猜你喜欢

转载自blog.csdn.net/gouguofei/article/details/40648979