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 &quot;-i <code>&quot;$oldfile</code>&quot; --title $title -o <code>&quot;$newfile</code>&quot; -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&quot; -Wait -NoNewWindow
	    	
	    	#x264エンコード設定 DVDISO to mkv
	    	Start-Process -FilePath $HandBrakeEXE -ArgumentList &quot;-i <code>&quot;$oldfile</code>&quot; --title $title -o <code>&quot;$newfile</code>&quot; -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&quot; -Wait -NoNewWindow
	    }
	    
	    Move-Item $oldfile $FileTo
	}
}


#Main
Enc

if($shutdown){Start-Process &quot;shutdown.exe&quot; -ArgumentList (&quot; /s /t 30&quot;) -NoNewWindow -Wait}

DVDISOをmkvにする想定なので、
dvd2mkv.ps1なんてファイル名でpathを通しておくのが良いかな。

コメントを残す

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