FFMpeg 自动旋转视频和图像输出

FFMpeg 自动旋转视频和图像输出

我有一个视频,我想将其缩小到视频输出,并且每 2 秒使用单个 FFMpeg 命令(硬件加速)创建一个缩略图。 以下是命令:

ffmpeg -hwaccel cuvid -hwaccel_output_format cuda -i "inputVideo.mov" -vf "scale_cuda=1280:720,hwdownload,format=nv12,setsar=1:1" -c:v h264_nvenc -profile:v main -level:v 4 -b:v 2500K "outputVideo.mp4" -vf "scale_cuda=160:90,hwdownload,format=nv12, fps=0.5,setsar=1:1" "thumbnailOutputs_%04d.jpg"

但输入视频的元数据中有一个旋转参数(180度),并且基于FFMpeg 文档该命令会自动旋转输出。我不希望我的输出被旋转。

-autorotate 根据文件元数据自动旋转视频。默认启用,使用 -noautorotate 可禁用。

我把命令改成了添加-noautorotate。它修复了视频输出,但图像输出仍然在旋转。我甚至尝试将图像命令和使用命令分开,-noautorotate但仍然不起作用。

另外,一个有趣的观察是,当我不使用硬件加速时,命令的行为会有所不同。以下是基于 CPU 的正常命令:

ffmpeg  -i "inputVideo.mov" -c:v libx264 -profile:v main -level:v 4 -b:v 2500K -vf "scale=1280:720,setsar=1:1" "outputVideo.mp4" -vf fps=0.5 -s 160X90 "thumbnailOutputs_%04d.jpg"

以下是观察结果:

硬件加速命令(nvenc)

默认命令

  • 视频 - 上下颠倒❌(旋转 180 度)
  • 图片 - 上下颠倒❌(旋转 180 度)

带有 -noautorotate 标志的命令

  • 视频 - 正确✅
  • 图片 - 上下颠倒❌(旋转 180 度)

CPU 命令(libx264)

默认命令

  • 视频 - 正确✅
  • 图片 - 正确✅

带有 -noautorotate 标志的命令

  • 视频 - 正确✅
  • 图片 - 上下颠倒❌(旋转 180 度)

所用输入视频的链接:使用输入视频

相关内容