Mercurial > codedump
changeset 103:1cc4f545a260
Add files via upload
committer: GitHub <noreply@github.com>
author | Paper <37962225+mrpapersonic@users.noreply.github.com> |
---|---|
date | Thu, 22 Sep 2022 00:01:37 -0400 |
parents | eacdf8cc0335 |
children | 2e115eb60be8 |
files | god.bat |
diffstat | 1 files changed, 103 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /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 ^<input.mp4^> ^<input.wav^> ^<output.mp4^> [--acodec ^<codec^>] +echo. [--debug] +echo. +echo.Arguments: +echo. ^<input.mp4^>: input mp4 with at least 1 video stream +echo. ^<input.wav^>: input wav (or flac) +echo. ^<output.mp4^>: output mp4 +echo. [--acodec ^<codec^>]: (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