FFmpeg - Пакетное редактирование пакетных файлов

Zanzi спросил: 03 ноября 2018 в 09:40 в: batch-file

Я запустил огромный видеопроект, который я пытаюсь автоматизировать. До сих пор я добился хорошего прогресса, но теперь я застрял. Я искал ответы в Google и здесь, в Stack OverFlow, но не могу найти решение своей проблемы.

Для завершения я объясню весь мой проект.

Первый шаг моего проекта - конвертировать все мои файлы в *.mp4 и за один раз записать мой логотип и сайт на видео. Я делаю это с помощью этого кода:

for %%a in ("*.*") do ffmpeg -i "%%a" -i "C:\Users\PC03\Desktop\Video test\Overlay.png" -filter_complex "[0:v][1:v] overlay" -c:v libx264 -preset medium -crf 23 -c:a aac -b:a 128k "newfiles\%%~na.mp4"
pause

После этого я помещу все видеофайлы в соответствующую подпапку. Таким образом, у меня есть почти сто подпапок с 2 или 3 файлами в них. Для каждой подкарты я хочу видео с введением (не в подкарте), видео в подкарте и вне (не в подкарте). Я могу сделать это с помощью следующего кода:

ffmpeg -f concat -i intro.mp4 -i mylist.txt -outro.png -c copy total.mp4

Чтобы автоматизировать все, у меня есть этот код для создания файла mylist.txt для каждой подпапки:

>output.txt (
echo C:\Users\PC03\Desktop\Video test\vast\intro.mp4
(for %%i in (*.mp4) do @echo file '%%i')
echo C:\Users\PC03\Desktop\Video test\vast\outro.mp4
)

Теперь единственное, что мне нужно сделать, это автоматизируйте следующий код:

ffmpeg -f concat -i intro.mp4 -i mylist.txt -outro.png -c copy total.mp4

, чтобы просмотреть все подпапки.

Я создал этот код:

FOR /R "C:\Users\PC03\Desktop\Video test" %%F IN (.) DO (
    > %%F\output.txt (
        echo "C:\Users\PC03\Desktop\Video test\vast\intro.mp4"
        (for %%i in (*.mp4) do (
            @echo file '%%i'
        ))
        echo "C:\Users\PC03\Desktop\Video test\vast\outro.mp4"
    )
)

Этот код предоставляет мне файл mylist.txt в каждой подпапке, но содержимое не то, что мне нужно. Он принимает содержимое родительской карты вместо подпапок. У меня есть сильное чувство, что где-то в этом коде мне нужно сделать еще один FOR /R, но я не могу заставить его работать.

Есть ли у кого-нибудь предложения о том, как это сделать?

0 ответов