bash中的视频方向检测

Mia*_*ati 5 bash video ffmpeg orientation

我需要检测视频是以纵向还是横向模式录制,然后以脚本方式将它们转换为正确的方向.

if [ "$v_orient" ==  "landscape" ]
  then
    ffmpeg -i file.mp4 -vf "transpose=1" file.ogv
  else 
    ffmpeg -i file.mp4 file.ogv
fi
Run Code Online (Sandbox Code Playgroud)

我查看了ffmpeg在线文档并用Google搜索,

我尝试过exiftool

exiftool -Rotation -Rotate file.mp4
Run Code Online (Sandbox Code Playgroud)

但是,对于我拥有的横向和纵向视频,这会输出Rotate:90.


如何在bash中检测视频方向?

Joh*_*024 7

ffprobeffmpeg程序包的一部分,它将报告视频元数据.

ffprobe somevideo.mp4
Run Code Online (Sandbox Code Playgroud)

grep可用于仅选择旋转信息.在旋转的视频上,我看到了这个输出:

$ ffprobe somevideo.mp4 2>&1 | grep rotate
      rotate          : 90
Run Code Online (Sandbox Code Playgroud)

在我尝试的未旋转视频上,上面的命令没有产生输出.

此命令取决于视频文件的元数据.如果您的源代码不能生成可靠的rotate标记,则可能需要查找其他标记.

没有加速度计(重力传感器)的旧相机无法判断它们是纵向还是横向,因此无法生成任何有用的标签.