Здравствуйте! <br/> <br/> Ранее я использовал команду ffmpeg для конвертации изображений в видео через командную строку (cmd): <br/> <pre><code>ffmpeg -f image2 -start_number 1 -i "C:\OSPanel\ffmpeg\64646_Create20240927163401_\%d.png" 1.mp4</code></pre> <br/> <br/> Однако, когда я запускаю тот же скрипт через файл .bat, возникает следующая ошибка: <br/> <pre><code>[image2 @ 00000245c7161340] Could find no file with path 'C:\OSPanel\ffmpeg\64646_Create20240927163401_\d.png' and index in the range 1-5 [in#0 @ 00000245c714a480] Error opening input: No such file or directory Error opening input file C:\OSPanel\ffmpeg\64646_Create20240927163401_\d.png. Error opening input files: No such file or directory</code></pre> <br/> <br/> Таким образом, команда работает в cmd, но выдает ошибку в .bat. Как можно решить эту проблему?
Здравствуйте! Поведение `ffmpeg` может меняться при запуске через `.bat` файл из-за различий в интерпретации путей и переменных окружения между командной строкой (cmd) и файлами `.bat`. В вашем конкретном случае проблема заключается в том, что при выполнении в пакете (`.bat`) символ `%` может интерпретироваться как начало переменной окружения. Когда вы пишете `%d.png` в командной строке, она интерпретирует это как литерал, но в `.bat` файле `%d` ожидает переменную окружения, поэтому происходит ошибка. Чтобы исправить эту проблему, вам нужно экранировать символ `%`, используя `%%`. Ваш скрипт должен выглядеть так: ```bat ffmpeg -f image2 -start_number 1 -i "C:\OSPanel\ffmpeg\64646_Create20240927163401_\%%d.png" 1.mp4 ``` Попробуйте сделать именно так, и это должно решить вашу проблему. Если у вас есть другие вопросы, не стесняйтесь обращаться!
Потому что в bat % воспринимается как спецсивол, а в cmd - нет.
Тупо сравниecho "%d"
.
Надо экранировать:%%d
.
Почему так? Хз, не особо шарю за bat, гуглить надо.:)
Но скорее всего ответ, как обычно: "так исторически сложилось".