Grabe video mientras se reproduce otro video.

Estoy usando UIImagePickerController para grabar un video. y estoy usando AVPlayer para reproducir un video. y agregando AVPlayerLayer a la UIImagePickerController's cameraOverlayView para que pueda ver videos mientras graba. Mi requisito es

  1. Necesito ver videos mientras grabo video usando UIImagePickerController
  2. Uso de audífonos Necesito escuchar audio de reproducir video.
  3. Necesito grabar mi voz para grabar videos.
  4. solo se debe grabar mi voz pero no reproducir el audio del video.

cada cosa que funciona pero 4. el audio de la reproducción de video también se mezcla con mi voz. ¿Cómo manejar este caso? Mi meta final es

  1. El video del juego es auricular
  2. La input para la grabación es el micrófono de los auriculares

Por favor, ayúdame a hacer esto.

Su requerimiento es interesante. Entonces, necesitas jugar y grabar al mismo time, ¿verdad? Para eso, deberá inicializar la session de audio con la categoría AVAudioSessionCategoryPlayAndRecord .

 [[AVAudioSession shanetworkingInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:&error]; 

Porque está utilizando UIImagePickerController para grabar, por lo que no tiene mucho control sobre su altavoz y su micrófono. Así que testing y mira si funciona.

En caso de que todavía tenga un problema, le sugiero que use AVCaptureSession para grabar videos sin audio. Mira este ejemplo cómo usarlo record-video-with-avcapturesession-2 .

ACTUALIZACIÓN: en mi aplicación de VOIP, uso AVAudioUnit para grabar durante la reproducción. Entonces, creo que la única forma es grabar video y audio por separado y luego usar AVComposition para componerlo en una sola película. Utilizando AVCaptureSession para grabar solo videos y usar EZAudio para grabar audio. El EZAudio usa AVAudioUnit para grabar para que funcione. Puede probarla grabando audio mientras toca una película y ver si funciona. Espero que ayude

ACTUALIZACIÓN: probé y solo funciona si usa auriculares o selecciona el micrófono de nuevo. Aquí está el código probado:

  NSString *moviePath = [[NSBundle mainBundle] pathForResource:@"videoviewdemo" ofType:@"mp4"]; NSURL *url = [NSURL fileURLWithPath:moviePath]; // You may find a test stream at <http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8>. AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:url]; AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem]; AVPlayerLayer *layer = [[AVPlayerLayer alloc] init]; [layer setPlayer:player]; [layer setFrame:CGRectMake(0, 0, 100, 100)]; [self.view.layer addSublayer:layer]; [player play]; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ // // Setup the AVAudioSession. EZMicrophone will not work properly on iOS // if you don't do this! // AVAudioSession *session = [AVAudioSession shanetworkingInstance]; NSError *error; [session setCategory:AVAudioSessionCategoryPlayAndRecord error:&error]; if (error) { NSLog(@"Error setting up audio session category: %@", error.localizedDescription); } [session setActive:YES error:&error]; if (error) { NSLog(@"Error setting up audio session active: %@", error.localizedDescription); } // // Customizing the audio plot's look // // Background color self.audioPlot.backgroundColor = [UIColor colorWithRed:0.984 green:0.471 blue:0.525 alpha:1.0]; // Waveform color self.audioPlot.color = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0]; // Plot type self.audioPlot.plotType = EZPlotTypeBuffer; // // Create the microphone // self.microphone = [EZMicrophone microphoneWithDelegate:self]; // // Set up the microphone input UIPickerView items to select // between different microphone inputs. Here what we're doing behind the hood // is enumerating the available inputs provided by the AVAudioSession. // self.inputs = [EZAudioDevice inputDevices]; self.microphoneInputPickerView.dataSource = self; self.microphoneInputPickerView.delegate = self; // // Start the microphone // [self.microphone startFetchingAudio]; self.microphoneTextLabel.text = @"Microphone On"; [[AVAudioSession shanetworkingInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil]; }); 

Echa un vistazo a la biblioteca PBJVision . Le permite grabar videos mientras ve la vista previa y, al final, puede hacer lo que quiera con audio y video.