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

Android多媒体功能开发(13)——使用MediaRecorder类录制视频

Android 如何使用 MediaRecorder 录制音频并输出为原始 PCM?