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