Android--MediaRecorder实现手机录像

MediaRecorder实现手机录像

1.界面设计
2.实现代码
3.录像权限

1.界面设计(xxx.xml)
如图:这里写图片描述


    <SurfaceView
        android:layout_width="match_parent"
        android:layout_height="400dp"
        android:id="@+id/sv_media"
        />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="开始"
            android:onClick="start"
            android:layout_weight="1"
            />
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="停止"
            android:onClick="stop"
            android:layout_weight="1"
            />
    </LinearLayout>

2.实现代码(xxxAction)

实现步骤:
<1>将视频动画显示到SurfaceView控件上
<2>使用MediaRecorder类进行视频的录制


public class Main2mmmActivity extends AppCompatActivity {
    private SurfaceView sv_camera;
    private MediaRecorder mediaRecorder;
/*
  MediaRecorder实现手机录像
 */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2mmm);
        sv_camera = (SurfaceView) findViewById(R.id.sv_camera);
        //实例化媒体录制器
        mediaRecorder = new MediaRecorder();
    }

    //开始
    public void start(View view){
        mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);//从照相机采集视频
        mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        //设置保存的格式
        mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        //设置编码格式
        mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263); //设置视频编码方式
        mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        mediaRecorder.setVideoFrameRate(3);//每秒3帧
        //设置保存的路径
        mediaRecorder.setOutputFile("mnt/sdcard/G150825_"+System.currentTimeMillis()+".mp4");
        //将画面展示到SurfaceView
        mediaRecorder.setPreviewDisplay(sv_camera.getHolder().getSurface());

        //准备
        try {
            mediaRecorder.prepare();//预期准备
            mediaRecorder.start();//开始刻录
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //停止
    public void stop(View view){
        mediaRecorder.stop();//停止刻录
    }
}

3.录像权限(AndroidManifest.xml)

    <uses-permission android:name="android.permission.RECORD_AUDIO" /><!--手机录像-->
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Android 10 上使用 MediaRecorder 录像并添加时间水印,您可以采用以下步骤: 1. 使用 SurfaceView 或 TextureView 显示相机预览。 2. 在录制视频之前,在您的视图上绘制时间水印(可以使用 Canvas.drawText() 方法)。 3. 初始化 MediaRecorder,设置音频和视频源以及输出格式和文件路径。 4. 在开始录制之前,使用 MediaRecorder.setPreviewDisplay() 将 SurfaceView 或 TextureView 绑定到 MediaRecorder。 5. 开始录制视频。 6. 在录制过程中,使用 SurfaceView 或 TextureView 的 draw() 方法更新时间水印。 7. 停止录制视频。 下面是一个伪代码示例: ```java // 初始化 MediaRecorder MediaRecorder mediaRecorder = new MediaRecorder(); mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE); mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); mediaRecorder.setOutputFile(outputFilePath); mediaRecorder.setVideoEncodingBitRate(10000000); mediaRecorder.setVideoFrameRate(30); mediaRecorder.setVideoSize(videoWidth, videoHeight); mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); // 绑定 SurfaceView 或 TextureView SurfaceView surfaceView = findViewById(R.id.surface_view); mediaRecorder.setPreviewDisplay(surfaceView.getHolder().getSurface()); // 准备录制 mediaRecorder.prepare(); mediaRecorder.start(); // 在录制期间更新水印 Canvas canvas = surfaceView.getHolder().lockCanvas(); canvas.drawText("当前时间", x, y, paint); surfaceView.getHolder().unlockCanvasAndPost(canvas); // 停止录制 mediaRecorder.stop(); mediaRecorder.release(); ``` 请注意,由于 Android 10 引入了一些限制,如存储访问框架(SAF)和后台运行限制,您可能需要适当处理文件访问和后台任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值