AVPlayer Dynamic Volume control

¿Cómo puedo cambiar el volumen de AVPlayer de forma dinámica? Es decir, quiero silenciar el volumen cada vez que se presiona un button. el código dado parece cambiarlo solo en time de compilation. ¿Cómo hacerlo durante el time de ejecución?

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]; 

Puede enviar a playerItem nuevas instancias de AVMutableAudioMix durante la reproducción para cambiar los niveles dinámicamente. Simplemente vincule su button a un método de acción que cree una nueva instancia de AVMutableAudioMix (como ha hecho anteriormente) con los valores apropiados, y use el método setAudioMix: set de setAudioMix: para establecer los nuevos valores de mezcla. (Si está trabajando en todos los methods, no olvide save una reference a su instancia playerItem para acceder más tarde).

(NB setAudioMix: no se menciona explícitamente en los documentos AVPlayerItem porque es un sintetizador sintetizado para la propiedad audioMix ).