我想使用此命令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
我认为您可能要使用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循环中引用当前文件。