Android 在MediaRecorder中碰到的几个常见的问题

最近由于项目的需要,做了个用MediaRecorder录制视频;下面是我在做的过程中,碰到的几个问题,供参考,如果不对,欢迎留言指正!

MediaRecorder mRecorder = new MediaRecorder();

1、录制视频时,视频旋转了90度,添加下面代码解决问题;

						mCamera = Camera.open(gDefaultCameraId);
						Camera.Parameters params = mCamera.getParameters();
						mCamera.setDisplayOrientation(90);// 旋转了90度
						mCamera.setParameters(params);
						mCamera.unlock();// 解锁
						mRecorder.setCamera(mCamera);



 
  

gDefaultCameraId值的获得:

						int gTotalCameraCount = Camera.getNumberOfCameras();
						int gDefaultCameraId = 0;
						// Find the ID of the default camera
						CameraInfo cameraInfo = new CameraInfo();
						for (int i = 0; i < gTotalCameraCount; i++) {
							Camera.getCameraInfo(i, cameraInfo);
							if (cameraInfo.facing == CameraInfo.CAMERA_FACING_BACK) {
								gDefaultCameraId = i;
								break;
							}
						}	

2、录制完的视频手机上播放旋转了90度,添加下面代码解决问题;

mRecorder.setOrientationHint(90);


3、手机上播放没问题了,但是移到电脑上播放,视频还是旋转了90度;我的是这样改的:

mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
// 这两项需要放在setOutputFormat之后
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);

把上面3行代码删掉,换成下面代码:

CamcorderProfile cProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_LOW); //中间参数看你项目需要视频什么样的品质,具体可以看源码;

mRecorder.setProfile(cProfile);


4、设置视频的帧速率大小,我自己还没解决,加了下面代码无效,如果有解决的欢迎留言;

mRecorder.setVideoFrameRate(20);

帧速率自己不好设置,设置了手机不一定按我们设置的速率去录,它是在自己的帧速率范围内变化的,个人觉得。


另外设置MediaRecorder 时,设置的先后顺序很重要,如果错了,会报错,具体的先后顺序,可以看官网的介绍。最后记得释放掉Camera和MediaRecorder。

如果还有什么问题,可以一起讨论!

你可能感兴趣的:(Android,android,视频)