我正在尝试在portrait orientation
中录制视频。
将相机DisplayOrientation
设置为90度,可以在portrait
中显示视频预览。
但是当使用任何给定数字(0,90,180,270)调用setOrientationHint()
时,创建的视频始终以纵向方式创建。
当我在Jellybean和ICS上测试时,我使用setOrientationHint()
方法设置了视频方向。
这是MediaRecorder
初始化代码:
private void initRecorder() {
Camera camera = Camera.open();
camera.setDisplayOrientation(90);
camera.unlock();
recorder.reset();
recorder.setCamera(camera);
recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
file = new File("/sdcard/test.mp4");
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
recorder.setOrientationHint(90);//doesn't seem to work on 2.3
recorder.setOutputFile(file.getAbsolutePath());
recorder.setMaxDuration(30000);
recorder.setMaxFileSize(1000000);
}
这是我准备MediaRecorder
:
public void surfaceCreated(SurfaceHolder holder) {
this.holder = holder;
recorder.setPreviewDisplay(holder.getSurface());
try {
recorder.prepare();
} catch (IllegalStateException e) {
e.printStackTrace();
finish();
} catch (IOException e) {
e.printStackTrace();
finish();
}
}
编辑:
经过测试:
三星Galaxy S运行Android 2.2。
三星Galaxy W运行android 2.3。
运行ICS的三星galaxy S2 - 工作。
运行Jelly Bean的三星galaxy s3 - 工作。
答案 0 :(得分:2)
setOrientationHint()
之前调用 prepare()
。检查是否发生这种情况。
另请注意,此方法仅适用于3gpp
和mpeg4
格式,并且某些视频播放器选择完全忽略此属性。您正在使用的视频播放器可能会忽略它。