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
按如下方式使用AVAudioSessionCategoryOptionDefaultToSpeaker
的AVAudioSessionCategoryOptionMixWithOthers
,
[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