powershell -Command "(Get-Content '%~f0') -join \"`r`n\" | Set-Content '%~f0'"
more +3 "%~f0" > "ffmpeg_temp.txt"
move /y "ffmpeg_temp.txt" "%~f0" && del ffmpeg_temp.txt && exit
:full
echo off
chcp 65001
SETLOCAL EnableDelayedExpansion
cls
set input=
set o=
title Improved FFMPEG
if exist "ffmpeg.exe" (
        goto ready
) else (
        echo Не найдена программа ffmpeg.EXE. Переместите запускаемый файл в папку с программой ffmpeg.EXE для работы.
        echo Нажмите любую кнопку для закрытия
        pause > nul
        exit
)
:ready
echo.
set pro=
set /p pro=Войти в продвинутый режим?(1 - да, иначе - нет): 
if "!pro!"=="1" goto pro
:input
cls
echo Ver 1.6 - thewho.narod.ws
echo.
title FFMPEG - Простой режим
echo ████ ████ ██   ██ ████ ████ █████
echo █    █    █ █ █ █ █  █ █    █
echo ████ ████ █  █  █ ████ ████ █  ██
echo █    █    █     █ █    █    █   █
echo █    █    █     █ █    ████ █████
echo.
echo Оставить пустым чтобы не вносить изменения (при повторном вводе параметров всё, кроме 
echo имён входного и выходного видео сбрасываются). В имена файлов включать их расширение.
echo Оставьте поле входного/выходного файла пустым или введите 0 для вывода пресетов
echo При переходе в пресеты имена входного/выходного файла сбрасываются.
echo Для вывода всех кодеков и форматов зайдите в пресеты.
echo.
set ar= -ar 
set format= -format 
set vcodec= -vcodec 
set b= -b:v 
set s= -s 
set r= -r 
set acodec= -acodec 
set ab= -b:a 
:inputset
set /p input=Исходный файл: 
if "!input!"=="" goto presets
if !input!==0 goto presets
if not exist !input! echo Исходный файл !input! не найден. && set /p input=Исходный файл: 
if "!input!"=="" goto presets
if !input!==0 goto presets
if not exist !input! echo Исходный файл !input! всё ещё не найден, но продолжаем.
:oset
set /p o=Выходной файл: 
if "!o!"=="" goto presets
if !o!==0 goto presets
if exist !o! echo Файл !o! уже существует, он будет автоматически ПЕРЕЗАПИСАН.
set /p format1=Формат: 
if "!format1!"=="" set format=
set /p vcodec1=Видео кодек: 
if "!vcodec1!"=="" set vcodec=
set /p b1=Битрейт видео: 
if "!b1!"=="" set b=
set /p s1=Разрешение видео: 
if "!s1!"=="" set s=
set /p r1=Фреймрейт видео (FPS): 
if "!r1!"=="" set r=
set /p acodec1=Аудио кодек: 
if "!acodec1!"=="" set acodec=
set /p ab1=Битрейт аудио: 
if "!ab1!"=="" set ab=
set /p ar1=Частота дискретизации аудио: 
if "!ar1!"=="" set ar=
set /p log=Включить логирование? (1 - да, иначе - нет): 
set format=!format!!format1!
set vcodec=!vcodec!!vcodec1!
set b=!b!!b1!
set s=!s!!s1!
set r=!r!!r1!
set acodec=!acodec!!acodec1!
set ab=!ab!!ab1!
set ar=!ar!!ar1!
echo.
echo Всё готово для конвертации. Нажмите любую кнопку для начала конвертации !input!.
pause > nul
cls
if "!log!"=="1" (
        title FFMPEG - Работает
        echo.
        echo Обработка...
        >>iFFMPEG_logs.txt 2>&1(
        echo.
        echo ================ %date% %time% ================
        echo Arguments: -i !input!!format!!vcodec!!acodec!!b!!r!!ab!!ar! -y!s! -title X !o!
        ffmpeg.exe -i !input!!format!!vcodec!!acodec!!b!!r!!ab!!ar! -y!s! -title X !o!
        echo.
        echo Errorlevel = !errorlevel!
        )
if "!errorlevel!"=="0" (
        cls
        echo.
        title FFMPEG - !o! готов
        echo Фаш файл !o! готов.
) else (
    echo.
        title FFMPEG - Ошибка
        echo Выполнено с ошибками.
)
) else (
        title FFMPEG - Работает
        ffmpeg.exe -i !input! !format! !vcodec! !acodec! !b! !r! !ab! !ar! -y !s! -title X !o!
if "!errorlevel!"=="0" (
        cls
        echo.
        title FFMPEG - !o! готов
        echo Фаш файл !o! готов.
) else (
    echo.
        title FFMPEG - Ошибка
        echo Выполнено с ошибками.
)
)
echo.
echo 1. Повторить
echo 2. Ввести другие параметры
echo 3. Перезагрузить программу
echo 0. Открыть папку с выходным файлом
echo.
if "!log!"=="1" echo Логи сохранены в файле iFFMPEG_logs.txt в папке с программой.
set /p func="Введите команду выше, пусто для выхода: "
if "!func!"=="1" goto convert
if "!func!"=="2" goto input
if "!func!"=="3" goto full
if "!func!"=="0" (
for %%i in ("!o!") do set "o_p=%%~dpi"
start !o_p!
goto end11
)
exit



:presets
set input=
set o=
set preset=
cls
title FFMPEG - пресеты
echo.
echo Пресеты:
echo 1. Получить информацию о файле
echo 2. Конвертация в MP3 (расширение автоматически .MP3)
echo 3. Совместимый c DVD-плеерами формат (расширение автоматически .MPG)
echo 4. Совместимый c кнопочниками формат (4:3)
echo 5. Вывод кодеков
echo 6. Вывод форматов
:presetset
echo.
set /p preset=Пресет, пусто для возврата в простой режим: 
if "!preset!"=="" goto input
:presetinput
if "!preset!"=="5" goto convert1
if "!preset!"=="6" goto convert1
set /p input=Входной файл: 
if "!input!"=="" cls and goto presetinput
if "!preset!"=="1" goto convert1
:presetoutput
set /p o=Выходной файл: 
if "!o!"=="" cls and goto presetoutput
echo Всё готово для конвертации. Нажмите любую кнопку для начала конвертации !input!.
if exist "!o!" (
        echo Данный файл уже существует, он будет автоматически ПЕРЕЗАПИСАН.
)
pause > nul
:convert1
:: getinfo/preset 1
if "!preset!"=="1" ffmpeg -i !input!
:: preset 2
if "!preset!"=="2" (
set o=!o!.mp3
ffmpeg -i !input! -vn -y -f mp3 !o!
)
:: preset 3
if "!preset!"=="3" (
set o=!o!.mpg
ffmpeg -i !input! -c:v mpeg2video -qscale:v 2 -maxrate:v 4000k -bufsize:v 2000k -s 640x480 -r 25 -c:a mp2 -b:a 192k -ac 2 !o!
)
:: preset 4
if "!preset!"=="4" ffmpeg -i !input! -vcodec mpeg4 -b:v 250000 -b:a 64 -s 192x144 -acodec aac -y -ar 24000 !o!
:: preset 5
if "!preset!"=="5" ffmpeg -encoders
:: preset 6
if "!preset!"=="6" ffmpeg -formats

if "!preset!"=="1" echo Команда обработана && goto end11
if "!preset!"=="5" echo Команда обработана && goto end11
if "!preset!"=="6" echo Команда обработана && goto end11
if "!errorlevel!"=="0" (
        cls
        echo.
        title FFMPEG - !o! готов
        echo Фаш файл !o! готов.
) else (
    echo.
        title FFMPEG - Ошибка
        echo Выполнено с ошибками
)
:end11
echo.
set func=0
echo 1. Повторить
echo 2. Выбрать другой пресет
echo 3. Перезагрузить программу
echo 0. Открыть папку с выходным файлом
set /p func="Введите команду выше, пусто для выхода: "
if "!func!"=="1" goto convert1
if "!func!"=="2" goto presets
if "!func!"=="3" goto full
if "!func!"=="0" (
for %%i in ("!o!") do set "o_p=%%~dpi"
start !o_p!
goto end11
)
exit



:pro
cls
title FFMPEG - Продвинутый режим
echo.
echo ████ ████ ██   ██ ████ ████ █████   █████ █████ █████
echo █    █    █ █ █ █ █  █ █    █       █   █ █   █ █   █
echo ████ ████ █  █  █ ████ ████ █  ██ █ █████ █████ █   █
echo █    █    █     █ █    █    █   █   █     █  █  █   █
echo █    █    █     █ █    ████ █████   █     █   █ █████
echo.
set /p arg=Аргументы: 
echo Нажмите любую клавишу для начала процесса конвертации.
pause > nul
:1pro
title FFMPEG - Работает
ffmpeg.exe !arg!
:endpro
title FFMPEG - Завершено
echo.
echo 1. Повторить
echo 2. Ввести другие аргументы
echo 3. Перезагрузить программу
set /p command=Введите команду выше, пусто для выхода: 
if "!command!"=="1" goto 1pro
if "!command!"=="2" goto pro
if "!command!"=="3" goto full
exit
