Come esportare un file wav in m4a con 22kHz con AVAssetExportSession?
-
27-10-2019 - |
Domanda
Ho un file wave 22kHz e vogliono un file m4a 22kHz. AVAssetExportSession con il preset AVAssetExportPresetAppleM4A converte automaticamente il mio wav a 44 KHz. Ho provato diversi preset e pari a zero per creare l'ExportSession, ma senza successo.
C'è un modo per immobili set personalizzato di esportazione di un AVAssetExportSession o ho bisogno di un approccio completamente diverso come quello indicato nel Come convertire file WAV in M4A? ?
ecco il codice che ho finora, che funziona alla grande se si desidera un file 44kHz:
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;
}
}
}];
Sarebbe bello se ho appena perso qualcosa.
Grazie in anticipo, Dom
Soluzione
ho avuto una certa fortuna con il TPAACAudioConverter disponibili qui . Esso utilizza l'API ExtendedAudioFile nel quadro AudioToolbox.