如果使用FFmeg进行横向旋转,则有条件地旋转肖像视频

我只需要将纵向视频转换为横向视频,某些视频可能已经横向转换。

我需要在Mac上使用Shell脚本来实现这一目标。

我以前设法用..

旋转视频
ffmpeg -i "/Users/jm/library/Mobile Documents/com~apple~QuickTimePlayerX/Documents/output.mp4" 
-strict 1 -metadata:s:v rotate="90" -codec copy "$3"

$ 3是我的shell脚本中的输入文件

我找到了这个...

ffmpeg -i input.m4v 2>&1 | grep rotate

从这个答案https://stackoverflow.com/a/31683689/450456

我不确定如何将两者结合起来,或者不确定如何在shell脚本的if语句中获取高度和宽度。

编辑:按要求提供信息

ffmpeg -i final.mp4
ffmpeg version 3.4.1 Copyright (c) 2000-2017 the FFmpeg developers
  built with Apple LLVM version 9.0.0 (clang-900.0.39.2)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/3.4.1_2 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --disable-jack --enable-gpl --enable-libass --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-opencl --enable-videotoolbox --enable-openssl --disable-lzma --enable-nonfree
  libavutil      55. 78.100 / 55. 78.100
  libavcodec     57.107.100 / 57.107.100
  libavformat    57. 83.100 / 57. 83.100
  libavdevice    57. 10.100 / 57. 10.100
  libavfilter     6.107.100 /  6.107.100
  libavresample   3.  7.  0 /  3.  7.  0
  libswscale      4.  8.100 /  4.  8.100
  libswresample   2.  9.100 /  2.  9.100
  libpostproc    54.  7.100 / 54.  7.100
Input #0,mov,mp4,m4a,3gp,3g2,mj2,from 'final.mp4':
  Metadata:
    major_brand     : qt  
    minor_version   : 0
    compatible_brands: qt  
    creation_time   : 2019-11-12T20:45:27.000000Z
  Duration: 00:00:24.36,start: 0.031667,bitrate: 365 kb/s
    Stream #0:0(und): Video: hevc (Main 10) (hvc1 / 0x31637668),yuv420p10le(tv,smpte170m/unknown/unknown),1242x2688,365 kb/s,1.73 fps,600 tbr,600 tbn,600 tbc (default)
    Metadata:
      creation_time   : 2019-11-12T20:45:27.000000Z
      handler_name    : Core Media Data Handler
      encoder         : HEVC
At least one output file must be specified
yangleilgone 回答:如果使用FFmeg进行横向旋转,则有条件地旋转肖像视频

您的输入没有视频流旋转元数据或displaymatrix辅助数据,因此您必须使用宽度和高度来确定方向:

#!/bin/bash
# Usage: ./rotate input.m4v output.m4v

width=$(ffprobe -v error -select_streams v:0 -show_entries stream=width -of csv=p=0 "$1")
height=$(ffprobe -v error -select_streams v:0 -show_entries stream=height -of csv=p=0 "$1")

if [ "$width" -lt "$height" ]; then
  ffmpeg -i "$1" -map 0 -c copy -metadata:s:v rotate="90" "$2"
fi
本文链接:https://www.f2er.com/3114152.html

大家都在问