AVCaptureSession y audio de fondo iOS 7

Cada vez que inicio una sesión de AVCaptureSession que se ejecuta con el micrófono como entrada, cancela cualquier música de fondo que se esté ejecutando actualmente (música de iPod, por ejemplo). Si hago un comentario de la línea que agrega la entrada de audio, el audio de fondo continúa.

¿Alguien sabe una forma de grabar videoclips con el micrófono mientras continúa permitiendo la reproducción de audio de fondo? También hay un error cuando intenta grabar video y la música se está reproduciendo actualmente.

A intentó hacer esto:

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

Pero 'AudioSessionSetProperty' is deprecated: first deprecated in iOS 7.0

Así que intenté hacer esto:

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

Pero finalmente no funcionó. ¡Gracias por la ayuda!

Puede usar AVAudioSessionCategoryOptionMixWithOthers . Por ejemplo,

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

Después de eso, puede usar AVAudioPlayer simultáneamente con AVCaptureSession .

Sin embargo, el código anterior conduce a un volumen muy bajo. Si desea un volumen normal, use el AVAudioSessionCategoryOptionDefaultToSpeaker con AVAudioSessionCategoryOptionMixWithOthers siguiente manera:

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

Esto va bien

En su AppDelegate :

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

Donde está asignando AVCaptureSession :

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

Este código le permitirá reproducir música de fondo y ejecutar AVCaptureSession con el micrófono.

ACTUALIZACIÓN DE 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 } 

Donde está asignando AVCaptureSession :

 let session = AVCaptureSession() session.automaticallyConfiguresApplicationAudioSession = false 
Intereting Posts