感谢stackoverflow用户,我现在能够对一个AVPlayerTrack进行淡入或淡出。但是我找不到一种方法来同时对单个轨道进行两者操作。这是我正在尝试使用的:
-(void)fadeOutVolume
{
AVPlayerItem *myAVPlayerItem = self.songPlayer.currentItem;
AVAsset *myAVAsset = myAVPlayerItem.asset;
NSArray *audioTracks = [myAVAsset tracksWithMediaType:AVMediaTypeAudio];
NSMutableArray *allAudioParams = [NSMutableArray array];
for (AVAssetTrack *track in audioTracks) {
AVMutableAudioMixInputParameters *audioInputParams =
[AVMutableAudioMixInputParameters audioMixInputParametersWithTrack:track];
CMTime fadeDuration = CMTimeMakeWithSeconds(5, 600);
CMTime fadeOutStartTime =
CMTimeMakeWithSeconds(CMTimeGetSeconds(myAVPlayerItem.duration)-5, 600);
CMTime fadeInStartTime = CMTimeMakeWithSeconds(0, 600);
[audioInputParams setVolumeRampFromStartVolume:1.0
toEndVolume:0
timeRange:CMTimeRangeMake(fadeOutStartTime, fadeDuration)];
AVMutableAudioMixInputParameters *audioInputParams2 =
[AVMutableAudioMixInputParameters audioMixInputParametersWithTrack:track];
[audioInputParams2 setVolumeRampFromStartVolume:0.0
toEndVolume:1.0
timeRange:CMTimeRangeMake(fadeInStartTime, fadeDuration)];
[allAudioParams addObject:audioInputParams];
[allAudioParams addObject:audioInputParams2];
}
AVMutableAudioMix *audioMix = [AVMutableAudioMix audioMix];
[audioMix setInputParameters:allAudioParams];
[myAVPlayerItem setAudioMix:audioMix];
}
如果我注释掉[allAudioParams addObject:audioInputParams];
这行或者另一行的话,它就可以工作。但是我不能同时拥有这两个输入参数。
setVolumeRampFromStartVolume
只能被设置一次。尝试找到不同的参数设置。 - Mundi