如何改变AVAudioFormat的AVFormatIDKey ?



我使用AVAudioFormat..我需要改变它的AVFormatIDKey,但它不工作。这里是mycode

_format = [[AVAudioFormat alloc] initWithCommonFormat:AVAudioPCMFormatFloat32 sampleRate:kAudRecordingSampleRate channels:1 interleaved:false ];

我已经尝试了以下事情,但不工作

NSMutableDictionary *recordSettings = _format.settings.mutableCopy;
[recordSettings1 addEntriesFromDictionary:@{
AVFormatIDKey : @(kAudioFormatMPEG4AAC),
AVEncoderAudioQualityKey : @(AVAudioQualityMedium),
}];

我曾尝试@sbooth设置RecordingSetting,但在混音器连接上崩溃

_format = [[AVAudioFormat alloc] initWithSettings:recordSettings];
AVAudioMixerNode *mainMixer = engine.mainMixerNode;
[engine connect:mixer to:engine.mainMixerNode format:_format]; // crash line

崩溃日志

[AUInterface。mm: 536: SetFormat:([[busArrayobjectAtIndexedSubscript:(了NSUInteger)元素]setFormat:格式error:&nsErr])]返回false, error错误域名=NSOSStatusErrorDomain Code=-10868 "(null)">

错误-10868是kAudioUnitErr_FormatNotSupported.

AVAudioEngine或多或少需要PCM处理,所以尝试使用像AAC这样的格式是不太可能工作的。要获得压缩输出,您可以使用AVAudioConverter(或AVAudioFile)并在手动渲染模式下运行图形,并使用AVAudioConverter处理输出。

相关内容

  • 没有找到相关文章

最新更新