Я воспроизводю видео в AVPlayer, и теперь мне нужно отключить звук только во время его воспроизведения. Пожалуйста, предложите, как это сделать в задаче C.
Спасибо, Суреш
Я воспроизводю видео в AVPlayer, и теперь мне нужно отключить звук только во время его воспроизведения. Пожалуйста, предложите, как это сделать в задаче C.
Спасибо, Суреш
Начиная с iOS7 вы можете установить для свойства AVPlayer isMuted
значение true
.
В Objective C это свойство называется muted
.
Ссылка: https://developer.apple.com/documentation/avfoundation/avplayer/1387544-ismuted
Это должно помочь вам пройти через...
AVURLAsset *asset = [[avPlayer currentItem] asset];
NSArray *audioTracks = [asset tracksWithMediaType:AVMediaTypeAudio];
// Mute all the audio tracks
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];
[[avPlayer currentItem] setAudioMix:audioZeroMix];
Для Swift 4 выше, чтобы отключить звук видео в AVPlayer
self.player.isMuted = true
SWIFT 2.0 и SWIFT 3.0 (по состоянию на 5 июля 2017 г.)
Для тех из вас, кто интересуется Swift, это просто:
self.avPlayer.muted = true
САМЫЙ ПРОСТОЙ способ для OBJECTIVE-C:
self.avPlayer.muted = true;
player.isMuted = true
у меня не работает.
В моем случае мне нужно, чтобы видео постоянно отключалось. Поэтому я использовал приведенный ниже код для достижения этой цели.
self.player.volume = 0.0
Вам нужно установить muted false, когда видео воспроизводит статус.
добавить слушателя:
[itemPlayer addObserver:self
forKeyPath:kStatusKey
options:NSKeyValueObservingOptionInitial | NSKeyValueObservingOptionNew
context:@"AVPlayerStatus"];
код:
-(void)observeValueForKeyPath:(NSString *)path ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
if (context == @"AVPlayerStatus") {
AVPlayerStatus status = [[change objectForKey:NSKeyValueChangeNewKey] integerValue];
switch (status) {
case AVPlayerStatusReadyToPlay: {
if (isMuted) {
layerPlayer.player.muted = true;
}
}
default:
break;
}
}
}