HandBrakeCLIで変換スクリプト(PowerShell)

isoファイルとかtsファイルとか、
たまったものをメディアサーバーにそのまま置いておくのもかさばるので、残しておくなら極力x264やらエンコードしておいときたい。
ということで、
ICT備忘録さんで掲載されていたコードを参考にさせてもらってスクリプトにしてみた。
海外ドラマみたいに2話入っているものはこうしないと1話分しか対象とならない事があるからとりあえず2回ループさせてる。
大分適当な対応。(汗
Param( [switch]$shutdown ) #Configure #---------------------------- $HandBrakeEXE = "C:\Program Files\HandBrake\HandBrakeCLI.exe" #HandBrakeのpath $InputFilePATH = "F:\Titles\" #変換する対象ファイルを配置するディレクトリ $FileTo = "F:\TitlesTo" #変換済みのファイルを移すディレクトリ #指定したフォルダを再帰的に処理するので、フォルダでグルーピングして #渡せば、そのまま変換済みファイルができあがる。 #ただし、処理済みはまとまってしまうので、複写して渡した方が良いかもしれない。 #---------------------------- Function Enc{ #再帰的処理が不要の場合、-Recurseを削除のこと。 $filelist = Get-ChildItem $InputFilePATH -Recurse -filter *.iso $num = $filelist | measure $filecount = $num.count $i = 0; ForEach ($file in $filelist) { $i++; $oldfile = $file.DirectoryName + "\" + $file.BaseName + $file.Extension; $progress = ($i / $filecount) * 100 $progress = [Math]::Round($progress,2) Clear-Host Write-Host ------------------------------------------------------------------------------- Write-Host Handbrake Batch Encoding Write-Host "Processing - $oldfile" Write-Host "File $i of $filecount - $progress%" Write-Host ------------------------------------------------------------------------------- for ($title=1; $title -le 2; $title++) { $newfile = $file.DirectoryName + "\" + $file.BaseName + "-title" + $title + ".mkv"; #x265エンコード設定 DVDISO to mkv #Start-Process -FilePath $HandBrakeEXE -ArgumentList "-i `"$oldfile`" --title $title -o `"$newfile`" -f mkv -w 720 --crop 0:0:0:0 --loose-anamorphic --modulus 2 -e x265 -q 20 --cfr -a 1 -E av_aac -6 dpl2 -R Auto -B 160 -D 0 --gain 0 --audio-fallback ac3 --subtitle 1 --subtitle-burned=1 --markers --encoder-preset=veryfast --verbose=1" -Wait -NoNewWindow #x264エンコード設定 DVDISO to mkv Start-Process -FilePath $HandBrakeEXE -ArgumentList "-i `"$oldfile`" --title $title -o `"$newfile`" -f mkv -w 720 --crop 0:0:0:0 --loose-anamorphic --modulus 2 -e x264 -q 20 --cfr -a 1 -E av_aac -6 dpl2 -R Auto -B 160 -D 0 --gain 0 --audio-fallback ac3 --subtitle 1 --subtitle-burned=1 --markers --x264-preset=veryfast --x264-profile=main --h264-level=4.0 --verbose=1" -Wait -NoNewWindow } Move-Item $oldfile $FileTo } } #Main Enc if($shutdown){Start-Process "shutdown.exe" -ArgumentList (" /s /t 30") -NoNewWindow -Wait}
DVDISOをmkvにする想定なので、
dvd2mkv.ps1なんてファイル名でpathを通しておくのが良いかな。