Записать вид экрана с помощью MediaRecorder
Я хочу записать мое видео на экране по определенной ссылке Просмотр, хочу записать только действие, выполняемое внутри LinearLayout. Прямо сейчас MediaRecorder записывает весь экран, как записать определенную часть экрана?
2 ответа
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();
}