gpt4 book ai didi

bash - 使用 FFmpeg 有条件地旋转风景的纵向视频

转载 作者:行者123 更新时间:2023-12-04 23:23:32 25 4
gpt4 key购买 nike

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

我需要在 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

最佳答案

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

#!/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

关于bash - 使用 FFmpeg 有条件地旋转风景的纵向视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58827030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com