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)

        Qt低延时/可集成嵌入的网络播放器 –soundTouch的使用_第1张图片Qt低延时/可集成嵌入的网络播放器 –soundTouch的使用_第2张图片

你可能感兴趣的:(Qt低延时/可集成嵌入的网络播放器 –soundTouch的使用)