FFmpeg - Пакетное редактирование пакетных файлов - PullRequest
0 голосов
/ 27 ноября 2018

Я запустил огромный видеопроект, который я пытаюсь автоматизировать.Пока я добился хорошего прогресса, но теперь я застрял.Я искал в 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, но я не могу заставить его работать.

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

1 Ответ

0 голосов
/ 27 ноября 2018

FOR /R будет перебирать папки, но вы пытаетесь перебирать файлы *.mp4, не обращаясь к текущей обработанной (под) папке.

@Echo off
Set "Base=C:\Users\PC03\Desktop\Video test"
Set "Ext=*.mp4"

FOR /R "%Base%" %%F IN (.) DO (
    PushD "%%F"
    if exist "%Ext%" (
        > "%%~fF\output.txt" (
            echo "%Base%\vast\intro.mp4"
            For %%I in (%Ext%) do @echo file '%%~fI'
            echo "%Base%\vast\outro.mp4"
        )
        Echo created "%%~fF\output.txt"
    )
    PopD
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...