AVCaptureSession和背景音频iOS 7

每当我启动一个与麦克风一起运行的AVCaptureSession作为输入时,它将取消当前正在运行的任何背景音乐(例如iPod音乐)。 如果我注释添加音频输入的行,背景音频会继续。

有没有人知道使用麦克风录制视频剪辑的方法,同时继续播放背景音频? 当您尝试录制视频并且音乐正在播放时也有错误。

A试图这样做:

[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: nil];
UInt32 doSetProperty = 1;
AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof(doSetProperty), &doSetProperty);
[[AVAudioSession sharedInstance] setActive: YES error: nil];

'AudioSessionSetProperty' is deprecated: first deprecated in iOS 7.0

所以我试图这样做:

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *setCategoryError = nil; 
[audioSession setCategory:AVAudioSessionCategoryPlayback
              withOptions:AVAudioSessionCategoryOptionMixWithOthers
                    error:&setCategoryError];
[audioSession setActive:YES error:nil];

但最后它没有奏效。 感谢帮助!


您可以使用AVAudioSessionCategoryOptionMixWithOthers 。 例如,

AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionMixWithOthers error:nil];

之后,您可以与AVCaptureSession同时使用AVAudioPlayer

但是,上面的代码导致音量非常低。 如果您想要正常音量, AVAudioSessionCategoryOptionMixWithOthers按如下方式使用AVAudioSessionCategoryOptionDefaultToSpeakerAVAudioSessionCategoryOptionMixWithOthers

[session setCategory:AVAudioSessionCategoryPlayAndRecord  withOptions:AVAudioSessionCategoryOptionMixWithOthers|AVAudioSessionCategoryOptionDefaultToSpeaker error:nil];

这很好。


在你的AppDelegate中

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    //Stop app pausing other sound.
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord
                                     withOptions:AVAudioSessionCategoryOptionDuckOthers | AVAudioSessionCategoryOptionDefaultToSpeaker
                                           error:nil];
}

在哪里分配AVCaptureSession

AVCaptureSession *session = [[AVCaptureSession alloc] init];
session.automaticallyConfiguresApplicationAudioSession = NO;

此代码将允许您播放背景音乐并使用麦克风运行AVCaptureSession

SWIFT更新:

AppDelegate

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    //Stop app pausing other sound.
    do{
        try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord, 
                                            withOptions: [.DuckOthers, .DefaultToSpeaker])
    }
    catch {

    }

    return true
}

在哪里分配AVCaptureSession

let session = AVCaptureSession()
session.automaticallyConfiguresApplicationAudioSession = false
链接地址: http://www.djcxy.com/p/78149.html

上一篇: AVCaptureSession and background audio iOS 7

下一篇: Crash only on iPad