Android MediaRecorder 录制视频出现的问题及解决
Posted 潇潇微雨up
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android MediaRecorder 录制视频出现的问题及解决相关的知识,希望对你有一定的参考价值。
1. 报错
这种情况一般是由于 初始化顺序不对
或者是设置了分辨率手机不兼容 需要设置为
CamcorderProfile profile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
mediaRecorder.setVideoSize(profile.videoFrameWidth, profile.videoFrameHeight);
mediaRecorder.setVideoEncodingBitRate(5 * 1024 * 1024);
2. 录制视频时为横屏 需要转化为竖屏
这种情况如果不设置 默认都是为横屏的
需要设置Camera的旋转角度
camera2 = Camera.open();
camera2.setPreviewDisplay(surfaceHolder);
Camera.Parameters pa = camera2.getParameters();
camera2.setDisplayOrientation(90); //此句是重点
camera2.setParameters(pa);
camera2.startPreview();
camera2.unlock();
mediaRecorder.setCamera(camera2);
3.录制视频结束后 播放视频时 是横屏
mediaRecorder.setOrientationHint(90); //加上此句即可
4.录制视频时视频不清晰
这个问题是由于没有自动聚焦 设置自动聚焦即可
Camera.Parameters pa = camera2.getParameters();
List<String> supportedFocusModes = pa.getSupportedFocusModes();
if(supportedFocusModes.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE))
pa.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
camera2.setDisplayOrientation(90);
camera2.setParameters(pa);
camera2.cancelAutoFocus();//此句加上 可自动聚焦 必须加
// camera2.autoFocus(null);
camera2.startPreview();
5.录制视频结束后 播放视频不清晰
mediaRecorder.setVideoEncodingBitRate(5 * 1024 * 1024); //设置编码比特率即可
6.拍照和录像静音的方法
拍照静音 比较简单
takePhoto设置第一个参数 为null即可
当然 只适用于一部分机型
录像静音 貌似比较复杂 还没找到解决方法
看到网上说的方法
方案一:拍摄开始时设置系统音频流静默并调整音量为0,结束时恢复;
方案二:找到提示音文件,通过改名/移动等方法让发音失灵,由于音频文件在系统中,所以需要root权限,该方案对用户要求比较高,不考虑;
以上是关于Android MediaRecorder 录制视频出现的问题及解决的主要内容,如果未能解决你的问题,请参考以下文章
Android-MediaRecorder-音频录制-警告-W/MediaRecorder(13811): mediarecorder went away with unhandled events(
Android:使用 MediaRecorder 录制音频 - 文件不播放
在 Android 中使用 AudioRecorder/MediaRecorder 录制 FLAC 音频
Android 视频录制 - mediaRecorder.start 上的 IllegalStateException