Я бы хотел получить обратно AudioBufferList из AVAssetReader, у которого есть 2 буфера, чтобы я мог обрабатывать левый и правый звук через AudioUnit. Я попытался использовать настройки вывода ниже, но он не будет считываться, пока я укажу стереомакет, установленный kAudioChannelLayoutTag_Stereo.
Может ли AVAssetReader вернуть результат без чередования?
Если нет, как мне преобразовать это в AudioBufferList без чередования? Я пытался использовать Audio Converter Services, но не могу заставить его принимать входные или выходные значения для AudioStreamBasicDescription. (ASBD) Если я не могу получить данные в нужном мне формате от AVAssetReader, я хотел бы, по крайней мере, иметь возможность преобразовать их в нужный мне формат.
Любые советы приветствуются.
- (NSDictionary *) getOutputSettings {
AudioChannelLayout channelLayout;
memset(&channelLayout, 0, sizeof(AudioChannelLayout));
channelLayout.mChannelLayoutTag = kAudioChannelLayoutTag_Stereo;
NSDictionary *outputSettings = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:kAudioFormatLinearPCM], AVFormatIDKey,
[NSNumber numberWithFloat:44100.0], AVSampleRateKey,
[NSNumber numberWithInt:2], AVNumberOfChannelsKey,
[NSData dataWithBytes:&channelLayout length:sizeof(AudioChannelLayout)], AVChannelLayoutKey,
[NSNumber numberWithInt:16], AVLinearPCMBitDepthKey,
[NSNumber numberWithBool:NO], AVLinearPCMIsNonInterleaved,
[NSNumber numberWithBool:NO],AVLinearPCMIsFloatKey,
[NSNumber numberWithBool:NO], AVLinearPCMIsBigEndianKey,
nil];
return outputSettings;
}