Wie kann ich die korrekte Wiedergabe Ausrichtung der aufgezeichneten video?
Ich bin mit dem MediaStore.ACTION_VIDEO_CAPTURE
Absicht, um ein video aufzunehmen und später spielen Sie wieder mit einer VideoView
. Ich würde gerne wissen, die Orientierung des Videos, das aufgenommen wurde.
Ich will nicht von der Orientierung an der Zeit einen Vorsatz nennen, weil der Anwender kann drehen Sie das Gerät bevor Sie es zu schlagen Sie auf den Auslöser. Ich weiß auch nicht implementieren wollen, um meine eigenen video-capture.
Ist die Ausrichtung des video-gespeichert in der Datei gespeichert und/oder wieder in der Absicht, Ergebnis?
- Kannst du nicht vergleichen, video, Höhe versus Breite und entscheiden über die Ausrichtung selbst? Ich denke, die meisten Kameras nur aufzeichnen in eine einzige Orientierung (Querformat).
- Wie könnte eine Kamera möglicherweise verhindern, dass der Nutzer durch das drehen des Geräts? Ich würde hoffen, dass zumindest die Erfassung Absicht merkt, in welche Richtung wird und speichert es in der video-Datei Metadaten. Es gibt sicherlich viele Anwendungsfälle für die Porträt-orientierte video (vorne Handy-Kamera ein Paradebeispiel).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den AOSP
VideoCamera
Aktivität liefert den Wert für Drehung der Kamera um dieMediaRecorder.setOrientationHint()
Methode. Hier ein Auszug des Codes in derVideokamera.initializeRecorder()
code zu diesem Zusammenhang:Hier ist die Dokumentation für
setOrientationHint()
erklären die Speicherung der Informationen:Da man sich mit dem framework
VideoView
widget das video Abspielen, sollte es schon behandeln die Informationen, die in der Zusammensetzung der matrix korrekt und Sie sollten nur brauchen, vergleichen Sie die Breite und Höhe des Videos, um zu entscheiden, ob Sie ein quer-oder hochformat für Ihre Wiedergabe-Aktivität. Ein einfacher Weg, dies zu tun wäre zu einfach anrufenThumbnailUtils.createVideoThumbnail()
(welche intern verwendetMediaMetaDataRetriever
) und überprüfen Sie die Auflösung des zurückgegebenen bitmap.VideoView
nicht standardmäßig auf die Wiedergabe des Videos im Einklang mit dem aktuellen layout die Orientierung. I. e., wenn dieVideoView
ist das Abspielen einer video-Landschaft, während das aktuelle layout ist im hochformat, das video wäre "letterbox" und spielte noch im hochformat, so dass video "bis" richtig Punkte nach oben, ohne drehen des Bildschirms.Ähnlich wie al. schlug in seiner Antwort, ich benutze die
MediaMetadataRetriever
aber mit derMETADATA_KEY_VIDEO_ROTATION
Schlüssel:Habe ich überprüft, aufzeichnen von Videos mit allen 4 verschiedenen Ausrichtungen, von der Vorderseite der Kamera, und der Metadaten ist immer unterschiedlich.
Hinweis:
METADATA_KEY_VIDEO_ROTATION
Bedürfnisse API-Level 17 oder höher.METADATA_KEY_VIDEO_ROTATION
Schlüssel liegen erst seit API Level 17.Können Sie MediaMetadataRetriever, um die Breite und Höhe des video und herauszufinden, die Orientierung vor dem laden.