Конвертируйте все файлы в каталоге с помощью ffmpeg, а затем переместите их с помощью PowerShell - PullRequest
1 голос
/ 29 марта 2020

Я хочу создать скрипт, который конвертирует .mkv-файлы из x264 в x265, используя ffmpeg- windows. Чтобы создать список всех файлов в каталоге, я создал .ps1-script generate-list.ps1 , вы можете использовать его. Каким должен быть мой сценарий powershell, чтобы выполнить указанный ниже код для каждого элемента в папке video_old и переместить его в video_new после преобразования?

del .\list.txt
cd .\video_old\
foreach ($i in Get-ChildItem .\*.mkv) {echo "file '$i'" >> "list.txt"}
move .\list.txt ..\
cd .. 

Каталог выглядит следующим образом:

Application-folder
└ video_new
  └ *the converted files should go here*
└ video_old
  └ *the video files that need to be converted*
└ ffmpeg.exe
└ generate-list.ps1

и код, который должен быть выполнен для преобразования, следующий

ffmpeg -i input -c:v libx265 -x265-params lossless=1 FILENAME.mkv

1 Ответ

1 голос
/ 31 марта 2020

Не думаю, что вам нужен промежуточный список с именами файлов; вместо этого используйте один конвейер, в котором вывод Get-ChildItem (входные файлы) обрабатывается один за другим с использованием командлета ForEach-Object:

Get-ChildItem .\video_old -Filter *.mkv | ForEach-Object {
  ffmpeg -i $_.FullName -c:v libx265 -x265-params lossless=1 ".\video_new\$($_.Name)"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...