正如标题所说,我有这个代码来准备我的记录器:
private boolean prepareMediaRecorder(){
myCamera = getCameraInstance();
Camera.Parameters p = myCamera.getParameters();
p.set("orientation", "landscape");
p.set("rotation", 90);
myCamera.setParameters(p);
myCamera.setDisplayOrientation(90);
myCamera.unlock();
mediaRecorder = new MediaRecorder();
mediaRecorder.setCamera(myCamera);
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
File tempFile = new File(Environment.getExternalStorageDirectory(), "/rec/temp/video_" + String.valueOf(videoCount) + ".mp4");
mediaRecorder.setOutputFile(tempFile.getPath());
mediaRecorder.setMaxDuration(12500); // Set max duration 11 sec.
mediaRecorder.setMaxFileSize(7000000); // Set max file size 7M
mediaRecorder.setPreviewDisplay(myCameraSurfaceView.getHolder().getSurface());
try {
mediaRecorder.prepare();
} catch (IllegalStateException e) {
releaseMediaRecorder();
return false;
} catch (IOException e) {
releaseMediaRecorder();
return false;
}
return true;
}我在我的表面视图中有:
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int weight,
int height) {
// If your preview can change or rotate, take care of those events here.
// Make sure to stop the preview before resizing or reformatting it.
if (mHolder.getSurface() == null){
// preview surface does not exist
return;
}
// stop preview before making changes
try {
mCamera.stopPreview();
} catch (Exception e){
// ignore: tried to stop a non-existent preview
}
// make any resize, rotate or reformatting changes here
// start preview with new settings
try {
myCamera.setDisplayOrientation(90);
mCamera.startPreview();
} catch (Exception e){
}
}这是唯一两个使用摄像头的地方(旋转)…在录制的时候,一切都是肖像的,但是当我回放视频的时候,它是风景的。有人能告诉我为什么和如何解决这个问题吗?
发布于 2013-10-19 03:18:15
使用setOrientationHint(整数度) http://developer.android.com/reference/android/media/MediaRecorder.html#setOrientationHint(int)
mediaRecorder.setOrientationHint (90 );(90表示后置摄像头,270表示前置摄像头)在mediaRecorder.prepare()之前调用此函数;
https://stackoverflow.com/questions/16284628
复制相似问题