AVMutableAudioMix - 无法淡出

时间:2012-01-14 08:46:31

标签: objective-c ios avfoundation cmtime

我正试图淡出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)。

非常感谢任何想法!

2 个答案:

答案 0 :(得分:1)

对于那些使用AVAudioMix / AVMutableAudioMix与流式媒体一起遇到问题的用户,请注意,根据Apple,它目前仅支持基于 file 的资产。< / p>

<强>来源:

https://developer.apple.com/library/content/qa/qa1716/_index.html

(靠近技术说明的底部)

答案 1 :(得分:0)

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

CMTimeRange CMTimeRangeMake(CMTime start, CMTime duration);

尝试使用淡出最后5秒的构图:

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