使用MediaRecorder记录屏幕特定视图

时间:2018-01-23 12:31:20

标签: android service ffmpeg mediarecorder screen-recording

我想在特定View链接中录制我的屏幕视频,只想记录LinearLayout内执行的操作。现在,MediaRecorder正在录制整个屏幕,如何录制屏幕的特定部分?

2 个答案:

答案 0 :(得分:0)

MediaRecorder使用媒体投影API记录整个屏幕。没有选项可以记录屏幕的特定部分,至少从Android 8.1开始。您需要编辑全屏视频以将其裁剪为仅显示对您而言重要的屏幕部分。

答案 1 :(得分:0)

这里是捕获特定视图应用程序截图的代码。

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();
}