android - Mp4 视频旋转元数据

标签 android ios html rotation mp4

我开发了一个 android/ios 视频共享应用程序,可以录制视频并将其上传到 amazon s3。为了兼容 android/ios 以 mp4 格式记录与 H264/AAC 编解码器。

用户可能会拍摄肖像或风景,应用程序从传感器获取信息,设置文件的旋转(mediarecorder.setOrientationHint 在 Android 上,在 iOS 上类似)

来自 iOS 的视频在 Android 上播放良好,反之亦然。问题是当我想在网络浏览器上播放视频时。支持 mp4 格式的浏览器(即 chrome)显示视频但忽略旋转元数据。当我在 Linux 上使用 mplayer 播放这些视频时,也会发生同样的事情。

首先想到的解决方案是

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

浏览器忽略旋转元数据是否有原因?这是一个错误吗?我可以在录制视频时做些什么来解决这个问题吗?

这里有两个分别来自 iOS 和 android 的示例。

谢谢

ios video android video

最佳答案

方法 1:如果纵横比不是水平的,则旋转 HTML 元素
Chrome HTML5 Video Flipping Portrait Sideways

方法 2:重新编码 iPhone 视频
Displaying vertical videos with html5 on chrome

方法 3:在 iOS 设备上正确设置方向(高级)
iOS AVFoundation: Setting Orientation of Video

方法四:问问这家伙有没有找到答案
Use FFmpeg to rotate the video based on its <rotate> metadata? Why does Android put the wrong metadata?

关于android - Mp4 视频旋转元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21834100/

相关文章:

android - 迁移到 Android Studio 后出现 TransformException

android - Gradle Dagger Lint : ignore by package

java - Android 非法状态异常 : The specified child already has a parent

ios - mvvmcross 中的 UIAlertController 绑定(bind)

html - 文本区域最大长度 HTML5 错误?

javascript - 创建一个 Javascript 投票系统

android - 尝试打开android SQLite数据库时找不到文件异常

ios - 如何在iOS上将字符串拆分为子字符串?

ios - swift 3 : UIViewControllerTransitioningDelegate stopped working

html - 有趣且延迟的 WebSocket