使用摄像头录制视频

package com.example.makevideo;

import android.hardware.Camera;
import android.media.MediaRecorder;
import android.os.Build;
import android.os.Environment;
import android.view.SurfaceView;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

import java.io.File;
import java.io.IOException;

public class MainActivity extends AppCompatActivity {

    private Button play,stop,record;
    private SurfaceView surfaceView;
    private File videoFile;
    private MediaRecorder mediaRecorder;
    private Camera camera;
    private boolean isRecord=false;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

        //设置摄像头参数
        surfaceView=findViewById(R.id.surfaceView);
        surfaceView.getHolder().setFixedSize(1920,1080);//设置分辨率

        record=findViewById(R.id.record);
        record.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                record();
            }
        });

        stop=findViewById(R.id.stop);
        stop.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //停止录制并提示保存路径
                if(isRecord)
                {
                    mediaRecorder.stop();
                    mediaRecorder.release();
                    Toast.makeText(MainActivity.this, "视频保存在:"+videoFile, Toast.LENGTH_LONG).show();
                }
            }
        });
    }

    private void record()//录制视频
    {
        File path=new File(Environment.getExternalStorageDirectory()+"/MyVideo/");//视频保存的文件夹
        if(!path.exists())
            path.mkdir();
        String fileName="video_test.mp4";
        videoFile=new File(path,fileName);//视频文件
        mediaRecorder=new MediaRecorder();
        camera.setDisplayOrientation(90);//调整摄像头的角度
        camera.unlock();//解锁摄像头
        mediaRecorder.setCamera(camera);//使用摄像头
        mediaRecorder.reset();//重置摄像头
        mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);//设置麦克风
        mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);//使用摄像头获取图像
        mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);//设置视频输出格式
        mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);//设置声音编码格式
        mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);//设置视频的编码格式
        mediaRecorder.setVideoEncodingBitRate(1920*1080);//设置清晰度
        mediaRecorder.setVideoSize(1920,1080);//视频尺寸
        mediaRecorder.setVideoFrameRate(10);//每秒有10帧
        mediaRecorder.setOutputFile(videoFile.getAbsolutePath());//视频输出路径
        mediaRecorder.setPreviewDisplay(surfaceView.getHolder().getSurface());//设置使用的surfaceView
        mediaRecorder.setOrientationHint(90);//调整视频播放的角度
        try {
            mediaRecorder.prepare();//准备录像
        } catch (IOException e) {
            e.printStackTrace();
        }
        mediaRecorder.start();
        Toast.makeText(this, "开始录制", Toast.LENGTH_SHORT).show();
        isRecord=true;
    }

    protected void onResume()
    {
        super.onResume();
        //当activity获得焦点时,开启摄像头
        camera=Camera.open();
    }

    protected void onPause()
    {
        super.onPause();
        //失去焦点,关闭预览
        camera.stopPreview();
        camera.release();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值