2014-07-17 268 views

回答

1

这将是最简单的方法。

-(void)stopAudio 
{ 
    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"" ]]]; 
} 
+0

不幸的是,我不想删除UIWebview的内容。 – fcortes

+0

self.webView.allowsInlineMediaPlayback = YES; self.webView.mediaPlaybackRequiresUserAction = NO; – Bejibun

+0

您还可以添加AVAudioPlayer框架并将音量设置为0. http://mobileorchard.com/easy-audio-playback-with-avaudioplayer/(教程) – Bejibun

3

我找到了将单个玩家UIWebView静音/取消静音的方法。任何时候UIWebView都会启动视频AVPlayerItemBecameCurrentNotification通知。所以处理它并跟踪当前的AVPlayerItem来控制播放。

-(void)viewDidLoad 
{ 
    … 

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerItemBecameCurrent:) 
               name:@"AVPlayerItemBecameCurrentNotification" 
               object:nil]; 
} 

-(void)playerItemBecameCurrent:(NSNotification*)notification 
{ 
    if ([notification.object isKindOfClass:[AVPlayerItem class]]) { 
     self.currentItem = (AVPlayerItem*)notification.object; 
    } 
} 

-(void)muteSound:(BOOL)mute 
{ 
    AVAsset *asset = self.currentItem.asset; 
    NSArray *audioTracks = [asset tracksWithMediaType:AVMediaTypeAudio]; 

    NSMutableArray *allAudioParams = [NSMutableArray array]; 

    for (AVAssetTrack *track in audioTracks) 
    { 
     AVMutableAudioMixInputParameters *audioInputParams = [AVMutableAudioMixInputParameters audioMixInputParameters]; 

     [audioInputParams setVolume:!mute atTime:kCMTimeZero]; 

     [audioInputParams setTrackID:[track trackID]]; 
     [allAudioParams addObject:audioInputParams]; 
    } 

    AVMutableAudioMix *audioZeroMix = [AVMutableAudioMix audioMix]; 
    [audioZeroMix setInputParameters:allAudioParams]; 

    self.currentItem.audioMix = audioZeroMix; 

} 
+0

此代码的迅捷版本? – niks290192