是否可以将Android中某些View中的所有操作记录为视频?也许使用C/C++或其他任何东西?
我知道有使用shell记录的方法,但需要root.没有它会更好.我们也将从SDK Version 16开始.
您可以使用javacv库来组合从视图中获取的一组位图; 代码看起来像这样:
FFmpegFrameRecorder recorder = new FFmpegFrameRecorder("/sdcard/test.mp4",256,256);
try {
recorder.setVideoCodec(avcodec.AV_CODEC_ID_MPEG4);
recorder.setFormat("mp4");
recorder.setFrameRate(30);
recorder.setPixelFormat(avutil.PIX_FMT_YUV420P10);
recorder.setVideoBitrate(1200);
recorder.startUnsafe();
for (int i=0;i< 5;i++)
{
view.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
view.setDrawingCacheEnabled(false);
recorder.record(bitmap);
}
recorder.stop();
}
catch (Exception e){
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
这里有一个关于如何记录的完整示例
您可以使用众所周知的技术来获取应用的“视图”的屏幕截图。如果捕获多个连续图像,则可以将它们合并为视频。
如果要以更高的帧速率实时进行此操作,建议的方法是通过MediaProjection类使用虚拟显示器,将输出馈送到视频编码器中。这需要API 21。
在API 16设备上记录屏幕将需要本机代码和使用非公共接口。有可能,但并不容易。
| 归档时间: |
|
| 查看次数: |
3137 次 |
| 最近记录: |