$inputFile = "lossless.mp4" $encodingSettings = @( @{ Args = @("-c:v","hevc_nvenc","-preset","p5","-rc","cbr","-b:v","30000k","-maxrate","30000k","-bufsize","60000k","-g","120","-bf","2"); Output = "cbr30000.mkv" }, @{ Args = @("-c:v","hevc_nvenc","-preset","p5","-rc","constqp","-qp","20","-pix_fmt","yuv420p","-profile:v","main","-g","120","-bf","2"); Output = "cqp20.mkv" }, @{ Args = @("-c:v","hevc_nvenc","-preset","p5","-rc","constqp","-qp","21","-pix_fmt","yuv420p","-profile:v","main","-g","120","-bf","2"); Output = "cqp21.mkv" }, @{ Args = @("-c:v","hevc_nvenc","-preset","p5","-rc","constqp","-qp","22","-pix_fmt","yuv420p","-profile:v","main","-g","120","-bf","2"); Output = "cqp22.mkv" }, @{ Args = @("-c:v","hevc_nvenc","-preset","p5","-rc","constqp","-qp","23","-pix_fmt","yuv420p","-profile:v","main","-g","120","-bf","2"); Output = "cqp23.mkv" } @{ Args = @("-c:v","hevc_nvenc","-preset","p5","-rc","constqp","-qp","24","-pix_fmt","yuv420p","-profile:v","main","-g","120","-bf","2"); Output = "cqp24.mkv" } @{ Args = @("-c:v","hevc_nvenc","-preset","p5","-rc","constqp","-qp","25","-pix_fmt","yuv420p","-profile:v","main","-g","120","-bf","2"); Output = "cqp25.mkv" } @{ Args = @("-c:v","hevc_nvenc","-preset","p5","-rc","constqp","-qp","26","-pix_fmt","yuv420p","-profile:v","main","-g","120","-bf","2"); Output = "cqp26.mkv" } @{ Args = @("-c:v","hevc_nvenc","-preset","p5","-rc","constqp","-qp","30","-pix_fmt","yuv420p","-profile:v","main","-g","120","-bf","2"); Output = "cqp30.mkv" } ) foreach ($setting in $encodingSettings) { if (Test-Path -Path $setting.Output) { continue } & ffmpeg -i $inputFile @($setting.Args) $setting.Output }