Fade In, efecto Fade Out en audio Al usar AVAssetExportSession en ios

He recortado un audio para una duración particular utilizando AVAssetExportSession y también estoy recibiendo el audio recortado.

Pero mi problema es que quiero agregar efectos de desvanecimiento y desvanecimiento en mi audio.

Avísame, ¿cómo puedo resolver esto? Cualquier ayuda será apreciada.

El código para recortar el audio está aquí–

- (void)trimAudio:(NSString *)inputAudioPath audioStartTime:(float)sTime audioEndTime:(float)eTime outputPath:(NSString *)outputFilePath mode:(NSInteger)kSelectionMode { @try { AVAsset *asset = [[AVURLAsset alloc] initWithURL:[NSURL fileURLWithPath:inputAudioPath] options:nil]; //Create the session with assets AVAssetExportSession *exportSession = [[AVAssetExportSession alloc]initWithAsset:asset presetName:AVAssetExportPresetAppleM4A]; //Set the output url exportSession.outputURL = [NSURL fileURLWithPath:outputFilePath]; // Trim video in a particular duration CMTime startTime = CMTimeMake((int)(floor(sTime * 100)), 100); CMTime stopTime = CMTimeMake((int)(ceil(eTime * 100)), 100); CMTimeRange range = CMTimeRangeFromTimeToTime(startTime, stopTime); exportSession.timeRange = range; exportSession.outputFileType = AVFileTypeAppleM4A; [exportSession exportAsynchronouslyWithCompletionHandler:^{ switch (exportSession.status) { case AVAssetExportSessionStatusCompleted:{ NSLog(@"Export Complete"); if(UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(exportSession.outputURL.path)){ UISaveVideoAtPathToSavedPhotosAlbum(exportSession.outputURL.path, nil, nil, nil); if ([self.delegate respondsToSelector:@selector(trimDidSucceed:mode:)]) { [self.delegate trimDidSucceed:outputFilePath mode:kTrimAudio]; } else{ [self.delegate trimDidFail:exportSession.error]; } } break; } case AVAssetExportSessionStatusFailed:{ NSLog(@"Export Error: %@", [exportSession.error description]); break; } case AVAssetExportSessionStatusCancelled: NSLog(@"Export Cancelled"); break; default: break; } }]; exportSession = nil; } @catch (NSException * e) { NSLog(@"Exception Name:%@ Reason:%@",[e name],[e reason]); } } 

 //fade in /out AVMutableAudioMix *exportAudioMix = [AVMutableAudioMix audioMix]; AVMutableAudioMixInputParameters *exportAudioMixInputParameters = [AVMutableAudioMixInputParameters audioMixInputParametersWithTrack:asset.tracks.lastObject]; int start=2,length=3; [exportAudioMixInputParameters setVolume:0.0 atTime:CMTimeMakeWithSeconds(start-1, 1)]; [exportAudioMixInputParameters setVolume:0.1 atTime:CMTimeMakeWithSeconds(start, 1)]; [exportAudioMixInputParameters setVolume:0.5 atTime:CMTimeMakeWithSeconds(start+1, 1)]; [exportAudioMixInputParameters setVolume:1.0 atTime:CMTimeMakeWithSeconds(start+2, 1)]; [exportAudioMixInputParameters setVolume:1.0 atTime:CMTimeMakeWithSeconds((start+length-2), 1)]; [exportAudioMixInputParameters setVolume:0.5 atTime:CMTimeMakeWithSeconds((start+length-1), 1)]; [exportAudioMixInputParameters setVolume:0.1 atTime:CMTimeMakeWithSeconds((start+length), 1)]; exportAudioMix.inputParameters = [NSArray arrayWithObject:exportAudioMixInputParameters]; exportSession.audioMix = exportAudioMix; // fade in audio mix 

Simplemente agregue estas pocas líneas antes [exportSession exportAsynchronouslyWithCompletionHandler: ^ {}];

Puede simplemente poner la instrucción if al reproducir ese audio tomando nstimer como si llegara el time a un segundo particular que aumente el volumen y si alcanza el segundo pico y luego networkinguce el volumen al volumen inicial.

Consulte este enlace como reference.