How can I change the volume of AVPlayer dynamically? I mean, I want to mute every time a button is pressed. this code seems to change it only at compile time. How to do this at runtime ???
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:[self myAssetURL] options:nil]; NSArray *audioTracks = [asset tracksWithMediaType:AVMediaTypeAudio]; NSMutableArray *allAudioParams = [NSMutableArray array]; for (AVAssetTrack *track in audioTracks) { AVMutableAudioMixInputParameters *audioInputParams =[AVMutableAudioMixInputParameters audioMixInputParameters]; [audioInputParams setVolume:0.0 atTime:kCMTimeZero]; [audioInputParams setTrackID:[track trackID]]; [allAudioParams addObject:audioInputParams]; } AVMutableAudioMix *audioZeroMix = [AVMutableAudioMix audioMix]; [audioZeroMix setInputParameters:allAudioParams]; AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:asset]; [playerItem setAudioMix:audioZeroMix]; AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem]; self.mPlayer = player; [mPlayer play];
playerItem AVMutableAudioMix , . , AVMutableAudioMix (, ) , playerItem setAudioMix: . ( , playerItem, .)
playerItem
setAudioMix:
(NB setAudioMix: AVPlayerItem docs, audioMix.)
audioMix