Ещё один интересный пример работы утилиты ffmpeg — конвертация вертикальных видеофайлов в приемлемое соотношение сторон 16:9 и с разрешением FullHD.
Кстати, для этих целей частенько рекомендуют использовать дорогущие профессиональные видеоредакторы или конвертёры, устанавливающие всевозможные водяные знаки или рекламные вставки на конечное видео. А по сути дела — всё, что нам нужно — это простой скрипт на любом удобном нам языке и вышеуказанная утилита.
Представленный ниже скрипт вполне возможно скрестить с наработками из этой статьи для массового объединения видеофайлов, если они не соответствуют унифицированному соотношению сторон.
Требования к скрипту стандартны: избегайте пробелов в именах файлов, все видеофайлы должны быть в контейнере mp4 и лежать в папке со скриптом.
Итоговые видеофайлы попадают в папку scale, которая будет создана в папке со скриптом и целевыми видеофайлами.
#### Шапка скрипта ####
$scriptname = "Конвертация вертикального видео mp4 в HD1080"
[System.Console]::Title = $scriptname
#### Надпись при старте скрипта ####
Write-Host $scriptname -ForegroundColor Cyan
Write-Host
#### Создание папки для файлов вывода ####
New-Item -Path scale -ItemType Directory -ErrorAction Ignore | Out-Null
#### Конвертация файлов ####
Get-ChildItem -Filter *.mp4 | ForEach-Object {
$cmd = "-i $_ -filter_complex ""[0:v]scale=ih*16/9:-1,boxblur=luma_radius=min(h\,w)/20:luma_power=1:chroma_radius=min(cw\,ch)/20:chroma_power=1[bg];[bg][0:v]overlay=(W-w)/2:(H-h)/2,crop=h=iw*9/16"" -s hd1080 -preset fast -c:v libx264 -b:v 2000k -c:a aac -b:a 256k scale\$($_.Name)"
Start-Process -FilePath ffmpeg.exe -ArgumentList $cmd -Wait -NoNewWindow }
#### Ожидание действия пользователя ####
Write-Host
Read-Host "Нажмите Enter для выхода..."
Все посты про ffmpeg можно найти здесь.
Ссылка на страницу скачивания утилиты здесь.