.wav para qualquer formato compactado do AVAssetWritter ios

Bem, o problema que estou enfrentando agora é um problema de tamanho. Estou permitindo que o usuário escolha uma música da sua biblioteca e, em seguida, divida-a em pedaços, para poder usar o arquivo .wav ou .mp3 em seu computador com o compartilhamento de arquivos ativado. Basicamente, estou usando as seguintes opções do AVAssetWritter e continuo recebendo um enorme arquivo de áudio enorme. POR EXEMPLO. 5 minutos de música são cerca de 50 MB. Eu estou olhando para tentar reduzir isso para um setor dado o tamanho padrão. Sinto que isso tem a ver com o fato de estar usando o LinearPCM como uma das minhas opções, mas quando altero essa ou qualquer uma das Opções de áudio, o gravador não pode escrever. Também estou alterando o parâmetro FileType no AVAssetWritter. Aqui está o meu código que funciona completamente bem. Eu só preciso encontrar um pouco para comprimir ou reduzir os arquivo

AVAssetWriter *assetWriter = [[AVAssetWriter assetWriterWithURL:exportURL
                                                       fileType:AVFileTypeWAVE
                                                          error:&assetError]



NSDictionary *outputSettings = [NSDictionary dictionaryWithObjectsAndKeys:
                                [NSNumber numberWithInt:kAudioFormatLinearPCM], AVFormatIDKey, 
                                [NSNumber numberWithFloat:41000.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];
AVAssetWriterInput *assetWriterInput = [[AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeAudio
                                                                           outputSettings:outputSettings]
                                        retain];

Qualquer ajuda na compactação ou no uso do meu AVAssetWritter para gravar em codec diferente em vez de WAVE ou CoreAudioFormat seria muito apreciad

EDIT: Se houver uma maneira de ir direto da biblioteca de música para .m4a em vez de .wav, essa seria a abordagem ideal que eu gostaria de seguir!

Obrigado, Nick

RESPOND

Estas são as opções de áudio corretas para .m4a e se você deseja que o usuário o veja como um arquivo .mp3 ou .wav, basta anexá-las ao final do nome do arquivo!

AudioChannelLayout channelLayout;
memset(&channelLayout, 0, sizeof(AudioChannelLayout));
channelLayout.mChannelLayoutTag = kAudioChannelLayoutTag_Stereo;
NSDictionary *outputSettings = [NSDictionary dictionaryWithObjectsAndKeys:
                                [NSNumber numberWithInt: kAudioFormatMPEG4AAC], AVFormatIDKey,
                                [NSNumber numberWithFloat:44100.0], AVSampleRateKey,
                                [NSNumber numberWithInt:2], AVNumberOfChannelsKey,
                                [NSNumber numberWithInt:128000], AVEncoderBitRateKey,
                                [NSData dataWithBytes:&channelLayout length:sizeof(AudioChannelLayout)], AVChannelLayoutKey,                  

                                nil];    

questionAnswers(4)

yourAnswerToTheQuestion