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を通しておくのが良いかな。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です