Как и обещал ранее — привожу скрипт для мультиформатной конвертации видеофайлов.
Обработчик команды для утилиты ffmpeg поместил в отдельную функцию, а профиль и битрейт поместил в переменные. Добавил замену пробелов на символ нижнего подчеркивания в именах файлов для всего содержимого папки.
### Шапка скрипта ###
[System.Console]::Title = "Мультиформатная конвертация видеофайлов"
### Создать папку ###
New-Item -Path out -ItemType Directory -ErrorAction Ignore | Out-Null
### Убрать пробелы из имен файлов ###
dir * | ren -NewName { $_.Name -replace ' ','_' } -ErrorAction Ignore
### Функция конвертации ###
function Convert
{
$videobitrate = "2000k" # Указать нужный битрейт видеопотока
$profile = "hd720" # Заменить на hd1080, если требуется
$cmd = "-i $_ -s $profile -preset fast -c:v libx264 -b:v $videobitrate -crf 23 -c:a aac -b:a 256k -strict -2 out\$($_.Name).mp4"
Start-Process -FilePath ffmpeg.exe -ArgumentList $cmd -Wait -NoNewWindow
}
### Фильтровать форматы ###
Get-ChildItem -Filter *.mkv | ForEach-Object { Convert }
Get-ChildItem -Filter *.mp4 | ForEach-Object { Convert }
Get-ChildItem -Filter *.ts | ForEach-Object { Convert }
В нижний «отсек» скрипта можете добавить свои форматы.