Android MediaRecorder相关(二)
本篇文章简单介绍android中如何使用MediaRecoder录制视频.
录制视频和录制音频的步骤差不多,区别再于需要Camera以及SurfaceView的配合.
1: 创建camera对象
Camera camera= Camera.open();
camera.setDisplayOrientation(90);//将摄像头预览的角度进行调整
camera.unlock();
camera.setDisplayOrientation(90)是一个用于设置相机预览图像的显示方向的方法。它可以将相机预览图像旋转指定的角度,以适应设备的方向。
这个方法接受一个整数参数,表示要设置的显示方向。常见的参数值包括0、90、180和270,分别表示不旋转、顺时针旋转90度、顺时针旋转180度和顺时针旋转270度。
2: 设置camera
mediaRecorder=new MediaRecorder();
mediaRecorder.setCamera(camera);
3: 基础配置
//3.设置音频源(MIC:麦克风采集音频)
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
- MediaRecorder.AudioSource.DEFAULT:默认音频源,通常为麦克风。
- MediaRecorder.AudioSource.MIC:麦克风音频源。
- MediaRecorder.AudioSource.VOICE_CALL:电话通话音频源。
- MediaRecorder.AudioSource.CAMCORDER:摄像头音频源。
- MediaRecorder.AudioSource.VOICE_RECOGNITION:语音识别音频源。
- MediaRecorder.AudioSource.UNPROCESSED:未经处理的音频源。
//4.设置视频源(CAMERA:摄像头采集视频)
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
- MediaRecorder.VideoSource.DEFAULT:默认的视频数据源,通常是摄像头。
- MediaRecorder.VideoSource.CAMERA:摄像头作为视频数据源。
- MediaRecorder.VideoSource.SURFACE:使用Surface作为视频数据源,可以通过SurfaceView或TextureView来预览和录制视频。
- MediaRecorder.VideoSource.VIDEO_SOURCE_X:自定义的视频数据源类型,其中X可以是其他整数值。
//5.设置视频输出格式(MP4)
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
- MediaRecorder.OutputFormat.MPEG_4:指定输出格式为MPEG-4文件格式。
- MediaRecorder.OutputFormat.THREE_GPP:指定输出格式为3GPP文件格式。
- MediaRecorder.OutputFormat.AMR_NB:指定输出格式为AMR音频文件格式。
//6.设置音频编码格式
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
//7.设置视频编码格式
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); - MediaRecorder.VideoEncoder.DEFAULT:默认的视频编码器。
- MediaRecorder.VideoEncoder.H264:H.264编码器,通常用于高质量视频录制。
- MediaRecorder.VideoEncoder.HEVC:HEVC(H.265)编码器,通常用于更高效的视频压缩。
- MediaRecorder.VideoEncoder.MPEG_4_SP:MPEG-4 SP编码器,通常用于较低质量的视频录制。
//8.设置视频播放的方向
mediaRecorder.setOrientationHint(90);
注意,这里需要申请两个权限:
setAudioSource需要RECORD_AUDIO权限,setVideoSource需要CAMERA权限.
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.CAMERA"/>
4: 设置输出文件
设置输出文件的位置
mediaRecorder.setOutputFile(“sdcard/test.mp4”);
涉及文件处理,申请读写权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
5: 自定义视频参数
//10.设置输出视频的大小
mediaRecorder.setVideoSize(640,480);
//11.设置视频的帧率
mediaRecorder.setVideoFrameRate(30);
6: 设置预览界面
mediaRecorder.setPreviewDisplay(surfaceView.getHolder().getSurface());
setPreviewDisplay用于设置预览显示器。它用于将相机预览的内容显示在指定的SurfaceView或Surface上。
surfaceView可在布局中添加页面展示。
7: 录制
try {
//准备录制
mediaRecorder.prepare();
} catch (IOException e) {
e.printStackTrace();
}
//开始录制
mediaRecorder.start();