Android中使用MediaRecorder进行录像详解(视频录制)
在Android开发中,我们常常需要使用到视频录制功能。Android系统提供了许多方式来实现这个功能,其中最常用的是使用MediaRecorder类进行录像。
相关准备工作
在使用MediaRecorder录像前,需要我们先进行一些准备工作:
添加权限
在AndroidManifest.xml文件中添加以下权限:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
创建录像需要使用的SurfaceView
<SurfaceView
android:id="@+id/surface_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
初始化MediaRecorder对象
MediaRecorder mediaRecorder = new MediaRecorder();
开始录像
首先,我们需要在SurfaceView上创建一个预览画面:
SurfaceView surfaceView = findViewById(R.id.surface_view);
SurfaceHolder surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
camera.setPreviewDisplay(holder);
camera.startPreview();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
});
接下来,我们就可以开始录像了:
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);// 设置音频源为麦克风
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);// 设置视频源为摄像头
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);// 设置输出格式为MP4
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);// 设置音频编码格式为AAC
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);// 设置视频编码格式为H264
mediaRecorder.setVideoSize(640, 480);// 设置视频分辨率
mediaRecorder.setVideoEncodingBitRate(3 * 1024 * 1024);// 设置视频编码码率
mediaRecorder.setPreviewDisplay(surfaceHolder.getSurface());
mediaRecorder.setOutputFile(outputFile.getAbsolutePath());
mediaRecorder.prepare();
mediaRecorder.start();
上述代码中,我们设置了录像的各种参数,然后调用prepare方法准备录制,接着调用start方法开始录制。
停止录像
我们可以在代码中设置一个时间段,到达后停止录像:
handler.postDelayed(new Runnable() {
@Override
public void run() {
mediaRecorder.stop(); // 停止录制
mediaRecorder.release(); // 释放资源
camera.release(); // 释放摄像头资源
}
}, 10 * 1000);
总结
使用MediaRecorder进行录像非常方便,只需要设置好参数就可以录制出高质量的视频。但是在使用MediaRecorder时也需要注意一些问题,例如:调用stop方法后要记得调用release方法释放资源,否则会出现资源占用的情况。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:android中使用mediarecorder进行录像详解(视频录制) - Python技术站