Qt低延时/可集成嵌入的网络播放器 –soundTouch的使用

背景

在观看直播的过程中,保不齐网络出现卡的现象,可能导致音频数据包累积了好几秒的数据,这时候要么丢直接播放新的, 要么直接播放基音, soundTouch可以加速播放并不要变调

 

主要技术点

soundTouch 的输入

void CXAudioPlay::sound_touch_put(uint8_t *audio_buf, int data_size, int nb)
{
    for(auto i = 0; i < data_size / 2 + 1; i++)
    {
        touch_buffer_put[i] = (audio_buf[i * 2] | (audio_buf[i * 2 + 1] << 8));
    }

    _soundTouch->putSamples(touch_buffer_put, nb);
}

       soundTouch 的输出

int CXAudioPlay::sound_touch_recv(uint8_t *audio_buf, int samples_number, int channels)
{
    int nb = _soundTouch->receiveSamples(touch_buffer_recv, samples_number);
    int length = nb * channels * 2;

    for(auto i = 0; i < length / 2 ; i++)
    {
        audio_buf[i * 2] = uint8_t(touch_buffer_recv[i]);
        audio_buf[i * 2 + 1] = uint8_t(touch_buffer_recv[i] >> 8);
    }

    return length > 0 ? length : -1;
}

soundTouch 的变速

  if(_soundTouch)
    {
        _soundTouch->setTempoChange(12.0f);
    }

开源地址:

https://gitee.com/alldemo/srplayer.git

学习合作:

       作者:QQ(690759587)

        

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值