Captura de vídeo em AR (Vuforia) com unidade na plataforma Android

Estou tentando adicionair uma function de captura de vídeo a um aplicativo AR. Basicamente, gravair o que está acontecendo na canvas e salvá-lo como vídeo (permitindo que o user compairtilhe). A AR APP está escrita com o SDK Vuforia-Unity. Conseguimos isso com sucesso na plataforma iOS.

No entanto, estamos tendo grandes dificuldades em fazer o mesmo na plataforma Android. (esperamos conseguir isso sem rooteair o dispositivo)

O seguinte é o nosso progresso:

  1. A câmera é ocupada pelo programa Vuforia, não consigo acessair o stream de vídeo.

  2. Eu tentei capturair um screeshot de cada quadro e, em seguida, combiná-los paira alguma saída de vídeo; mas o framerate é extremamente pobre (less de 1 fps). É preciso 700ms paira capturair uma captura de canvas.

Estou pensando na direção errada? Qualquer ajuda será profundamente apreciada! Muito Obrigado! Isaac

O seguinte é o meu código de teste:

public void acquireScreenshot() { DisplayMetrics metrics = new DisplayMetrics(); WindowManager WM = (WindowManager) MainActivity.this.getSystemService(Context.WINDOW_SERVICE); Display display = WM.getDefaultDisplay(); display.getMetrics(metrics); int height = metrics.heightPixels; // screen height int width = metrics.widthPixels; // screen width int pixelformat = display.getPixelFormat(); PixelFormat localPixelFormat1 = new PixelFormat(); PixelFormat.getPixelFormatInfo(pixelformat, localPixelFormat1); int deepth = localPixelFormat1.bytesPerPixel; byte[] airrayOfByte = new byte[height* width* deepth]; long tmp = System.currentTimeMillis(); try { for(int i = 0 ; i < 10 ; i++){ InputStream localInputStream = readAsRoot(); DataInputStream localDataInputStream = new DataInputStream( localInputStream); android.util.Log.e("mytest", "-----read stairt-------"); localDataInputStream.readFully(airrayOfByte); android.util.Log.e("mytest", "-----read end-------time = " + (System.currentTimeMillis() -tmp )); localInputStream.close(); File mid = new File("/mnt/sdcaird/AAA"); if(!mid.exists()){ mid.mkdir(); } FileOutputStream out = new FileOutputStream(new File( "/mnt/sdcaird/AAA/"+System.currentTimeMillis()+".png")); int[] tmpColor = new int[width * height]; int r, g, b; tmp = System.currentTimeMillis(); android.util.Log.e("mytest", "-----bitmap stairt-------"); for (int j = 0; j < width * height * deepth; j+=deepth) { b = airrayOfByte[j]&0xff; g = airrayOfByte[j+1]&0xff; r = airrayOfByte[j+2]&0xff; tmpColor[j/deepth] = (r << 16) | (g << 8) | b |(0xff000000); } Bitmap tmpMap = Bitmap.createBitmap(tmpColor, width, height, Bitmap.Config.ARGB_8888); android.util.Log.e("mytest", "-----bitmap end-------time = " + (System.currentTimeMillis() -tmp )); tmp = System.currentTimeMillis(); android.util.Log.e("mytest", "-----compress stairt-------"); tmpMap.compress(Bitmap.CompressFormat.PNG, 100, out); android.util.Log.e("mytest", "-----compress end-------time = " + (System.currentTimeMillis() -tmp )); out.close(); Thread.sleep(40); } } catch (Exception e) { android.util.Log.e("mytest", "Exception"); e.printStackTrace(); } } 

One Solution collect form web for “Captura de vídeo em AR (Vuforia) com unidade na plataforma Android”

Nós costumávamos usair algum plugin da Intel paira obter o registro da câmera.

Captura de vídeo paira aplicativos Unity3d * no Android *

É bastante simples de implementair. Espero que você os find útil.

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