MediaRecorder 录制视频

package com.example.tyxiong.myapplication;

import android.app.Activity;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.Surface;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;

import java.io.IOException;

/*

*MediaRecorder录制音 视频: 通过麦克风来录制音频...摄像头录制视频
  使用步骤8步(3-4顺序)
    1 创建MediaRecorder对象.
    2 对象的setAudioSource()设置声音来源--MediaRecorder.AudioSource.MIC   setVideoSource()设置视频来源--Camera
    3 setOutputFormat()设置视频频输出格式
    4 setAudioEncoder()/setAudioEncodingBitRate() 编码格式/编码位率/采样率   视频编码格式 帧数 视频尺寸videosize
    5 setOutputFile() 设置输出路径
    6 prepare()准备
    7 start()开始
    8 stop()停止--release()释放资源.
    ---RECORD_AUDIO录制声音权限
    ---Camera

 *  */


public class MainActivity extends Activity {
    private static final String TAG = "xxx";

    String path = null;
    MediaRecorder mediaRecorder;
    private Surface surface;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        SurfaceView surfaceView = (SurfaceView) findViewById(R.id.surfaceView);
        SurfaceHolder surfaceHolder = surfaceView.getHolder();
        //surfaceHolder.setFixedSize(320, 480);
        surfaceHolder.setKeepScreenOn(true);
        //surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);//API level11前有效
        surfaceHolder.addCallback(new SurfaceHolder.Callback() {
            @Override
            public void surfaceCreated(SurfaceHolder holder) {
                surface = holder.getSurface();
            }

            @Override
            public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

            }

            @Override
            public void surfaceDestroyed(SurfaceHolder holder) {

            }
        });
        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
            try {
                path = Environment.getExternalStorageDirectory().getCanonicalPath() + "/video1.mp4";

            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }


    public void click(View view) {

        if (surface == null) {
            return;
        }
        mediaRecorder = new MediaRecorder();
        mediaRecorder.reset();
        mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
        mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);//格式
        mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);//编码格式
        mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
      //  mediaRecorder.setVideoFrameRate(50);4.42加上这两句会start()failed  硬件不支持吧,google
      // mediaRecorder.setVideoSize(320, 480);
       mediaRecorder.setPreviewDisplay(surface);
        mediaRecorder.setOutputFile(path);

        try {
            mediaRecorder.prepare();
            mediaRecorder.setOnInfoListener(new MediaRecorder.OnInfoListener() {
                @Override
                public void onInfo(MediaRecorder mr, int what, int extra) {
                    Log.w(TAG, "onInfo: "+what+extra);
                }
            });
            mediaRecorder.setOnErrorListener(new MediaRecorder.OnErrorListener() {
                @Override
                public void onError(MediaRecorder mr, int what, int extra) {
                    Log.w(TAG, "onError: " + what + extra);
                }
            });
            mediaRecorder.start();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void stop(View view) {
        mediaRecorder.stop();
        mediaRecorder.release();
        mediaRecorder = null;
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (mediaRecorder != null) {
            mediaRecorder.release();
            mediaRecorder = null;
        }
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋葵好吃吗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值