Как отключить воспроизведение видео в AVPlayer? - PullRequest
17 голосов
/ 25 мая 2011

Я играю видео в AVPlayer, и теперь мне нужно отключить звук во время воспроизведения.Подскажите пожалуйста, как это сделать в объективе С.

Спасибо, Суреш

Ответы [ 6 ]

25 голосов
/ 28 января 2015

Начиная с iOS7, вы можете установить для свойства AVPlayer isMuted значение true.

В Objective C свойство называется muted.

Ссылка: https://developer.apple.com/documentation/avfoundation/avplayer/1387544-ismuted

9 голосов
/ 04 июня 2011

Это должно видеть вас через ...

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];
4 голосов
/ 04 февраля 2017

SWIFT 2.0 и SWIFT 3.0 (по состоянию на 5 июля 2017 г.)

Для тех из вас, кто интересуется Swift, это просто:

self.avPlayer.muted = true

Самый простой способ для OBJECTIVE-C:

self.avPlayer.muted = true;
0 голосов
/ 20 июня 2019

player.isMuted = true не работает для меня.

В моем случае видео постоянно отключено. Поэтому я использовал приведенный ниже код для достижения этой цели.

self.player.volume = 0.0
0 голосов
/ 15 ноября 2018

Для Swift 4 выше, чтобы отключить AVPlayer видео

self.player.isMuted = true
0 голосов
/ 04 августа 2018

Вам нужно установить 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;
        }
    }
}
...