音频中的淡入淡出效果通过在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的主要内容,如果未能解决你的问题,请参考以下文章