У меня есть, например, файл 1.mp4, 2.mp4, 3.mp4 и т.д., который нужно конвертировать.
for %i in (*.mp4) do ffmpeg -y -i "%i" -vf scale=1280:720 -crf 17 -c:v libx265 "%~ni.mp4"
Затем я объединяю
ffmpeg -f concat -safe 0 -i xmylist.txt -crf 17 -c copy x1.mp4
Теперь я хотел сделать это за один шаг, но у меня не получилось
for %i in (*.mp4) do ffmpeg -y -i "%i" -vf scale=1280:720 -crf 17 -c:v libx265, -f concat -safe 0 -i xmylist.txt -crf 17 -c copy "%~ni.mp4"
Как правильно объединить эти два вместе? Ошибка, которую я получил, была
Опция vf (установить видеофильтры) не может быть применена к входному url xmylist.txt — вы пытаетесь применить входной параметр к выходному файлу или наоборот. Поместите этот параметр перед файлом, к которому он принадлежит. Ошибка анализа параметров входного файла xmylist.txt. Ошибка открытия входных файлов: Недопустимый аргумент
решение1
Попытался ли ты:
for %i in (*.mp4) do ffmpeg -y -i "%i" -vf scale=1280:720 -crf 17 -c:v libx265 "%~ni.mp4" & ffmpeg -f concat -safe 0 -i xmylist.txt -crf 17 -c copy "%~ni.mp4"
или это в пакете:
for %%i in (*.mp4) DO (
ffmpeg -y -i "%%i" -vf scale=1280:720 -crf 17 -c:v libx265 "%%~ni.mp4"
ffmpeg -f concat -safe 0 -i xmylist.txt -crf 17 -c copy "%%~ni.mp4"
)
хотя, обращая внимание на то, что вы пытаетесь сделать, хорошо ли это делать таким образом, если вы объединяете один и тот же файл, который уже является одним файлом?
поскольку вы не можете использовать более одного набора () в цикле for, вот возможное решение с использованием 3 пакетных файлов:
Вы используете команду «Пуск», потому что если вы просто введете ее туда, она запустит обе партии и мгновенно закроется.
Партия 1:
start "Batch2.bat"
start "Batch3.bat"
Партия 2:
for %%i in (*.mp4) DO ffmpeg -y -i "%%i" -vf scale=1280:720 -crf 17 -c:v libx265 "%%~ni.mp4"
Партия 3:
for %%i in (*.mp4) DO ffmpeg -f concat -safe 0 -i xmylist.txt -crf 17 -c copy "x1.mp4"
Пожалуйста, дайте мне знать:). Я смогу рассмотреть гораздо более сложную cmd дома сегодня вечером, чтобы помочь вам с этим.