当MPMoviePlayer播放时,AVAudioPlayer在静音模式下播放

时间:2013-04-22 09:27:54

标签: iphone ios objective-c avaudioplayer mpmovieplayer

问题在于AVAudioPlayer本身就应该运行。当设备未处于静音模式时(静音/振铃开关打开),它会播放背景音乐。当静音开关打开时,它也会尊重此状态并且不播放背景音乐。

然而,AVAudioPlayer在静音模式下播放的一个特殊情况是我在MPMoviePlayer中播放视频。

在我的应用程序中,在播放电影之前首先播放BG声音。

有人可以帮忙吗?这只发生在我播放电影时。

其他细节:
BG Loop使用 - m4a型
使用的电影类型 - m4v

我还发现这个场景在iOS 5中反复出现,但有时甚至会在最新版本中出现。

我已经在Google,Apple的文档中进行过各种研究,但在SO中我却无法找到有关此特定情况的任何内容。

我甚至尝试将AVAudioSession的类别显式设置为AVAudioSessionCategoryAmbient,然后调用setActive。 (还尝试了setCategory:withOptions:error方法,但应用程序因某些原因崩溃 - 在设备上测试)

当我尝试使用AVAudioPlayerDelegate时,我甚至尝试设置委托和实现方法。

帮助任何人? :(

2 个答案:

答案 0 :(得分:1)

NSURL *url = [NSURL URLWithString:self.videoURL];
            MPMoviePlayerViewController *mpvc = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
            NSError *_error = nil;
            [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &_error];
            [self presentMoviePlayerViewControllerAnimated:mpvc];

添加此框架

#import <AVFoundation/AVFoundation.h>

尝试这样......

答案 1 :(得分:1)

尝试以这种方式设置音频会话

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
        NSError *err = nil;
        [audioSession setCategory :AVAudioSessionCategoryPlayAndRecord error:&err];
        if(err){
            NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]);
            return;
        }
        [audioSession setActive:YES error:&err];
        err = nil;
        if(err){
            NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]);
            return;
        }