我开发了一个 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 的示例。
谢谢
最佳答案
方法 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/