AudioUnitを介して左右のオーディオを処理できるように、2つのバッファを持つAVAssetReaderからAudioBufferListを取得したいと考えています。以下の出力設定を試してみましたが、kAudioChannelLayoutTag_Stereoで設定したステレオレイアウトを指定していれば読み込みません。AVAssetReaderを使用してステレオチャンネルレイアウトを取得することはできますか?
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;
}
完了。私は古いものがそこにぶら下がっているのを見つけました。 – Brennan