Как экспортировать файл wav в m4a с частотой 22 кГц с помощью AVAssetExportSession?

У меня есть волновой файл 22 кГц, и мне нужен файл m4a 22 кГц. AVAssetExportSession с предустановленным AVAssetExportPresetAppleM4A автоматически конвертирует мой wav в 44 кГц. Я пробовал разные предустановки и ноль для создания ExportSession, но безуспешно.

Есть ли способ установить пользовательские свойства экспорта AVAssetExportSession или мне нужен совершенно другой подход, подобный указанному в Как преобразовать файл WAV в M4A??

вот код, который у меня есть до сих пор, который отлично работает, если вам нужен файл 44 кГц:

AVURLAsset *wavAsset = [AVURLAsset URLAssetWithURL:[NSURL fileURLWithPath:wavPath] options:optionsDict];

AVMutableComposition *mutableComposition = [AVMutableComposition composition];
[mutableComposition insertTimeRange:CMTimeRangeMake(kCMTimeZero, wavAsset.duration)
  ofAsset:wavAsset atTime:kCMTimeZero error:&error];

AVAssetExportSession *exportSession = [[AVAssetExportSession alloc]
  initWithAsset:[mutableComposition copy] presetName:AVAssetExportPresetAppleM4A];
exportSession.outputURL = [NSURL fileURLWithPath:m4aPath];
exportSession.outputFileType = AVFileTypeAppleM4A;

[exportSession exportAsynchronouslyWithCompletionHandler:^{
  switch (exportSession.status) {
    case AVAssetExportSessionStatusCompleted: {
      [exportSession release];
      completionHandler(nil);
      break;
    }
    case AVAssetExportSessionStatusFailed: {
      NSLog(@"There was an error while exporting the file: %@", exportSession.error);
      completionHandler(exportSession.error);
      break;
    }
    // ... handle some other cases...
    default: {
      break;
    }
  }
}];

Было бы здорово, если бы я что-то пропустил.

Заранее спасибо, Дом


person d0m1n1k    schedule 06.09.2011    source источник


Ответы (1)


Мне повезло с TPAACAudioConverter, доступным здесь. Он использует API ExtendedAudioFile в AudioToolbox Framework.

person user945168    schedule 14.09.2011