Al recibir una llamada entrante, el vídeo grabado está dañado y los métodos de AVFoundation dan errores
-
13-11-2019 - |
Pregunta
Tengo una aplicación de grabación de video.Todo funciona bien.Excepto cuando se recibe una llamada telefónica durante la grabación.
Cuando recibo una llamada telefónica, intento finalizar la grabación; sin embargo, cualquiera de mis llamadas para escribir en un AVAssetWriter es rechazada.audioEscritorEntrada appendSampleBuffer
devuelve no, appendPixelBuffer
errores fuera.Intento llamar a avAssetWriter finishWriting
pero eso regresa AVAssetWriterStatusFailed
.
Nada funciona, mi video está dañado porque parece que mis métodos habituales para finalizar una sesión de grabación no se permiten una vez que se recibe una llamada.
¿Qué puedo escuchar para finalizar correctamente una sesión de grabación cuando recibo una llamada telefónica?Lo único que puedo hacer actualmente es escuchar applicationWillResignActive
y detener todo, pero eso impide grabar mientras un usuario recibe un mensaje de texto, etc.lo que haría que mi aplicación funcionara de manera diferente a la aplicación nativa de Cámara.
Solución
Échale un vistazo al Telefonía central marco, y en concreto el CTCallCenter
clase.Puedes registrar un callEventHandler
que es un bloque que acepta un CTCall
objeto.Este objeto describe el estado de la llamada.Intente finalizar la grabación cuando el objeto de llamada indique que es una llamada entrante.