21

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

有任何想法吗?

4

5 回答 5

49

使用该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
}
于 2011-02-08T22:33:17.587 回答
2
_player.useApplicationAudioSession = NO;
于 2012-05-02T12:53:39.970 回答
2

在 Swift 中:在播放声音/视频之前执行一次(例如在应用程序开始时)

do{
  try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
} catch {
  //Didn't work
}
于 2016-07-26T12:39:57.063 回答
2

对于将来的任何人,我知道这已经得到了回答,但是我在我的应用程序中播放视频时遇到了问题,导致像 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.
}
于 2017-07-27T13:02:02.497 回答
1

导入 AVFoundation 后,只需将其放入您的委托中:

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

于 2012-11-14T08:43:26.870 回答