Top.Mail.Ru
Ответы

Не работает bat скрипт через ffmpeg

Хочу сделать универсальный конвертер, вот когда я перетаскиваю файл на батник, и ввожу gif, то оно всё идеально делает, а если любой другой формат то почему-то не работает

1234567891011121314151617181920212223242526272829
 @echo off 
mode con: cols=50 lines=20 
color f0 
echo [converter by whatforiam] 
echo. 
set /p output_format=В какой формат?  
 
if "%output_format%"=="gif" ( 
    set /p fps=Во сколько фпс?  
    set /p scale=Размер? Одно число, оно будет шириной и длиной  
    echo 1. Хорошее качество = больше вес  
    echo 2. Плохое качество с точками = меньший вес  
    set /p compression_method= 
) 
 
if %compression_method%==1 ( 
    set compression=flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse 
) else ( 
    set compression=flags=lanczos 
) 
 
for %%i in (%*) do ( 
    if "%output_format%"=="gif" ( 
        ffmpeg -i "%%i" -vf "fps=%fps%,scale=%scale%:-1:%compression%" "output_%%~ni.%output_format%" 
    ) else ( 
        ffmpeg -i "%%i" "output_%%~ni.%output_format%" 
    ) 
) 
 
По дате
По рейтингу
Аватар пользователя
Мудрец

Скрипт можно упростить. На мой взгляд, слишком сложно написал.
Как буду за компом, предложу решение, если напишешь простым языком, что хочешь получить, и что подразумевает под "другими форматами".

Аватар пользователя
Гуру
12345678910111213141516171819202122232425262728
 @echo off 
mode con: cols=50 lines=20 
color f0 
echo [converter by whatforiam] 
echo. 
set /p output_format=В какой формат? 
 
if /i "%output_format%"=="gif" ( 
    set /p fps=Во сколько фпс? 
    set /p scale=Размер? Одно число, оно будет шириной и длиной 
    echo 1. Хорошее качество = больше вес 
    echo 2. Плохое качество с точками = меньший вес 
    set /p compression_method= 
) 
 
if /i %compression_method%==1 ( 
    set compression=flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse 
) else ( 
    set compression=flags=lanczos 
) 
 
for %%i in (%*) do ( 
    if /i "%output_format%"=="gif" ( 
        ffmpeg -i "%%i" -vf "fps=%fps%,scale=%scale%:-1:%compression%" "output_%%~ni.%output_format%" 
    ) else ( 
        ffmpeg -i "%%i" "output_%%~ni.%output_format%" 
    ) 
) 

Добавили ключевое слово "/i" в условные операторы "if", чтобы обеспечить нечувствительность к регистру при сравнении "%output_format%" с "gif".
Исправили условные операторы для проверки значения "%compression_method%" с помощью "/i" для нечувствительности к регистру.

Аватар пользователя
Профи

Лучше идти не на майл ру, а на форумы. Сам помочь не смогу, я знаю только пайтон. Удачи :)