StackExchange был первым местом для меня, чтобы искать ответы в течение длительного времени - к сожалению, я не мог найти (рабочее) решение для моей текущей проблемы, поэтому я открыл этот вопрос.
то, что я пытаюсь сделать, это создать PowerShell-скрипт (я совсем новичок в PS) Для автоматической обработки списка файлов (т. е. всех MP4-файлов, которые имеют ту же папку, что и скрипт) через FFmpeg.
TL;DR: что я не могу приступить к работе: использование filter-команд (-vf "iamafilterargument"
), которые включают переменные.
команда, которую я пытаюсь получить, работая, когда рукописный в cmd будет:
ffmpeg -i <input_file> -an -c:v libx264 -crf 16 -preset veryslow -vf "drawtext=fontsize=12:fontfile=/Windows/Fonts/arial.ttf:text='<input_filename>':bordercolor=black:borderw=2:fontcolor=white:x=(w-tw)/2:y=5:alpha=0.5" <output_filename>.mkv
через cmd, это работает так, как предполагалось. Теперь мой PS-скрипт:
$encoder = "C:FFMPEGffmpeg.exe"
$dateien = Get-ChildItem .*.mp4
$dateinamen = ForEach-Object {$dateien.BaseName}
for($i=0; $i -lt $dateien.Length; $i++){
$filterbefehl = " -i " + $dateien[$i] + " -an -map_metadata -1 -vf=`"drawtext=fontsize=12:fontfile=/Windows/Fonts/arial.ttf:text=" + $dateinamen[$i] + ":bordercolor=black:borderw=2:fontcolor=white:x=(w-tw)/2:y=5:alpha=0.5`" -c:v libx264 -intra -crf 16 -hide_banner " + $dateinamen[$i] + ".mkv"
Start-Process -FilePath $encoder -ArgumentList $filterbefehl -NoNewWindow; pause
}
Write-Host "Done!"
тем не менее, я получаю это сообщение об ошибке от FFmpeg:
(Я оставил именем в умышленно - файл называется "cam4_2017-03-01_2238.МР4".)
неизвестный параметр
'ВФ=то drawtext=свойство FontSize=12:шрифт файл=/ОС Windows/шрифты/шрифт Arial.ТТФ:текст=cam4_2017-03-01_2238:необходимо=черный:borderw=2:свойство fontcolor=белый:х=(ж-РД)/2:у=5:альфа=0.5'.
Ошибка разделения списка аргументов: параметр не найден
Я пробовал все виды вещей:
- используя двойные прямые кавычки ("") вместо обратные кавычки (`")
- используя
&$encoder $filterbefehl
- включая содержимое $filterbefehl в
-ArgumentList
- использование одиночных цитат двойных чеков для $filterbefehl
выше результат ближе всего к работе скрипта я могу достичь до сих пор. Большинство моих других попыток потерпели неудачу, потому что я не мог понять, как получить правильные цитаты (оба "" и" не работали).
Используемое Программное Обеспечение:
- Win10 Pro (хотя я хотел бы, чтобы он работал на Win >=7)
- Powershell 5.1 (Сборка 14393)
- Пакет ffmpeg-binariy с сайта Zeranoe по - последняя версия
(20170225-7e4f32f) (используя 3.2.2 не сделал a разница)
заранее спасибо за помощь!