Android上是否可以直接录制MJPEG?
创始人
2024-10-10 06:30:44
0

可以使用 Camera2 API 在 Android 上直接录制 MJPEG 格式的视频。

以下是示例代码:

创建 CameraCaptureSession

private void createCameraPreviewSession() {
    try {
        SurfaceTexture texture = mTextureView.getSurfaceTexture();
        assert texture != null;

        // 将默认缓冲区的大小配置为想要的相片大小
        texture.setDefaultBufferSize(mPreviewSize.getWidth(), mPreviewSize.getHeight());

        // 预览输出 Surface
        Surface surface = new Surface(texture);

        // 创建 CaptureRequest,用于设置预览请求参数
        mPreviewRequestBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
        mPreviewRequestBuilder.addTarget(surface);

        // 创建 CameraCaptureSession,用于管理预览请求
        mCameraDevice.createCaptureSession(Arrays.asList(surface), new CameraCaptureSession.StateCallback() {

            @Override
            public void onConfigured(@NonNull CameraCaptureSession cameraCaptureSession) {
                // 配置成功后,开始预览
                mCaptureSession = cameraCaptureSession;
                updatePreview();
            }

            @Override
            public void onConfigureFailed(@NonNull CameraCaptureSession cameraCaptureSession) {
                Toast.makeText(MainActivity.this, "配置失败", Toast.LENGTH_SHORT).show();
            }
        }, null);
    } catch (CameraAccessException e) {
        e.printStackTrace();
    }
}

配置录制请求

private void startRecording() {
    try {
        setUpMediaRecorder();

        // 创建录制请求
        mPreviewRequestBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_RECORD);
        List surfaces = new ArrayList<>();

        // 设置预览 Surface
        SurfaceTexture texture = mTextureView.getSurfaceTexture();
        assert texture != null;
        texture.setDefaultBufferSize(mPreviewSize.getWidth(), mPreviewSize.getHeight());
        Surface previewSurface = new Surface(texture);
        surfaces.add(previewSurface);
        mPreviewRequestBuilder.addTarget(previewSurface);

        // 设置录制 Surface
        Surface recorderSurface = mMediaRecorder.getSurface();
        surfaces.add(recorderSurface);
        mPreviewRequestBuilder.addTarget(recorderSurface);

        // 构建 CaptureSession
        mCameraDevice.createCaptureSession(surfaces, new CameraCaptureSession.StateCallback() {

            @Override
            public void onConfigured(@NonNull CameraCaptureSession cameraCaptureSession) {
                mCaptureSession = cameraCaptureSession;
                updatePreview();

                MainActivity.this.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        // 开始录制
                        mMediaRecorder.start();
                    }
                });
            }

            @Override
            public void onConfigureFailed(@NonNull CameraCaptureSession cameraCaptureSession)

相关内容

热门资讯

黑科技好牌(WPK透视挂)外挂... 黑科技好牌(WPK透视挂)外挂透明挂辅助助手(软件透明挂)原来真的有挂(有挂方针)-哔哩哔哩1、下载...
黑科技存在(Wepoke后台)... 黑科技存在(Wepoke后台)外挂透明挂辅助ai代打(透明挂黑科技)竟然真的有挂(有挂详情)-哔哩哔...
黑科技总结(wepoke最新)... 黑科技总结(wepoke最新)外挂透明挂辅助助手(透视)竟然真的有挂(有挂秘诀)-哔哩哔哩1、完成w...
黑科技中牌率(WPK漏洞)外挂... 黑科技中牌率(WPK漏洞)外挂透明挂辅助器(透明挂黑科技)一直真的是有挂(有挂秘籍)-哔哩哔哩1、进...
黑科技有挂(Wepoke辅助a... 黑科技有挂(Wepoke辅助ai)外挂透明挂辅助ai代打(辅助挂)切实有挂(有挂秘籍)-哔哩哔哩1、...
黑科技讲解(Wepoke大厅房... 黑科技讲解(Wepoke大厅房)外挂透明挂辅助代打(智能ai)一直真的有挂(有挂细节)-哔哩哔哩1、...
黑科技黑科技(红龙扑克)外挂透... 黑科技黑科技(红龙扑克)外挂透明挂辅助设备(辅助挂)切实真的是有挂(有挂方法)-哔哩哔哩1)红龙扑克...
黑科技规律(wepoke挂)外... 黑科技规律(wepoke挂)外挂透明挂辅助器(ai辅助)本来存在有挂(有挂方针)-哔哩哔哩;1、we...
黑科技玄学(微扑克软件)外挂透... 黑科技玄学(微扑克软件)外挂透明挂辅助挂(透明黑科技)竟然真的有挂(证实有挂)-哔哩哔哩1)微扑克软...
黑科技软件(aapoker开发... 黑科技软件(aapoker开发)外挂透明挂辅助黑科技(ai代打)好像存在有挂(有挂透明挂)-哔哩哔哩...