Jzin 2025-03-06 13:52 采纳率: 85.7%
浏览 52

Android录制视频到本地,注意是SurfaceView显示的图像

Android10-14的项目。功能一切正常
点击"开始"拍摄 点击"结束"并点击弹出框的"确定"的时候 把SurfaceView显示的图像 本地保存视频
注意是SurfaceView显示的图像
视频是通过调用C++代码绘制到SurfaceView的
不知道如何捕获这个视频
有无办法?

项目代码:
https://c.wss.cc/f/gge63uqay5x 复制链接到浏览器打开
apk安装包:
https://c.wss.cc/f/gge6ynr57qt 复制链接到浏览器打开

img

img

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-03-06 13:53
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    解决方案

    你想要在 Android 10-14 项目中,使用 SurfaceView 显示的图像录制视频到本地,并且视频是通过 SurfaceView 显示的图像生成的。

    可以使用 MediaRecorder 类来实现视频录制。首先,需要获取 SurfaceView 的 SurfaceHolder 对象,然后将其设置为 MediaRecorder 的 Surface 对象。

    下面是一个简单的示例代码:

    // 获取 SurfaceView 的 SurfaceHolder 对象
    SurfaceView surfaceView = findViewById(R.id.surface_view);
    SurfaceHolder surfaceHolder = surfaceView.getHolder();
    
    // 创建 MediaRecorder 对象
    MediaRecorder mediaRecorder = new MediaRecorder();
    
    // 设置 MediaRecorder 的 Surface 对象
    mediaRecorder.setSurface(surfaceHolder.getSurface());
    
    // 设置其他参数,例如音频源、视频编码等
    mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
    mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
    
    // 开始录制
    mediaRecorder.start();
    
    // 停止录制
    mediaRecorder.stop();
    
    // 释放资源
    mediaRecorder.release();
    

    在上面的代码中,我们首先获取 SurfaceView 的 SurfaceHolder 对象,然后将其设置为 MediaRecorder 的 Surface 对象。然后,我们设置其他参数,例如音频源、视频编码等。最后,我们开始录制,停止录制,并释放资源。

    需要注意的是,在 Android 10-14 项目中,需要在 AndroidManifest.xml 文件中添加以下权限:

    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.CAMERA" />
    

    这两个权限是为了录制音频和视频的。

    评论

报告相同问题?

问题事件

  • 修改了问题 3月6日
  • 创建了问题 3月6日