Sau*_*abh 6 video iphone ffmpeg ios
我正在 iPhone 上录制视频并将它们上传到我的 Linux 服务器。用户可以在网站上看到这些视频。如果用户在 mac 或 iDevices 上观看视频,则视频看起来不错,但是当用户在 Windows 系统上观看该视频时,这些视频正在旋转。
我假设这是因为 Windows 系统无法读取录制的视频中的某些苹果标志。我可以以某种方式录制视频,这样它们就不会在 Windows 系统上旋转吗?或者有什么方法可以使用 FFmpeg 以正确的界面方向重新编码视频?
我对 FFmpeg 或 iOS 方式都持开放态度。
您无法更改 iOS 摄像头录制视频的方式。它设置一个旋转标志,如果您希望视频在 OS X 和 Windows(以及其他播放器)中正确显示,您必须:
下载 ffmpeg(适用于您的操作系统的静态构建很好)。
然后你需要transpose
过滤器,例如
ffmpeg -i portrait.mov \
-c:v libx264 -filter:v "transpose=1" \
-c:a copy \
-metadata:s:v:0 rotate=0 out.mp4
Run Code Online (Sandbox Code Playgroud)
几点说明:
在这里,transpose=1
将旋转 90°。如果您的视频颠倒,则需要组合选项。您可以使用-filter:v "transpose=2,transpose=2"
或其他。请参阅此处:如何使用 FFmpeg 将视频翻转 180°(垂直/倒置)?
该-metadata:s:v:0 rotate=0
选项可确保第一个视频流中的旋转元数据再次设置为 0(之前为 90),因此您的视频现在可以在 OS X 和其他操作系统上正常显示。
自然地,移调会重新编码视频,你会失去质量。在-crf
后面添加选项-c:v libx264
以设置控制质量的Constant Rate Factor。使用较低的值可以获得更好的质量。23 实际上是默认值,因此您根本不需要指定它,但是如果视频最终看起来很糟糕,您可能希望选择低至 18 的值,例如,-c:v libx264 -crf 18
.
在某些情况下,您可能只想删除旋转标志但保持原始视频比特流完好无损。为此,请替换-c:v libx264 -filter:v "transpose=1"
为-c:v copy
。
查看x264 编码指南了解更多信息。