Android屏幕捕获或从图像制作视频

时间:2012-02-01 06:33:26

标签: android screenshot

我想以编程方式制作我的Android屏幕的视频(我在Android屏幕上做的事情)。

是否有关于此的最佳教程或帮助。 我搜索了很多,但我找到了那个东西......(以编程方式捕获android屏幕图片)。 好吧,如果我在每毫秒之后捕获大量图像,那么我将在android程序化中使用大量捕获的图像制作视频。

3 个答案:

答案 0 :(得分:6)

您可以在Android中使用以下代码进行屏幕捕获。

请查看此网址..... http://android-coding.blogspot.in/2011/05/create-custom-dialog-with-dynamic.html

答案 1 :(得分:2)

只要您有位图,就可以使用JCodec(http://jcodec.org)将其翻转为视频。

以下是一个示例图像序列编码器:https://github.com/jcodec/jcodec/blob/master/src/main/java/org/jcodec/api/SequenceEncoder.java。您可以通过用Bitmap替换BufferedImage来修改它。

使用这些辅助方法:

public static Picture fromBitmap(Bitmap src) {
  Picture dst = Picture.create((int)src.getWidth(), (int)src.getHeight(), RGB);
  fromBitmap(src, dst);
  return dst;
}

public static void fromBitmap(Bitmap src, Picture dst) {
  int[] dstData = dst.getPlaneData(0);
  int[] packed = new int[src.getWidth() * src.getHeight()];

  src.getPixels(packed, 0, src.getWidth(), 0, 0, src.getWidth(), src.getHeight());

  for (int i = 0, srcOff = 0, dstOff = 0; i < src.getHeight(); i++) {
    for (int j = 0; j < src.getWidth(); j++, srcOff++, dstOff += 3) {
      int rgb = packed[srcOff];
      dstData[dstOff]     = (rgb >> 16) & 0xff;
      dstData[dstOff + 1] = (rgb >> 8) & 0xff;
      dstData[dstOff + 2] = rgb & 0xff;
    }
  }
}

public static Bitmap toBitmap(Picture src) {
  Bitmap dst = Bitmap.create(pic.getWidth(), pic.getHeight(), ARGB_8888);
  toBitmap(src, dst);
  return dst;
}

public static void toBitmap(Picture src, Bitmap dst) {
  int[] srcData = src.getPlaneData(0);
  int[] packed = new int[src.getWidth() * src.getHeight()];

  for (int i = 0, dstOff = 0, srcOff = 0; i < src.getHeight(); i++) {
    for (int j = 0; j < src.getWidth(); j++, dstOff++, srcOff += 3) {
      packed[dstOff] = (srcData[srcOff] << 16) | (srcData[srcOff + 1] << 8) | srcData[srcOff + 2];
    }
  }
  dst.setPixels(packed, 0, src.getWidth(), 0, 0, src.getWidth(), src.getHeight());
}

您也可以等待JCodec团队实施完整的Android支持,他们正在按照以下方式开展工作:http://jcodec.org/news/no_deps.html

答案 2 :(得分:1)

您可以在Android中使用以下代码进行屏幕捕获。

ImageView v1 = (ImageView)findViewById(R.id.mImage);
v1.setDrawingCacheEnabled(true);
Bitmap bm = v1.getDrawingCache();

要从图像创建视频,请访问this链接。