我使用ffmpeg解码视频/音频流并使用portaudio播放音频。我遇到与portaudio同步问题。我有一个功能类似下面,portaudio视频/音频同步
double AudioPlayer::getPlaySec() const
{
double const latency = Pa_GetStreamInfo(mPaStream)->outputLatency;
double const bytesPerSec = mSampleRate * Pa_GetSampleSize(mSampleFormat) * mChannel;
double const playtime = mConsumedBytes/bytesPerSec;
return playtime - latency;
}
mCousumeBytes是写入音频设备在portaudio回调函数的字节数。我想我可以根据字节数得到播放时间。实际上,当我执行使CPU繁忙的其他进程(如开放式Firefox)时,音频变得间歇性,但回调不会停止,因此mConsumeBytes超出预期,并且getPlaySec返回的时间大于播放时间。
我不知道这是怎么发生的。任何建议都是值得欢迎的。谢谢!
我在我的同步逻辑中发现了一些错误。这不是波特奥迪造成的。但是,您提供了一个很棒的文档!不管怎么说,还是要谢谢你! – Arton