实时在线音频延时的处理(借用speex)

实际项目中出现实时在线音频播放会有累加延时的问题,越久延时越长。

经过各方面检查发现是设备发送音频数据频率不稳定产生的:

比如本来应该是每秒5包音频包的数据过来的,但是某一秒设备没把数据及时发过来,造成这一秒内没数据播放,但是下秒又多了数据,但是播放速度是固定的,所以相当于延时了一秒,这种情况出现多了延时就会变长。

后来分析了下网络出现这种情况比较常见,特别这个项目是用3G网络可能性还是蛮大的。

解决方法是利用speex判断静音及噪音帧,在延时的情况下丢弃静音及噪音帧,不播放赶上本来的进度

m_pSt = speex_preprocess_state_init(L_FRAME, 8000);

iParam = 1;
speex_preprocess_ctl(m_pSt, SPEEX_PREPROCESS_SET_VAD, &iParam); //静音检测

L_FRAME是帧的长度,单位为short,所以是L_FRAME*2字节

8000采样率

<span style="white-space:pre">				</span>vad = speex_preprocess_run(m_pSt, pcmFrame);

				if (0 == vad)
				{
					//静音或噪声
					dif = m_decodingBuf.endPos - startPos;
					if (480 < dif || (0 > dif && 480 < m_decodingBuf.maxLen + dif) )
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: speex 音频重采样是一种声音处理技术,它可以将一个音频流改变其采样率、比特率和声道数,以适应不同的应用和设备需求。 重采样是指在不改变原始音频数据的基础上,通过重新采样和插值来改变音频流的采样率和比特率。speex 音频重采样利用了一些高级算法来实现这一目标,如三角滤波法、FIR 滤波和 IIR 滤波等。 在实际应用中,speex 音频重采样可以用于语音编解码、语音信号处理、流媒体传输、网络音频会议等领域,以实现更高质量的音频体验。例如在网络音频会议中,由于网络迟和带宽大小的限制,往往需要对音频流进行重采样以减少数据传输量和提高实时性。 总之,speex 音频重采样是一项重要的音频处理技术,它可以改变声音的采样率、比特率和声道数,以适应各种应用和设备需求,提高音频体验。 ### 回答2: Speex音频重采样是指通过改变音频采样率来改变音频文件的声音质量和大小。这种技术可以很好地优化音频文件的大小和质量,以便与特定播放设备、网络带宽或存储资源的场景相适应。 在Speex音频重采样中,采样率是指每秒钟从音频流中采集的声音样本数量。采样率通常以赫兹(Hz)为单位。在音频重采样中,可以将采样率从一个频率转换为另一个频率。例如,将一个44.1kHz采样率的音频文件转化为一个32kHz采样率的音频文件。 为了实现Speex音频重采样,需要使用专业的音频处理软件。重采样技术可以显著影响音频文件的声音质量。如果新的采样率比原来的采样率低,则可能会出现失真、噪音或其他质量问题。因此,需要根据具体要求和实际场景,选择适当的采样率,以实现尽可能好的音频质量和尺寸。 总之,Speex音频重采样是一种强大的音频处理技术,可以很好地优化音频文件的大小、质量和兼容性。通过选择适当的采样率和使用专业的音频处理软件,可以帮助用户实现更好的音频体验和表现效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值