AVPlayer
использует системную громкость, поэтому, если вам необходимо предоставить элементы управления для этого, вы можете использовать MPVolumeView
, который предоставляет ползунок для регулировки громкости.
Для затухания звука вы можете использовать AVAudioMix
.Вот некоторый код:
//given an AVAsset called asset...
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:asset];
id audioMix = [[AVAudioMix alloc] init];
id volumeMixInput = [[AVMutableAudioMixInputParameters alloc] init];
//fade volume from muted to full over a period of 3 seconds
[volumeMixInput setVolumeRampFromStartVolume:0 toEndVolume:1 timeRange:
CMTimeRangeMake(CMTimeMakeWithSeconds(0, 1), CMTimeMakeWithSeconds(3, 1))];
[volumeMixnput setTrackID:[[asset tracks:objectAtIndex:0] trackID]];
[audioMix setInputParameters:[NSArray arrayWithObject:volumeMixInput]];
[playerItem setAudioMix:audioMix];
Вы также можете резко установить громкость микса в определенный момент времени с помощью:
[volumeMixInput setVolume:.5 atTime:CMTimeMakeWithSeconds(15, 1)];
Надеюсь, это поможет.Этот API определенно не очевиден.Я настоятельно рекомендую посмотреть видео WWDC 10 под названием Discovering AV Foundation .Это отлично.