音频中的淡入淡出效果通过在ios中使用AVAssetExportSession

Posted

技术标签:

【中文标题】音频中的淡入淡出效果通过在ios中使用AVAssetExportSession【英文标题】:Fade In, Fade Out effect in audio By using AVAssetExportSession in ios 【发布时间】:2016-04-21 06:10:21 【问题描述】:

我已经使用 AVAssetExportSession 修剪了一段特定持续时间的音频,并且我也得到了修剪后的音频。

但我的问题是我想在我的音频中添加淡入淡出效果。

告诉我,我该如何解决? 任何帮助将不胜感激。

修剪音频的代码在这里--

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


【问题讨论】:

您想在音频的某个时间范围内增加还是减少音量? 是的,正是我想要的。 请 w8 @NehaPurwar 我在写 好的@JagveerSingh 【参考方案1】:
//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

只需在 [exportSession exportAsynchronouslyWithCompletionHandler:^ 之前添加这几行 ];

【讨论】:

感谢@Jagveer Singh 当我想在原始音频中添加淡入淡出效果时,它会在一段时间后添加淡入淡出效果。谁能解决这个问题?? 没有得到您的查询,请解释。 ? 实际上,我在修剪后的视频上尝试了这个,它的工作方式完全符合我的要求,但是当我将它与我的原始音频一起应用时,我在播放一部分音频而不是开始播放后得到了这个效果音频。 让我们continue this discussion in chat。【参考方案2】:

您可以在播放该音频时简单地放置 if 语句,方法是使用nstimer,例如如果时间达到特定秒数会增加音量,如果时间达到峰值秒数则将音量降低到初始音量。

查看this link 以供参考。

【讨论】:

以上是关于音频中的淡入淡出效果通过在ios中使用AVAssetExportSession的主要内容,如果未能解决你的问题,请参考以下文章

Premier设置音频淡入淡出的效果

Android实现音频淡入淡出效果

如何在 HTML5 静音按钮中应用淡入淡出效果

AVAssetExportSession 和淡入淡出效果

android 怎么做淡入淡出效果

如何淡入和淡出音频?