【发布时间】:2016-08-04 21:12:25
【问题描述】:
所以我写了一个powershell脚本,递归搜索所有超过一定大小的视频文件,然后调整它们的大小。
我觉得我在这里遗漏了一些明显的东西......因为我的脚本实际上并没有运行 FFMPEG,它只是在屏幕上显示运行它的命令。我相信我会面对解决方案。
$SearchPath = "N:\baseball"
$oldVideos = Get-ChildItem -Include @("*.mkv", "*.mov", "*.mpg", "*.wmv", "*.avi") -Path $SearchPath -Recurse | where-object {$_.length -gt 500MB};
Set-Location -Path 'C:\Program Files\ffmpeg\bin';
foreach ($OldVideo in $oldVideos)
{
$outputfolder = "O:\resized"
$oldname = Get-Item $oldvideo | Select-Object -ExpandProperty BaseName
$suffix = "_resized.mp4"
$newname = "$($oldname)_$($suffix)"
$ffmpeg = ".'C:\Program Files\ffmpeg\bin\ffmpeg.exe'"
$arguments = " -i `"$($OldVideo)`" -vf scale=720:trunc(ow/a/2)*2 -c:v libx264 -f mp4 `"$outputfolder\$newname`" -y"
$ffmpeg + $arguments}
这是我运行脚本时屏幕上的实际输出 .'C:\Program Files\ffmpeg\bin\ffmpeg.exe' -i "N:\baseball\hitting\067.MOV" -vf scale=720:trunc(ow/a/2)*2 -c:v libx264 -f mp4 "O:\resized\067__resized.mp4" -y
该命令应该执行(它在命令窗口中运行)。
【问题讨论】:
-
你只需要构建一些字符串变量。你实际上没有在任何地方使用这些变量。
-
最后我使用 $ffmpeg + $arguments
-
您可以使用
invoke-expression来完成此操作 -
当我在 powershell 中手动运行命令时,它会出错。 ow/a/2 :术语“ow/a/2”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。在 line:1 char:121
标签: powershell video ffmpeg