Выключить аудиовоспроизведение 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. Он работает как обычная функция отключения звука.