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;
}
}
}
MediaRecorder 录制视频
最新推荐文章于 2024-08-10 04:04:14 发布