Android:如何从屏幕的所需部分录制视频?

时间:2015-11-20 10:02:49

标签: android android-camera surfaceview video-capture

我需要从屏幕的所需部分捕获视频,如 -

enter image description here

我试过了

...
try {
        camera.unlock();
        recorder.setCamera(camera);
        recorder.setOrientationHint(cameraRotationDegree);
        recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
        recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        **recorder.setVideoSize(sz.width, sz.height);**
        recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
        recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
        recorder.setOutputFile(fileName);
        recorder.prepare();
        recorder.start();
        isRecording = true;
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

但它会在屏幕上记录。

是否可以从屏幕的所需部分捕获视频?

1 个答案:

答案 0 :(得分:0)

视频被静态内容遮挡而在显示屏上被切断。您无法在显示屏上进行录制,即使可以,您也可以在视频中使用静态内容。

一种方法是将视频定向到SurfaceTexture,它将每个传入帧转换为OpenGL ES"外部"质地。然后,您可以将帧的所需部分渲染两次,一次渲染到显示器,一次渲染到视频编码器。这是相当复杂的,但您可以在Grafika中找到各个位的示例。

效率较低但可能更直接的方法是使用类似ffmpeg的内容对视频文件进行后期处理。我还没有使用它,但它似乎相当复杂,并且可能提供一种简单的方法来重新编码视频与裁剪。

最简单的选择是简单地将相机预览适合您的布局,并使用全帧。