如何使MPMoviePlayerController忽略静音开关

时间:2010-12-08 14:50:49

标签: ios iphone mpmovieplayercontroller avaudiosession

我想使用MPMoviePlayerController播放视频,但我希望它忽略静音开关,类似于Youtube视频播放器的行为。

有什么想法吗?

5 个答案:

答案 0 :(得分:48)

使用AVAudioSession类别AVAudioSessionCategoryPlayback,您的应用会忽略静音开关,例如Youtube应用。

例如(在评论中受到Ken Pletzer的启发):

#import <AVFoundation/AVFoundation.h>

// note: you also need to add AVfoundation.framework to your project's 
// list of linked frameworks
NSError *error = nil;
BOOL success = [[AVAudioSession sharedInstance] 
                setCategory:AVAudioSessionCategoryPlayback 
                error:&error];
if (!success) {
    // Handle error here, as appropriate
}

答案 1 :(得分:2)

_player.useApplicationAudioSession = NO;

答案 2 :(得分:1)

导入AVFoundation后,只需将其放入代理中:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];

答案 3 :(得分:1)

Swift中的

:在播放声音/视频之前执行此操作(例如在应用程序开始时)

do{
  try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
} catch {
  //Didn't work
}

答案 4 :(得分:1)

对于未来的任何人,我知道这已经得到了解答,但我在我的应用中播放视频时遇到了问题,导致像spotify,youtube等应用停止播放音频,所以我最终使用了这个:

NSError *silentSwitcherror = nil;
BOOL silentSwitchSuccess = [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:&silentSwitcherror];
if (silentSwitchSuccess)
{
//put whatever video code you are trying to play
}
else
{
//put how to handle failed instances.
}