对于我的特殊情况,我想读一个音频文件< MP3,AAC ...>通过缓冲区,如每个缓冲区为512Kb,并将此缓冲区转换为PCM数据并传递给AudioQueue的播放回调。 就像录制时一样,我们有这样的回调:
static OSStatus recordingCallback(void *inRefCon,
AudioUnitRenderActionFlags *ioActionFlags,
const AudioTimeStamp *inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList *ioData)
我们可以使用AudioBufferList * ioData播放, 如何将上面的缓冲区转换为此类型? 非常感谢。
编辑: 我有一个获取音频缓冲区的方法:
-(NSData *) readAudioFile:(NSString *)filePath fromOffset:(long long) offset readSize:(long)readSize {
NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:nil];
NSNumber *fileSizeNumber = [fileAttributes objectForKey:NSFileSize];
long long fileSize = [fileSizeNumber longLongValue];
if(offset >= fileSize)
return nil;
NSFileHandle *fReadHandle = [NSFileHandle fileHandleForReadingAtPath:filePath];
[fReadHandle seekToFileOffset:offset];
NSData *data = [fReadHandle readDataOfLength:readSize];
[fReadHandle closeFile];
return data;
}
和N SData *audioData = [self readAudioFile:@"aa.mp3" fromOffset:0 readSize:512 * 1024];
现在我有缓冲区:audioData,如何将此缓冲区传递给AudioQueue或其他服务来播放它。