我正在使用PortAudio读取音频wav文件。回调函数工作正常,文件在Ubunto中正常播放。问题是,当我尝试使用Pa_GetStreamTime获取时间时,因为它返回0,我一直在阅读portaudio文档和示例,但我找不到解决问题的方法或至少使用该函数的示例。我浏览了API文档here,但是没有任何东西可以响起。如果任何人都可以提供一个提示,这将非常感激。下面是回调函数发生的实现部分,我使用Qt作为我的最终目标是显示任何wav文件的FTT。提前致谢。Pa_GetStreamTime正在返回0时间
int playAudio::patestCallback(const void *inputBuffer, void *outputBuffer,
unsigned long framesPerBuffer,
const PaStreamCallbackTimeInfo* timeInfo,
PaStreamCallbackFlags statusFlags,
void *userData)
{
/* Cast data passed through stream to our structure. */
// data = (WAV*)userData;
float *out = (float*)outputBuffer;
(void) inputBuffer; /* Prevent unused variable warning. */
/*terminates the stream flows and reset cursor.*/
if (cursor == playAudio::SubChunk2Size/4)
{
cursor = 0;
return paComplete;
}
for (int i = 0; i < framesPerBuffer; i++)
{
if (cursor == playAudio::SubChunk2Size/4) break; // breaks if samples reached last.
*(out++) = pLeftChannel[cursor];
*(out++) = pRightChannel[cursor];
cursor++;
}
// qDebug()<<cursor;
playAudio::audioTime = Pa_GetStreamTime(stream);
qDebug() << playAudio::audioTime;
return paContinue;
}
谢谢,的确,我试过了结构PaStreamCall ......以前,因为我不想惹的回调函数,但在currentTime的成员,我得到0;使用outputBufferDACtime我可以看到数据时间,但不知道如何处理,我把它们加起来,但结果没有意义,所以尝试Pa_getStreamTime给我使用currentTime时相同的结果。关于qDebug你是对的,在我的情况下是不给的问题,最终会被删除。如果您可以使用portaudio共享信息并获取时间或知道如何处理来自timeInfo.OutputBufferDACTime的数据。 – luffyKun