我使用AudioQueue从任意源流式传输音频(该类基本上只需要一个提供数据包的代理),我创建了一个包装所有功能的类,让我们调用AudioQueueClass,我正在使用这个班级播放许多歌曲,在每首歌曲之间发布我的课程并创建一个新的AudioQueueClass实例以播放下一首歌曲,我看到两个问题,我无法找到原因,可能有些人已经遇到了这些问题,并可以揭示它ios AudioQueue流式传输多首歌曲
1-现在每个和AudioQueue播放前几首歌曲的几秒钟,然后回到当前的歌曲,不知道为什么这可能会发生,因为我是为每首歌曲创建一个新的队列,我相信我正在处理我的队列有些代码可以遵循
2-这个更糟糕,有时当我进入第3或第4首歌曲时音频队列停止播放......我相信问题是AudioQueueInputCallback inCallbackProc停止被调用,我想这是因为队列停止播放和处理数据包,但无法找出原因......需要注意的另一件事是,只有当我从外部源流到设备时才会发生这种情况,如果我只是在本地获取文件数据并且使用它作为数据包我听到音乐中的“口吃”,但它恢复并播放良好,而在流媒体情况下,声音刚好停止(很奇怪)
这里是我用来处理音频队列的代码,不再发帖,因为不知道要发布什么相关部分,请让我知道超重,如果你想看到的任何代码,生病后的这
AudioQueueFlush(audioQueue);
AudioQueueStop(audioQueue, true);
if (audioFileStream)
{
err = AudioFileStreamClose(audioFileStream);
audioFileStream = nil;
if (err)
{
[self failWithErrorCode:AS_FILE_STREAM_CLOSE_FAILED];
}
}
//
// Dispose of the Audio Queue
//
if (audioQueue)
{
err = AudioQueueDispose(audioQueue, true);
audioQueue = nil;
if (err)
{
[self failWithErrorCode:AS_AUDIO_QUEUE_DISPOSE_FAILED];
}
}