从字节数组中获取音频样本

Get audio samples from byte array

本文关键字:获取 音频 样本 数组 字节 字节数      更新时间:2023-10-16

如何从QAudioInput获取数据样本

我在这个例子中找到了audioinput示例代码

    void InputTest::readMore()
{
    if(!m_audioInput)
        return;
    qint64 len = m_audioInput->bytesReady();
    if(len > 4096)
        len = 4096;
    qint64 l = m_input->read(m_buffer.data(), len);
    if(l > 0) {
        m_audioInfo->write(m_buffer.constData(), l);
    }
}

我理解m_buffer包含音频数据样本

但是我的音频处理库接收短样本如何将其转换为短指针

我的音频库函数是这样的

putSample( short *Sample, int numberOfSample)

我可以从

得到样本数
Q_ASSERT(m_format.sampleSize() % 8 == 0);
        const int channelBytes = m_format.sampleSize() / 8;
        const int sampleBytes = m_format.channels() * channelBytes;
        Q_ASSERT(len % sampleBytes == 0);
        const int numSamples = len / sampleBytes;

这个页面表明read()期望一个char*来存储数据。如果你已经正确设置了音频设备的格式,数据确实会在char数组中被分割为short,你可以简单地将char*转换为short*,然后将其传递给你的库。