Как отключить видео, воспроизводимое в AVPlayer?

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

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


person Suresh    schedule 25.05.2011    source источник
comment
self.avPlayer.muted = правда;   -  person BennyTheNerd    schedule 04.02.2017


Ответы (6)


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

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

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

person bcattle    schedule 28.01.2015
comment
self.avPlayer.muted = правда; - person BennyTheNerd; 04.02.2017
comment
Обновлено для Swift 3 - person bcattle; 11.09.2017

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

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];
person friedFingers    schedule 04.06.2011
comment
Я пробовал этот метод, но он не работает в симуляторе. Я использую AVPlayer для воспроизведения файла .mov. Можете ли вы предложить какое-либо другое решение. - person Suresh; 06.06.2011
comment
Я считаю, что это прерывает любую музыку, которую вы можете воспроизводить через приложение «Музыка», iTunes и т. Д. Есть ли способ продолжить воспроизведение музыки в фоновом режиме? - person fulvio; 23.06.2014
comment
Отлично, просто измените первый AVURLAsset на AVAsset, и все будет отлично. - person Eran Talmor; 07.07.2015
comment
Это выглядит очень сложно, не так ли? - person Frédéric Adda; 19.07.2018

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

self.player.isMuted = true
person Hardik Thakkar    schedule 15.11.2018
comment
Это свойство не отключает звук. - person AsifHabib; 04.04.2019
comment
В моем случае я протестировал приведенный выше код, а затем разместил его здесь. - person Hardik Thakkar; 04.04.2019

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

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

self.avPlayer.muted = true

САМЫЙ ПРОСТОЙ способ для OBJECTIVE-C:

self.avPlayer.muted = true;
person BennyTheNerd    schedule 04.02.2017
comment
Извините, это не работает для вас, Виниш. Он работает на моем Swift 3.0 и 3.1. Могут ли быть другие переменные, которые у вас есть? - person BennyTheNerd; 11.09.2017

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

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

self.player.volume = 0.0
person john raja    schedule 20.06.2019

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