Pergunta

Estou usando a base AV para capturar imagens continuamente depois que a Apple lançou o iOS 4.0 seguindo os códigos dados por,http://developer.apple.com/iphone/library/qa/qa2010/qa1702.html

No entanto, quando eu chamo [sessão Startrunning];" Demora cerca de 1-2 segundos para iniciar a visualização da câmera. Então, isso é frustrante para o usuário final, pois ele precisa esperar algum tempo.

Existe uma maneira de pausar a sessão, em vez de interromper -a, pois posso iniciar a sessão no lançamento do programa e mantê -la pausar até que o usuário navegue para a tela da câmera e comece a executá -la lá? Obrigado por qualquer ajuda.

Foi útil?

Solução

Não há como "pausar" a sessão, mas você pode iniciar a sessão de captura em execução a qualquer momento e deixá -la em execução. Se você estiver capturando imagens estáticas, basta chamar CapturestillImageasynchronsly da Connection quando estiver pronto. Se você está capturando o vídeo, poderá ter seu CaptureOutput: didutputSampleBuffer: FromConnection: Método no delegado Basta jogar fora os quadros até que você queira fazer algo com eles. Você pode até iniciar a sessão de captura sem um dispositivo de saída até estar pronto (não tentou isso).

Outras dicas

Em vez de fazer uma pausa na sua sessão, você pode desativar a conexão de entrada.

por exemplo

<your_video_preview_layer>.connection.enabled = NO;

para que não consuma os dados do dispositivo de entrada.

Espero que seja isso que você está procurando.

Foi o que eu fiz para impedir que a interface do usuário trave os 1-2 segundos iniciais ao chamar -startrunning.

1) Add UIActivityIndicator
2) Add observer to AVCaptureSession
3) call -startRunning in a background thread
4) Resume the UI in the notification callback
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top