使用 AVMutableAudioMixInputParameters 的音量淡出
Volume fadeOut using AVMutableAudioMixInputParameters
我想在用户点击停止按钮时淡出音轨,例如,我使用这段代码来淡出声音
-(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];}
但是当我点击按钮时,音量一下子变为零。
我现在知道我的错了,它在 CMTimeRange 的第一个 CMTime 参数中
CMTimeRangeMake(CMTimeMake(0, 1), CMTimeMake( 5, 1);
我发现第一个 CMTimeMake
指向将在我的情况下开始淡出的第二个,即当前秒,另一个 CMTimeMake
用于淡出的持续时间
我想在用户点击停止按钮时淡出音轨,例如,我使用这段代码来淡出声音
-(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];}
但是当我点击按钮时,音量一下子变为零。
我现在知道我的错了,它在 CMTimeRange 的第一个 CMTime 参数中
CMTimeRangeMake(CMTimeMake(0, 1), CMTimeMake( 5, 1);
我发现第一个 CMTimeMake
指向将在我的情况下开始淡出的第二个,即当前秒,另一个 CMTimeMake
用于淡出的持续时间