MediaRecorder video-Aufnahme im Porträt-Modus

Ich bin versuchen, um eigene video-app. Iwork indem Sie die Einstellungen im manifest 2.2 (API 8).

Alles gut geht, aber ich verstehe nicht, warum das hochformat-video unterscheidet sich nicht von lanscape ein.

Machen die Erkennung des Geräts geändert Orientierung ich benutze 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);
    }
}

Funktioniert wie ein Charme. Wenn ich drehen, Gerät Oberfläche ändern Sie die Ausrichtung, den Aufruf surfaceChanged, wo die Kamera angebracht DisplayRotation.

Die Frage ist, wie man später selbst feststellen, wenn ein video aufgezeichnet wird entweder im lanscape-Modus oder im portrait ein. Da habe ich alle videos sind gefangen im Querformat. Es hängt nicht von setDisplayOrientation die beeinflussen nur die Vorschau-Prozess.

Erkunden auch das problem, das ich bemerkt, dass, wenn die Verwendung von standard-Kamera-app schreibt es spezielle Tags, um video-Datei (gesehen in MediaInfo): Rotation : 90 für die portrait-Aufnahme.

Aber MediaRecorder-Klasse nicht.

Scheint, dass ist das problem. Hat jemand um dieses Problem zu lösen?

InformationsquelleAutor Oleg Karakoz | 2012-08-16
Schreibe einen Kommentar