基本上,您只需要查看文件(将它们存储在变量中),然后将这些查找的文件提供给FFmpeg。
当然,Windows的Batch语言就足够了。但由于我对此没有熟练,这是一个PowerShell脚本:
# Searching for files with the Get-ChildItem cmdlet and saving their relevant properties in an array:
# NOTE: -File will only work with PowerShell-versions >= 3.
[array]$FilesToRotate = Get-ChildItem -Path "C:\PATH_TO_FILES" ((-Filter *.mp4)) ((-Recurse)) -File | ForEach-Object {
# NOTE: This part is a bit tricky - I just added it so I'm able to save the parent-path of each file in an object.
# NOTE: One could also omit the whole ForEach-Object and use the Split-Path cmdlet inside the output-file's specification in FFmpeg's code.
[PSCustomObject]@{
InFullName = $_.FullName
# Will put the output-file in the same folder as the input-file and add "_ROTATION" as suffix in its name.
OutFullName = "$(Split-Path -Parent -Path $($_.FullName))\$($_.BaseName)_ROTATE$($_.Extension)"
}
}
# Processing the files with FFmpeg using PowerShell's Start-Process cmdlet:
for($i=0; $i -lt $FilesToRotate.Length; $i++){
Start-Process -FilePath "C:\PATH_TO_FFMPEG\ffmpeg.exe" -Argumentlist " -i `"$($FilesToRotate[$i].InFullName)`" -c copy -metadata:s:v:0 rotate=<x> `"$($FilesToRotate[$i].OutFullName )`" " ((-Wait)) ((-NoNewWindow))
}
这个脚本将使用你提供的代码运行FFmpeg (我没有检查它,但你可以轻松地替换它)并将生成的文件保存到名称后缀为“_ROTATE”的同一文件夹中 - 所以“MyMovie2017.mov”将成为“MyMovie2017_ROTATE.mov”。(如果要将它们渲染到一个全新的文件夹,请替换$($FilesToRotate[$i].ParentPath)
为您喜欢的路径。)
注意:加倍括号中的内容(( ))
是可选的:
-Filter
只会找到(一个)特定类型的文件,例如* .mp4只会找到MP4-Files。如果您有多个文件类型,但许多文件不需要转换(如文本文件),您可以使用-Exclude
您不想转换的所有格式,也可以-Include
只转换那些应该转换的格式(-Include
就像-Filter
- 它速度较慢,但可以包含多种格式。)
-Recurse
还将查看子文件夹。您也可以使用-Depth
PowerShell v 5+。
-Wait
将一次打开一个ffmpeg实例 - 没有它,所有实例将并行打开。
-NoNewWindow
将在PowerShell-Console中显示ffmpeg-instance的输出,如果没有它,ffmpeg的每个实例都将在新的控制台窗口中打开。只有用才有意义-Wait
。
在启动脚本之前,您必须删除所有加倍的括号(以及它们的内容,如果您不想要它)。
此外,这些事情需要调整:
C:\PATH_TO_FILES
显然,您的文件的路径。
C:\PATH_TO_FFMPEG\ffmpeg.exe
显然,你的ffmpeg.exe的路径。
rotate=<x>
-你需要更换<x>
有两种90
,180
或270
。(正如代码的来源所解释的那样)
如果有什么需要更多解释,我很乐意提供帮助。