本文通过用AudioQueue来播放AAC,其内部会自动进行解码。可以设置AudioQueue用硬解码还是软解码。
AudioQueue播放步骤如下:
- 1、给buffer填充数据,并把buffer放入就绪的buffer queue;
- 2、应用通知队列开始播放;
- 3、队列播放第一个填充的buffer;
- 4、队列返回已经播放完毕的buffer,并开始播放下面一个填充好的buffer;
- 5、队列调用之前设置的回调函数,填充播放完毕的buffer;
- 6、回调函数中把buffer填充完毕,并放入buffer queue中。
具体步骤:
1.打开文件,用于获取aac数据
NSURL *url = [[NSBundle mainBundle] URLForResource:@"sintel" withExtension:@"aac"];
OSStatus status = AudioFileOpenURL((__bridge CFURLRef)url, kAudioFileReadPermission, 0, &audioFileID); //Open an existing audio file specified by a URL.
if (status != noErr) {
NSLog(@"打开文件失败 %@", url);
return ;
}
2.从文件中获取文件信息audioStreamBasicDescrpition,并创建audioQueue,设置回调函数bufferReady