我有一個大小爲例如4096的緩衝區,並將數據存儲在其中,如果緩衝區已滿,它將從緩衝區的開始處開始。這似乎是正常工作。Qt - 如何設置音頻播放從緩衝區的開始處開始?
但我有從緩衝區播放數據的問題。
QByteArray m_buffer;
QBuffer m_audioOutputIODevice;
QAudioOutput* m_audioOutput;
m_audioOutputIODevice.close();
m_audioOutputIODevice.setBuffer(&m_buffer);
m_audioOutputIODevice.open(QIODevice::ReadOnly);
m_audioOutput->start(&m_audioOutputIODevice);
現在我可以從緩衝區播放聲音,但是當它到達緩衝區結束時,播放停止。 我怎麼能改變代碼,所以當它到達緩衝區的末尾時,它將從一開始就開始? 非常感謝您
更新代碼:
connect(m_audioOutput,SIGNAL(stateChanged(QAudio::State)),SLOT(resetPlayBuffer(QAudio::State)));
void bufferPlayback::resetPlayBuffer (QAudio::State state)
{
if (state == QAudio::IdleState) {
m_audioOutputIODevice.close();
m_audioOutputIODevice.setBuffer(&m_buffer);
m_audioOutputIODevice.open(QIODevice::ReadOnly);
}
}
我也試過下面的代碼,但失敗了。我認爲這是你提到的方法,也許我犯了一個錯誤?我會更新在quesiton代碼:)更容易閱讀 – Tiina
http://doc-snapshot.qt-project.org/5.0/phonon-gstreamer-audiooutput.html – johnathon
現在我可以繼續錄製和播放音頻,但有每次回放之間的差距,因爲QAudioOutput從IdleState恢復 – Tiina