我有3个audioQueueBufferRef来填充我的音频列表,并且每个数据都足够快时,每个作品都很好。但有时outputCallback会在没有更多数据时要求填充缓冲区。在这种情况下,我不会排队,回调也不会被调用。 (正常?)AudioQueueBufferRef空流由于流延迟
在这之后,我运行了2个缓冲区,之后(在另一个延迟之后)1个缓冲区,最后没有更多的缓冲区有回调导致没有声音。
我尝试将空的audioQueueBufferRef存储在数组中,并在我有数据填充时调用它们。但是由于数据速度不够快,缓冲区只会“吃掉”我剩余数量较少的数据,并且声音很慢。
当数据填满时,最好的方法是什么?
我最好的办法就是让缓冲区在没有回调的情况下死掉,让剩余的缓冲区完成这项工作,直到每个缓冲区都为空。在此之后,我停止了audioQueue,存储一些数据并再次播放。请注意,我必须调用AudioqueueStop(),因为当每个缓冲区都是空的并且我将它们重新填充时,没有声音正在传出。这是正常的吗?
一般情况下,我会这样做的好方法还是有更好的方法? 是否有一个回调检测到我的所有audioqueueBufferRef已经死了(没有回调运行)? 2.