1

例如,当用户单击停止按钮时,我想淡出音轨,我使用此代码淡出声音

-(void)soundFadeOut{

AVPlayerItem *myAVPlayerItem = mainPlayer.currentItem;
AVAsset *myAVAsset = myAVPlayerItem.asset;
NSArray *audioTracks = [myAVAsset tracksWithMediaType:AVMediaTypeAudio];

NSMutableArray *allAudioParams = [NSMutableArray array];
for (AVAssetTrack *track in audioTracks) {

        AVMutableAudioMixInputParameters *audioInputParams = [AVMutableAudioMixInputParameters audioMixInputParametersWithTrack:track];
        [audioInputParams setVolumeRampFromStartVolume:1.0 toEndVolume:0 timeRange:CMTimeRangeMake(CMTimeMake(0, 1), CMTimeMake( 5, 1))];
        [allAudioParams addObject:audioInputParams];

}
AVMutableAudioMix *audioMix = [AVMutableAudioMix audioMix];
[audioMix setInputParameters:allAudioParams];
[myAVPlayerItem setAudioMix:audioMix];}

但是当我点击按钮时,音量一次变为零。

4

1 回答 1

0

我现在知道我的错了,它在 CMTimeRange 的第一个 CMTime 参数中

        CMTimeRangeMake(CMTimeMake(0, 1), CMTimeMake( 5, 1);

我发现第一个CMTimeMake指向第二个,在我的情况下将开始淡出当前的第二个,另一个CMTimeMake是淡出的持续时间

于 2016-06-14T14:56:44.053 回答