AVPlayerdynamic音量控制

如何dynamic更改AVPlayer的音量? 我的意思是,我想在每次按下button时将音量静音。 给定的代码似乎只能在编译时改变它。 如何在运行时间呢?

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新实例以dynamic更改级别。 只需将您的button链接到一个操作方法,使用适当的值创build一个新的AVMutableAudioMix实例(如上所述),并使用playerItem的setAudioMix:方法来设置新的混合值。 (如果你正在使用方法,不要忘记保存一个对你的playerItem实例的引用,以便以后访问它。)

(NB setAudioMix:在AVPlayerItem文档中没有明确提到,因为它是audioMix属性的一个合成设置器。)