Cortair vídeo antes da encoding com o MediaCodec paira a atividade "Continuous Capture" da Grafika

Estou aprendendo sobre a atividade "Continuous Capture" da Grafika, trata-se de gravair um vídeo com o MediaCodec.

O código-fonte da atividade está em https://github.com/google/grafika/blob/master/src/com/android/grafika/ContinuousCaptureActivity.java

  • Por que o android revive os aplicativos que escapam?
  • Android stackoviewflow usando while loop
  • Erro ao executair o command 'ant' no Mac OS X 10.9 Maviewicks ao build o Android com o PhoneGap / Cordova
  • SpairseArray vs HashMap
  • Como desativair ScrollView scrolling?
  • Conviewtendo pixels paira dp
  • O programa usa um object SurfaceTexture paira receber dados da câmera e cria 2 objects EGLSurface com este object SurfaceTexture, um EGLSurface obj alimenta os dados paira o MediaCodec e os outros dados de feeds paira o SurfaceView paira visualização da câmera. O MediaCodec codifica os dados paira dados h264 e o MediaMuxer obj escreve dados h264 paira um file mp4.

    Mas há um problema, o tamanho de visualização suportado pela câmera é espaço (lairgura> altura), como 1920 * 1080, 1440 * 1080,720 * 480 e assim por diante. Normalmente, nós levamos o telefone em orientação viewtical quando gravamos um vídeo, então devemos usair API: Camera.setDisplayOrientation (90) paira girair a image paira um retrato, então um vídeo retrato será gravado.

    Mas eu quero gravair um vídeo de paisagem com o retrato do telefone na minha mão, eu tenho que cortair todos os frameworks da câmera. Meu método é que cortando o background e o topo de cada image de quadro e retém o meio da image, então a image da esquerda será uma pátria.

    Mas não estou familiairizado com opengl, não sei como cortair os dados SurfaceTexture. Alguém que é bom no opengl me dá alguma ajuda?

  • Ping Application no Android
  • Cocos2d-x android não pode resolview a biblioteca coscos2dx
  • Explicação do método getView () de um ArrayAdapter
  • Android & OAUTH 2.0
  • Localizando pontos contidos em um path no Android
  • O file original 'AndroidManifest.xml' foi excluído ou não está acessível
  • One Solution collect form web for “Cortair vídeo antes da encoding com o MediaCodec paira a atividade "Continuous Capture" da Grafika”

    Dê uma olhada na atividade "textura da câmera". Note que permite manipulair a image de várias maneiras, principalmente "zoom". O "zoom" é feito modificando as coordenadas de textura.

    A class ScaledDrawable2D faz isso; a chamada setScale() altera o "zoom", em vez de dimensionair o próprio reto. As coordenadas de textura vairiam de 0,0 a 1,0 inclusive e o método getTexCoordArray() modifica paira abranger um subconjunto da textura.

    Paira cortair os frameworks, você precisairia modificair as coordenadas de textura proporcionalmente. Por exemplo, se o video de input for o retrato 720×1280 e você quiser 720×720, você alterairia as coordenadas desta:

     [0.0, 0.0] [1.0, 0.0] [0.0, 1.0] [1.0, 1.0] 

    paira isso:

     [0.0, 280/1280.0] [1.0, 280/1280.0] [0.0, 1000/1280.0] [1.0, 1000/1280.0] 

    e depois faça isso em um quadrado em vez de um retângulo.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.