1. 程式人生 > >Android 在MediaRecorder中碰到的幾個常見的問題

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。

如果還有什麼問題,可以一起討論!