Ao receber uma chamada, o vídeo gravado está corrompido e os métodos AVFoundation estão apresentando erros
-
13-11-2019 - |
Pergunta
Eu tenho um aplicativo de gravação de vídeo.Tudo funciona bem.Exceto quando uma chamada é recebida durante a gravação.
Quando uma chamada é recebida, tento encerrar a gravação, porém, qualquer uma das minhas chamadas para gravar em um AVAssetWriter é negada.audioWriterInput appendSampleBuffer
retorna não, appendPixelBuffer
erros.Eu tento ligar para avAssetWriter finishWriting
mas isso retorna AVAssetWriterStatusFailed
.
Nada funciona, meu vídeo está corrompido porque parece que meus métodos usuais para encerrar uma sessão de gravação não estão sendo permitidos após o recebimento de uma chamada.
O que posso ouvir para encerrar adequadamente uma sessão de gravação quando uma chamada for recebida?A única coisa que posso fazer atualmente é ouvir applicationWillResignActive
e pare tudo, mas isso impede a gravação enquanto um usuário recebe uma mensagem de texto, etc.o que faria meu aplicativo funcionar de maneira diferente do aplicativo Câmera nativo.
Solução
Dê uma olhada no Telefonia Central quadro e, especificamente, o CTCallCenter
aula.Você pode registrar um callEventHandler
que é um bloco que aceita um CTCall
objeto.Este objeto descreve o estado da chamada.Tente encerrar a gravação quando o objeto de chamada indicar que é uma chamada recebida.