使用ffmpeg windows资源管理器扩展旋转视频

问题描述 投票:0回答:1

我想使用此命令ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=270 output.mp4旋转mp4视频,但添加一个名为rotate ccw之类的资源管理器扩展程序,因此我可以右键单击名为GH010235.MP4的文件,然后选择该选项,它将旋转视频,然后将其添加到相同的文件夹中,使用相同的文件名,但在末尾添加_rotated,这样我就可以得到GH010235_rotated.MP4

或者,我希望ffmpeg处理整个文件夹。它应该查找所有* .mp4旋转它们并将它们命名为* _rotated.mp4将它们放在同一文件夹或子文件夹\ output中。如果可能,使用cmd而不是linux,phyton或w / e

video rotation mp4
1个回答
0
投票

我认为您可能要使用cmd,因为您在Windows上。如果您使用的是Windows,则可以使用Powershell。因此,我将介绍基于powershell的解决方案。


第一个解决方案

您可以为此编写Powershell函数:

function rotate_ccw {
    Param ([System.IO.FileInfo] $inputfile, [System.IO.FileInfo] $outputfile)
    ffmpeg -i $inputfile -c copy -metadata:s:v:0 rotate=270 $outputfile
}

该呼叫将如下所示:

rotate_ccs -inputfile input.mp4 -outputfile output.mp4

NOTE:此解决方案应该是不言自明的。如有任何疑问,请询问。


第二解决方案

您的循环方法的解决方案(在powershell中也将是:

ls ./*.mp4 | foreach {ffmpeg -i "$_" -c copy -metadata:s:v:0 rotate=270 "$($_.basename)_rotated.mp4"}

ls ./*.mp4:列出本地目录中的所有* .mp4文件。

<command> | <command>:所谓的管道运算符从第一个命令获取输出,并将其作为输入传递给第二个命令。

foreach {<do your stuff>}:自我解释

$_:这是从foreach循环中引用当前文件。

© www.soinside.com 2019 - 2024. All rights reserved.