Bir AR uygulamasına video yakalama işlevi eklemeye çalışıyorum. Ekranda neler olup bittiğini temel olarak kaydedin ve video olarak kaydedin (kullanıcının paylaşmasına izin verin). AR APP Vuforia-Unity SDK ile yazılmıştır. Bunu iOS platformunda başarılı bir şekilde gerçekleştirdik. Bununla birlikte, Android platformunda aynı şeyi yapmakta büyük zorluklarla karşılaşıyoruz. Kamera Vuforia program tarafından ocuppied edilirAndroid platformunda birlikle AR (Vuforia) Video yakalama
, ben video akışına erişim elde edemez: Aşağıdaki
(biz dışarı cihazı köklendirme ile bunu başarmak için umut ediyor) bizim gelişmedir.
Her karenin bir görüntüsünü yakalamayı denedikten sonra bunları bazı video çıkışlarına birleştirdim; ancak çerçeve hızı aşırı derecede fakirdir (1 fps'den az). Bir ekran görüntüsü yakalamak için 700ms gerekir.
Yanlış yönden mi düşünüyorum? Herhangi bir yardım derinden takdir edilecektir! Çok teşekkürler!
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[] arrayOfByte = 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 start-------");
localDataInputStream.readFully(arrayOfByte);
android.util.Log.e("mytest", "-----read end-------time = " + (System.currentTimeMillis() -tmp));
localInputStream.close();
File mid = new File("/mnt/sdcard/AAA");
if(!mid.exists()){
mid.mkdir();
}
FileOutputStream out = new FileOutputStream(new File(
"/mnt/sdcard/AAA/"+System.currentTimeMillis()+".png"));
int[] tmpColor = new int[width * height];
int r, g, b;
tmp = System.currentTimeMillis();
android.util.Log.e("mytest", "-----bitmap start-------");
for (int j = 0; j < width * height * deepth; j+=deepth) {
b = arrayOfByte[j]&0xff;
g = arrayOfByte[j+1]&0xff;
r = arrayOfByte[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 start-------");
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();
}
}
herhangi bir şans çözümünü buldunuz :) –
henüz yok .....>< – user2542563
Herhangi bir gelişme var mı? Şimdiye kadar hiç şanssızlıkla aynı şeyi yapıyorum. – vmachacek