Objective c AVMutableAudioMix-Can';不褪色

Objective c AVMutableAudioMix-Can';不褪色,objective-c,ios,avfoundation,cmtime,Objective C,Ios,Avfoundation,Cmtime,我正在尝试淡出AVComposition曲目(视频的音频曲目) 我可以在一开始就淡出,没问题,但是在最后淡出时我有很多困难。这是我的密码: AVMutableAudioMixInputParameters *audioMixParameters = [AVMutableAudioMixInputParameters audioMixInputParametersWithTrack:compositionAudioTrack]; [audioMixParameters setVolume:0.0

我正在尝试淡出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
是一个整数,它是以秒为单位的视频长度

totalDuration
是视频总持续时间的CMTime,其时间刻度为
kVideoFPS

kVideoFPS
是一个值为30的常数

我的目标是在作文结束后5秒开始淡出。我尝试过各种方法,比如CMTimeMakeWithSeconds。我还反转了淡入的值,效果很好(在开始时将音量从1.0淡入到0.0)


任何想法都非常感谢

CMTimeRangeMake的第二个参数是
CMTimeRange
的持续时间,而不是时间范围的结束时间():

CMTimeRange CMTimeRangeMake(CMTime开始,CMTime持续时间)

试着在构图的最后5秒淡出:

CMTime fadeOutEnd = CMTimeMake(5 * kVideoFPS, kVideoFPS);
[audioMixParameters setVolumeRampFromStartVolume:1.0 toEndVolume:0.0 timeRange:CMTimeRangeMake(fadeOutBegin, fadeOutEnd)];

对于那些将
AVAudioMix
/
AVMutableAudioMix
与流媒体结合使用时遇到麻烦的人,请注意,每个苹果公司目前只支持基于文件的资产

来源:


(在技术说明底部附近)

您确定长度大于5秒吗?是的-长度是可变的,但至少为17秒。您找到了解决方案吗?查看CMTime的详细信息