首页 > 解决方案 > 使用 ffmpeg windows explorer 扩展旋转视频

问题描述

我想用这个命令旋转我的 mp4 视频,ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=270 output.mp4但添加一个名为类似这样的资源管理器扩展名,rotate ccw这样我就可以右键单击一个名为的文件,即GH010235.MP4选择该选项并旋转视频,然后将其添加到同一个文件夹中,相同的文件名但是最后添加了 _rotated 所以我会得到 ieGH010235_rotated.MP4

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

标签: videorotationmp4

解决方案


我认为您可能想使用 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

注意:这个解决方案应该是不言自明的。如果有任何问题,请提出。


第二种解决方案

循环方法的解决方案(也在 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 循环的当前文件。


推荐阅读