Выключить аудиовоспроизведение AVPlayer?

У меня есть AVPlayer с AVPlayerItem. Я хочу отключить воспроизведение звука с AVPlayer. Я хочу воспроизвести только видео.

Может кто-нибудь мне помочь? Спасибо!

    self.avPlayerItem = [AVPlayerItem playerItemWithURL:self.videoUrl];
    self.avPlayer = [AVPlayer playerWithPlayerItem:self.avPlayerItem];
    [self.avPlayer play];
    self.avPlayer.actionAtItemEnd = AVPlayerActionAtItemEndNone;


    self.avPlayerLayer = [AVPlayerLayer playerLayerWithPlayer:self.avPlayer];
    self.avPlayerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(playerItemDidPlayToEndTime:)
                                                 name:AVPlayerItemDidPlayToEndTimeNotification
                                               object:self.avPlayerItem];


    CGRect screenRect = [[UIScreen mainScreen] bounds];

    self.avPlayerLayer.frame = CGRectMake(0, 0, screenRect.size.width , screenRect.size.height );
    [self.view.layer insertSublayer:self.avPlayerLayer atIndex:0];

Ответ 1

У AVPlayer есть опция

@property (nonatomic, getter=isMuted) BOOL muted NS_AVAILABLE(10_7, 7_0);

Вы можете написать

- (void) muteSound:(BOOL)mute
{
    self.avPlayer.muted = mute;
}

И используйте его, как вы хотите

- (void) startPlayingVideo
{

    [self muteSound:YES];

    //other code

} 

Ответ 2

Вы можете отключить звук, выполнив следующий код в viewDidLoad().

AVURLAsset *asset = [AVURLAsset URLAssetWithURL:[self myAssetURL] 
options:nil];
NSArray *audioTracks = [asset tracksWithMediaType:AVMediaTypeAudio]; 

// Mute all the audio 
tracksNSMutableArray *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];

Следующие ссылки могут вам помочь.

Ответ 3

Если кто-то ищет Swift 4:

player.isMuted = true // To mute the sound
player.isMuted = false // To un-mute the sound

Боковое примечание: при отключении видео не запускается видеоролик reset. Он работает как обычная функция отключения звука.