2016-04-21 3 views
3

J'ai réglé un fichier audio pour une durée particulière en utilisant AVAssetExportSession et j'obtiens également l'audio rogné.Effet Fade In, Fade Out dans l'audio En utilisant AVAssetExportSession dans ios

Mais mon problème est que je veux ajouter un fondu entrant et un effet de fondu dans mon audio. Faites-moi savoir, comment puis-je résoudre ce problème? Toute aide sera appréciée.

code

pour l'audio parage est ici--

- (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]); 
} 
} 
+0

Souhaitez-vous augmenter ou diminuer le volume de certaines plages audio? – Lion

+0

Oui, exactement je le veux. –

+0

pleae w8 @NehaPurwar j'écris –

Répondre

3
//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 

ajouter ces quelques lignes avant [exportSession exportAsynchronouslyWithCompletionHandler:^{ }];

+0

avez-vous essayé? –

+0

Oui, j'ai essayé cela et son fonctionnement parfaitement :) –

+0

Merci @Jagveer Singh –

0

Vous pouvez tout simplement si la déclaration lors de la lecture que l'audio en prenant nstimer comme si la portée de temps particulier seconde que le volume d'augmentation et si elle atteint au pic seconde puis diminuer le volume au volume initial.

Vérifiez this link pour référence.