Obtendo quadros de imagem de vídeo no Android

Eu implementei um aplicativo simples que mostra a imagem da câmera na tela. O que eu gosto de fazer agora é pegar um único quadro e processá-lo como bitmap. Pelo que pude descobrir até este ponto, não é uma coisa fácil de fazer.

Eu tentei usar o método onPreviewFrame com o qual você obtém o quadro atual como uma matriz de bytes e tentou decodificá-lo com a classe BitmapFactory, mas retorna null. O formato do quadro é um YUV sem cabeçalho que pode ser traduzido para bitmap, mas demora muito em um telefone. Também li que o método onPreviewFrame tem restrições sobre o tempo de execução, se demorar muito tempo o aplicativo pode falhar.

Então, qual é o caminho certo para fazer isso?

questionAnswers(4)

yourAnswerToTheQuestion