我正在尝试淡出 AVComposition 轨道(它是视频的音轨)。
我可以在开始时淡出它没问题,但在最后淡出它时遇到很多麻烦。这是我的代码:
AVMutableAudioMixInputParameters *audioMixParameters = [AVMutableAudioMixInputParameters audioMixInputParametersWithTrack:compositionAudioTrack];
[audioMixParameters setVolume:0.0 atTime:kCMTimeZero];
[audioMixParameters setVolumeRampFromStartVolume:0.0 toEndVolume:1.0 timeRange:CMTimeRangeMake(kCMTimeZero, CMTimeMake(150, kVideoFPS))];
CMTime fadeOutBegin = CMTimeMake((length - 5) * kVideoFPS, kVideoFPS);
[audioMixParameters setVolumeRampFromStartVolume:1.0 toEndVolume:0.0 timeRange:CMTimeRangeMake(fadeOutBegin, totalDuration)];
AVMutableAudioMix *audioMix = [AVMutableAudioMix audioMix];
audioMix.inputParameters = [NSArray arrayWithObject:audioMixParameters];
length
是一个 NSUInteger,它是以秒为单位的视频长度。
totalDuration
是总视频时长的 CMTime,时间刻度为kVideoFPS
kVideoFPS
是一个值为 30 的常数
我的目标是在合成结束后 5 秒开始淡出。我已经尝试了各种各样的东西,比如 CMTimeMakeWithSeconds。我还颠倒了淡入的值,它工作正常(在开始时将音量从 1.0 淡入到 0.0)。
任何想法都非常感谢!