3

我正在尝试录制视频portrait orientation

将相机设置DisplayOrientation为 90 度会使视频预览以portrait.

但是,当setOrientationHint()使用任何给定号码(0,90,180,270)呼叫时,创建的视频始终以纵向创建。

当我在 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. 三星 Galaxy S 运行安卓 2.2。

  2. 运行安卓 2.3 的三星 Galaxy W。

  3. 运行 ICS 的三星 Galaxy S2工作正常。

  4. 运行 Jelly Bean 的三星 Galaxy s3 -工作

4

1 回答 1

2

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

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

于 2013-02-18T08:02:25.773 回答