タイトルが示すように、レコーダーを準備するための次のコードがあります。
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){
}
}
それはカメラが使用される唯一の2つの場所です(回転)...そして、記録するときはすべてが縦向きで問題ありませんが、そのビデオを再生すると横向きになります。これを修正する理由と方法を誰か教えてもらえますか?