PowerShell,ffmpegを使用して自動エンコード
目的
動画データをQSVを使って自動的に変換を行うようにする。
必要なもの
FFmpeg のWindows版バイナリ,PowerShellが使える環境(WindowsXP↑)。
やり方
今回は,FFmpegを使用してQSVエンコードをしたいので以下のサイトを参考に設定を行う。
今回作成した設定ファイルの名前は"x264_main.ffpreset"とする。
$file_lits=@() $file_lits=Get-ChildItem -Path Path_folder -Name #Path_folderのところは変換したいファイルのあるディレクトリを指定する。 foreach($file_name in $file_lits){ $in_file_path = Join-Path Path_folder $file_name #同様にPath_folderのところは変換したいファイルのあるディレクトリを指定する。 $out =[System.IO.Path]::GetFileNameWithoutExtension($file_name) $out_file_path = Join-Path Path_folder_mp4 $out #Path_folder_mp4のところは変換先のディレクトリを指定する。 $argu = "-i `""+ $in_file_path +"`" -fpre `"x264_main.ffpresetをフルパスで指定`" -pass 1 -filter:v yadif -flags +loop+global_header -vcodec h264_qsv -acodec copy -bsf:a aac_adtstoasc -aspect 16:9 -s 1920x1080 -look_ahead 0 `"" + $out_file_path+".mp4" +"`"" Start-Process -FilePath フルパスでffmpeg.exeのあるところを指定 -ArgumentList $argu -Wait $move= Join-Path 変換の終わったものの移動先 $file_name Move-Item $in_file_path $move Start-Sleep -s 5 }
このように自動化することができる。
もう少しいい感じに書く方法もあるのだろうなぁ…
実行環境は
WindowsServer2016
PentiumG4620
です.