在拉方法中用Qt读取音频时出现问题

时间:2017-05-01 15:39:02

标签: linux qt audio multimedia

我尝试用Qt从声卡读取音频并将其保存在文件中。

文件和QAudioInput的初始化完成如下:

QFile m_file;
QByteArray m_buffer(16 * 1024, 0);
m_file.setFileName("record.wav");
m_file.open(QIODevice::WriteOnly);

m_audioInput = new QAudioInput(m_device, m_format, this);

如果我尝试使用push方法,那么声音似乎记录正常。

m_audioInput->start(&m_file);

但是,如果我尝试使用pull方法,那么声音就没有录好(似乎有些块丢失了)

m_deviceIn = m_audioInput->start();
connect(m_deviceIn, SIGNAL(readyRead()), this, SLOT(readMore()));

void AudioIn::readMore()
{
    qint64 len = m_audioInput->bytesReady();
    if (len > BufferSize)
        len = BufferSize;
    qint64 l = m_deviceIn->read(m_buffer.data(), len);
    if (l > 0) {
        if (m_file.write(m_buffer.constData(), l) != l)
            qInfo()<< "Error write to file";
    }
}

任何人都可以解释为什么拉法不能很好地运作?

0 个答案:

没有答案