Я сделал функцию powershell для перекодирования видео с некоторыми дополнительными параметрами. Он в основном делает get-childitem в каталоге и передает каждое найденное вхождение в цикл foreach. Это работало хорошо, пока у меня есть значения по умолчанию внутри моей функции, которые передаются в строку ffmpeg в цикле на случай, если я не предоставлю ничего в командной строке (например, количество проходов, качество звука и т. Д.). Теперь я хотел интегрировать опцию, чтобы использовать опцию -vf ffmpeg filter. Моя проблема в том, что мне обычно это не нужно, поэтому я не могу использовать ни одной здравой опции по умолчанию, поэтому у меня не может быть что-то вроде -vf $ filteroption в моей командной строке. Поэтому я пытаюсь выяснить, как получить «-vf» внутри переменной без powershell или ffmpeg, перебивая меня, потому что atm я получаю либо ошибку отсутствия - в том, что видит ffmpeg (я полагаю, powershell разбирает это прочь) и когда я \ экранирую - я вижу это сейчас в строке ffmpeg, но ffmpeg не распознает его как один параметр.
примеры, которые работают:
&$encoder -hide_banner -i $i -c:v libvpx-vp9 -b:v 0 -crf $quality -tile-columns 6 -tile-rows 2 -threads 8 -speed 2 -frame-parallel 0 -row-mt 1 -c:a libopus -b:a $bitrate -af aformat=channel_layouts=$audio -c:s copy -auto-alt-ref 1 -lag-in-frames 25 -y $outfile;
здесь я предоставляю $ quality, $ audio и т. Д. С параметрами powershell для функции наподобие -quality 31 -audio стерео, и все это работает.
Но теперь мне нужно получить что-то вроде "-vf scale=1920:-1
" или "" внутри этой строки, и это не работает с чем-то вроде этого:
&$encoder -hide_banner -i $i -c:v libvpx-vp9 -b:v 0 -crf $quality -tile-columns 6 -tile-rows 2 -threads 8 -speed 2 -frame-parallel 0 -row-mt 1 -c:a libopus -b:a $bitrate -af aformat=channel_layouts=$audio -c:s copy -auto-alt-ref 1 -lag-in-frames 25 -y $extra $outfile;
когда я вызываю функцию с помощью: "RecodeVP9 -extra -vf scale=1920:-1
" powershell удаляет -, если я пытаюсь это сделать с экранированием - с - ffmpeg скулит об этом, говоря, что "Невозможно найти подходящий выходной формат для '-vf' ». Я также пробовал "" и "-" с похожими результатами. Похоже, что либо PowerShell меня перепутает, либо ffmpeg.
Итак, подведем итог:
Мне нужен способ получить дополнительные аргументы ffmpeg С самим именем параметра из командной строки powershell в мою функцию powershell (например, -vf scale=1920:-1
).