# HG changeset patch # User Paper <37962225+mrpapersonic@users.noreply.github.com> # Date 1663819297 14400 # Node ID 1cc4f545a26006246232341882c3fee40b9dc446 # Parent eacdf8cc0335b260a8e5f4d9cf3c863d8cc30a91 Add files via upload committer: GitHub diff -r eacdf8cc0335 -r 1cc4f545a260 god.bat --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/god.bat Thu Sep 22 00:01:37 2022 -0400 @@ -0,0 +1,103 @@ +@echo off + +REM Welp, this was pointless. +REM +REM There's really no way to put raw PCM audio +REM in an MP4 container. MP4 is already a really +REM shitty format for a number of other reasons +REM (no real subtitle support, VERY limited codec +REM options, etc.), which is why I prefer using +REM Matroska for literally anything outside of +REM Vegas. +REM +REM However, I learned how to make an arguments +REM parser in fucking Batch out of all things, +REM so maybe there was a purpose for this after +REM all. +REM +REM TL;DR: I didn't even come close to solving the +REM problem this was meant to fix, and MP4 is a +REM godawful container. :D + +setlocal EnableDelayedExpansion +call :argparser %* +if %count% LSS 3 goto usage +REM mp4 barely supports flac, matroska ftw +REM +REM vegas pro sucks and has barely any support +REM for different codecs in MP4s (see: yuv 4:4:4), +REM and really *only* supports AAC. this sucks, +REM cause AAC can be a bitch at times +if not defined acodec set "acodec=flac" + +ffmpeg -y -i "!inputmp4!" -i "!inputwav!" -c:v copy -c:a !acodec! ^ + -strict -2 -loglevel quiet -stats "!outputmp4!" +goto cleanup + +:usage +echo.Usage: +echo. %~n0.bat ^ ^ ^ [--acodec ^] +echo. [--debug] +echo. +echo.Arguments: +echo. ^: input mp4 with at least 1 video stream +echo. ^: input wav (or flac) +echo. ^: output mp4 +echo. [--acodec ^]: (optional) audio codec to use +echo. [--debug]: prints all commands to the terminal +echo. +REM we don't know if the user is running from a terminal or not... +echo.Press any key to exit... +pause 1>NUL 2>&1 + +:cleanup +REM this MIGHT fuck up someone's environment variables +REM i don't care :). deal with it +set "inputmp4=" +set "inputwav=" +set "outputmp4=" +set "acodec=" +set "count=" +exit /b 0 + +REM -------------- Functions -------------- + +:argparser + set "count=0" +:argparser_loop + if not "x%~1x" == "xx" ( + set "var=%~1" + if "!var:~0,2!"=="--" ( + if "!var!"=="--acodec" ( + shift + set "acodec=%~2" + goto :argparser_end + ) + if "!var!"=="--debug" ( + @echo on + goto :argparser_end + ) + ) else ( + if %count% EQU 0 set "inputmp4=%~1" + if %count% EQU 1 set "inputwav=%~1" + if %count% EQU 2 set "outputmp4=%~1" + set /a "count+=1" + ) + :argparser_end + shift + goto :argparser_loop + ) + set "var=" +exit /b 0 + +:error + echo [ERROR]: %~1 +exit /b 0 + +:warning + echo [WARNING]: %~1 +exit /b 0 + +:info + echo [INFO]: %~1 +exit /b 0 \ No newline at end of file