我想在特定View
链接中录制我的屏幕视频,只想记录在LinearLayout
内执行的动作。现在,MediaRecorder
录制整个屏幕,如何录制屏幕的特定部分?
MediaRecorder
使用媒体投影 API 记录整个屏幕。没有记录屏幕特定部分的选项,至少从Android 8.1开始。您需要编辑全屏视频以将其裁剪为仅显示对您重要的屏幕部分。
这是捕获特定视图的应用程序屏幕截图的代码。
public Bitmap takeScreenShot(View view) {
view.setDrawingCacheEnabled(true);
view.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_LOW);
view.buildDrawingCache();
if(view.getDrawingCache() == null) return null;
Bitmap snapshot = Bitmap.createBitmap(view.getDrawingCache());
view.setDrawingCacheEnabled(false);
view.destroyDrawingCache();
return snapshot;
}
如果你想记录视图,你可以使用javacv库这里是代码示例。
FFmpegFrameRecorder recorder = new FFmpegFrameRecorder("record.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();
}