gpt4 book ai didi

android - setOrientationHint() 对 Gingerbread 没有任何作用,但适用于更高版本

转载 作者:太空狗 更新时间:2023-10-29 13:31:52 40 4
gpt4 key购买 nike

我正在尝试以纵向录制视频。

将相机 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();
}
}

编辑:

测试于:

  1. 运行 android 2.2 的三星 Galaxy S。

  2. 运行 android 2.3 的三星 Galaxy W。

  3. 运行 ICS 的三星 galaxy S2 - 有效

  4. 运行 Jelly Bean 的三星 galaxy s3 - 有效

最佳答案

setOrientationHint() 需要在 prepare() 之前调用。检查是否发生这种情况。

另请注意,此方法仅适用于 3gppmpeg4 格式,一些视频播放器选择完全忽略此属性。您使用的视频播放器可能会忽略它。

关于android - setOrientationHint() 对 Gingerbread 没有任何作用,但适用于更高版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14856968/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com