2014-02-17 6 views
6

Ich habe eine Android/iOS-Video-Sharing-App entwickelt, die ein Video aufzeichnet und es auf Amazon S3 hochlädt. Aus Gründen der Kompatibilität nehmen beide Android/iOS im MP4-Format mit H264/AAC-Codecs auf.Mp4 Video Rotation Metadaten

Die Anwender können Hoch- oder Querformat und die App schießen, Informationen von den Sensoren bekommen, stellen Sie die Drehung der Datei (mediarecorder.setOrientationHint auf Android und etwas ähnliches auf iOS)

Die Videos von iOS spielen Geldbuße Android und umgekehrt. Das Problem ist, wenn ich ein Video in einem Webbrowser abspielen möchte. Die Browser, die das MP4-Format unterstützen (z. B. Chrome), zeigen das Video an, ignorieren jedoch die Rotationsmetadaten. Das Gleiche passiert, wenn ich diese Videos mit mplayer unter Linux wiedergebe.

Die erste Lösung, die den Sinn kommt, ist

ffmpeg -i in.mp4 -vf transpose=<rotation value> out.mp4 

Gibt es einen Grund, warum Browser Rotation Metadaten ignorieren? Ist es ein Fehler? Könnte ich etwas tun, um dies zu beheben, während ich das Video aufnehme?

Hier sind zwei Beispiele von iOS bzw. Android.

Thansk

ios video android video

Antwort

0

Methode 1: das HTML-Element drehen, wenn das Seitenverhältnis
Chrome HTML5 Video Flipping Portrait Sideways

Methode nicht horizontal ist 2: Re-codiert das iPhone-Video
Displaying vertical videos with html5 on chrome

Methode 3: Stellen Sie Ausrichtung richtig auf iOS-Devices (Advanced)
iOS AVFoundation: Setting Orientation of Video

Methode 4: Stellen Sie diesen Kerl, wenn er eine Antwort
Use FFmpeg to rotate the video based on its <rotate> metadata? Why does Android put the wrong metadata?

gefunden