我开发了一个 android/ios 视频共享应用程序,可以录制视频并将其上传到亚马逊 s3。为了兼容 android/ios 以 mp4 格式录制 H264/AAC 编解码器。
用户可以拍摄肖像或风景,应用程序从传感器获取信息,设置文件的旋转(Android 上的 mediarecorder.setOrientationHint 和 iOS 上的类似内容)
iOS 上的视频在 Android 上播放得很好,反之亦然。问题是当我想在网络浏览器上播放视频时。支持 mp4 格式的浏览器(即 Chrome)显示视频但忽略旋转元数据。当我在 Linux 上使用 mplayer 播放这些视频时,也会发生同样的事情。
我想到的第一个解决方案是
ffmpeg -i in.mp4 -vf transpose=<rotation value> out.mp4
浏览器忽略旋转元数据是否有原因?这是一个错误吗?我可以在录制视频时做一些事情来解决这个问题吗?
以下是分别来自 iOS 和 Android 的 2 个示例。
Thansk
iOS视频 https://dzlf1jjn1x4to.cloudfront.net/peeks/ed0df56f37a721fa4ba29b8c24a31660b186d978.mp4
安卓视频 https://dzlf1jjn1x4to.cloudfront.net/peeks/3b5b4e88609e52780431442b52a93c28dd94a40a.mp4
方法 1:如果宽高比不是水平的,则旋转 HTML 元素
Chrome HTML5 视频横向翻转纵向 https://stackoverflow.com/questions/12486870/chrome-html5-video-flipping-portrait-sideways
方法 2:重新编码 iPhone 视频
在 Chrome 上使用 html5 显示垂直视频 https://stackoverflow.com/questions/12409613/displaying-vertical-videos-with-html5-on-chrome
方法 3:在 iOS 设备上正确设置方向(高级)
iOS AVFoundation:设置视频方向 https://stackoverflow.com/questions/13465746/ios-avfoundation-setting-orientation-of-video
方法4:询问这个人是否找到了答案
使用 FFmpeg 根据其 元数据旋转视频?为什么 Android 会放置错误的元数据? https://stackoverflow.com/questions/23158281/use-ffmpeg-to-rotate-the-video-based-on-its-rotate-metadata-why-android-put?rq=1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)