avconv - 根据元数据自动改变方向

avconv - Automatically change orientation based on metadata

我是 运行 一个服务器应用程序,它接受来自 iOS 应用程序的视频上传。该应用程序将 .mov 上传到服务器,服务器将其转换为 .mp4(这是为了将来 Android 兼容性)。问题在于 .mov 格式在元数据中使用了一个旋转标志,该标志在转换时效果不佳,并且视频经常以错误的方向结束。我正在使用的命令,

avconv -i iosvideo.mov -c:v libx264 -b:v 1250k -vf scale=trunc(oh*a/2)*2:480,transpose=1 -metadata:s:v:0 rotate=0 -t 20 -c:a libvo_aacenc -b:a 192k output.mp4

似乎只能旋转一个固定的量。我将如何让 avconv 从 .mov 读取旋转标志并相应地旋转视频流?

Download or compile ffmpeg 的最新版本。它会自动旋转你的视频,所以你的命令看起来像:

ffmpeg -i input.mov -c:v libx264 -vf scale=-2:480 -t 20 -c:a libvo_aacenc -b:a 192k \
-movflags +faststart output.mp4
  • 使用 -noautorotate 禁用此行为。
  • 对于scale,您可以使用-2代替trunc(oh*a/2)*2
  • Use -crf instead of -b:v。如果您必须针对特定的输出文件大小,则使用 -b:v,但要进行两次;不是一个。默认为 -crf 23.
  • libvo_aacenc 是一个糟糕的编码器。如果可能,请考虑使用替代方案 AAC encoder
  • 您可能需要 -movflags +faststart 以便视频可以在客户端完全下载之前开始播放。
  • 我不确定这些信息是否适用于 avconv;我不使用那个。
  • 下次问超级用户;你的问题在这里是题外话,因为它与编程无关。 Stack Overflow 不是一般的计算帮助资源。