MediaRecorder-Videoaufnahme im Hochformat

Ich versuche, benutzerdefinierte Video-App zu machen. Ich arbeite mit Einstellungen in ManifestNur 2.2 (API 8).

Alles geht gut, aber ich verstehe nicht, warum sich das Hochformat-Video nicht von lanscape unterscheidet.

Um die Ausrichtung des Geräts zu erkennen, verwende ich diesen Code in surfaceChanged ().

        if (mCamera != null) {

        Camera.Parameters p = mCamera.getParameters();

        try {
            mCamera.stopPreview();
        } catch (Exception e) {
            // TODO: handle exception
        }

        int previewWidth = 0;
        int previewHeight = 0;

        if (mPreviewSize != null) {
            Display display = ((WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
            int rotation = display.getRotation();

            switch (rotation) {
            case Surface.ROTATION_0:
                previewWidth = mPreviewSize.height;
                previewHeight = mPreviewSize.width;
                mCamera.setDisplayOrientation(90);
                break;

            case Surface.ROTATION_90:
                previewWidth = mPreviewSize.width;
                previewHeight = mPreviewSize.height;
                mCamera.setDisplayOrientation(0);
                break;

            case Surface.ROTATION_180:
                previewWidth = mPreviewSize.height;
                previewHeight = mPreviewSize.width;
                mCamera.setDisplayOrientation(270);
                break;

            case Surface.ROTATION_270:
                previewWidth = mPreviewSize.width;
                previewHeight = mPreviewSize.height;
                mCamera.setDisplayOrientation(180);
                break;
            }

            p.setPreviewSize(previewWidth, previewHeight);
            mCamera.setParameters(p);
        }
    try {
        mCamera.setPreviewDisplay(mHolder);
        mCamera.startPreview();
    } catch (Exception e) {
        Log.d(TAG, "Cannot start preview.", e);
    }
}

Klappt wunderbar. Wenn ich die Geräteoberfläche drehe, wird beim Aufrufen von surfaceChanged die Ausrichtung geändert, wobei die Kamera auf die entsprechende DisplayRotation eingestellt ist.

Die Frage ist, wie Sie später feststellen können, ob das Video im LANScape-Modus oder im Hochformat aufgenommen wurde. Nachdem ich alle Videos bekommen habe, werden sie im Querformat aufgenommen. Es hängt nicht von setDisplayOrientation ab, die nur den Vorschauprozess betreffen.

Bei der Untersuchung des Problems bemerkte ich auch, dass bei Verwendung der Standard-Kamera-App ein spezielles Tag in die Videodatei geschrieben wird (in MediaInfo zu sehen):Drehung: 90 für das Porträt aufgenommene Videos.

Die MediaRecorder-Klasse tut dies jedoch nicht.

Das scheint das Problem zu sein. Muss jemand das lösen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage