我只需要将纵向视频转换为横向视频,某些视频可能已经横向转换。
我需要在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
答案 0 :(得分:0)
您的输入没有视频流旋转元数据或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