comparison god.bat @ 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
children 2e115eb60be8
comparison
equal deleted inserted replaced
102:eacdf8cc0335 103:1cc4f545a260
1 @echo off
2
3 REM Welp, this was pointless.
4 REM
5 REM There's really no way to put raw PCM audio
6 REM in an MP4 container. MP4 is already a really
7 REM shitty format for a number of other reasons
8 REM (no real subtitle support, VERY limited codec
9 REM options, etc.), which is why I prefer using
10 REM Matroska for literally anything outside of
11 REM Vegas.
12 REM
13 REM However, I learned how to make an arguments
14 REM parser in fucking Batch out of all things,
15 REM so maybe there was a purpose for this after
16 REM all.
17 REM
18 REM TL;DR: I didn't even come close to solving the
19 REM problem this was meant to fix, and MP4 is a
20 REM godawful container. :D
21
22 setlocal EnableDelayedExpansion
23 call :argparser %*
24 if %count% LSS 3 goto usage
25 REM mp4 barely supports flac, matroska ftw
26 REM
27 REM vegas pro sucks and has barely any support
28 REM for different codecs in MP4s (see: yuv 4:4:4),
29 REM and really *only* supports AAC. this sucks,
30 REM cause AAC can be a bitch at times
31 if not defined acodec set "acodec=flac"
32
33 ffmpeg -y -i "!inputmp4!" -i "!inputwav!" -c:v copy -c:a !acodec! ^
34 -strict -2 -loglevel quiet -stats "!outputmp4!"
35 goto cleanup
36
37 :usage
38 echo.Usage:
39 echo. %~n0.bat ^<input.mp4^> ^<input.wav^> ^<output.mp4^> [--acodec ^<codec^>]
40 echo. [--debug]
41 echo.
42 echo.Arguments:
43 echo. ^<input.mp4^>: input mp4 with at least 1 video stream
44 echo. ^<input.wav^>: input wav (or flac)
45 echo. ^<output.mp4^>: output mp4
46 echo. [--acodec ^<codec^>]: (optional) audio codec to use
47 echo. [--debug]: prints all commands to the terminal
48 echo.
49 REM we don't know if the user is running from a terminal or not...
50 echo.Press any key to exit...
51 pause 1>NUL 2>&1
52
53 :cleanup
54 REM this MIGHT fuck up someone's environment variables
55 REM i don't care :). deal with it
56 set "inputmp4="
57 set "inputwav="
58 set "outputmp4="
59 set "acodec="
60 set "count="
61 exit /b 0
62
63 REM -------------- Functions --------------
64
65 :argparser
66 set "count=0"
67 :argparser_loop
68 if not "x%~1x" == "xx" (
69 set "var=%~1"
70 if "!var:~0,2!"=="--" (
71 if "!var!"=="--acodec" (
72 shift
73 set "acodec=%~2"
74 goto :argparser_end
75 )
76 if "!var!"=="--debug" (
77 @echo on
78 goto :argparser_end
79 )
80 ) else (
81 if %count% EQU 0 set "inputmp4=%~1"
82 if %count% EQU 1 set "inputwav=%~1"
83 if %count% EQU 2 set "outputmp4=%~1"
84 set /a "count+=1"
85 )
86 :argparser_end
87 shift
88 goto :argparser_loop
89 )
90 set "var="
91 exit /b 0
92
93 :error
94 echo [ERROR]: %~1
95 exit /b 0
96
97 :warning
98 echo [WARNING]: %~1
99 exit /b 0
100
101 :info
102 echo [INFO]: %~1
103 exit /b 0