So, ich habe zwischenzeitlich rechnen gelernt. Also rechnen innerhalb von Batch-Dateien - ich hätts ja nicht für möglich gehalten

.
Also wird jetzt direkt unter Windows am Ende eine kurze Zusammenfassung angezeigt. Außerdem werden sämtliche ermittelten Zeitstempel sowie die Zusammenfassung in die Datei result.txt geschrieben (und beim nächsten Durchlauf überschrieben).
Als ich grad schonmal dran war, hab ich noch beim ersten Durchlauf vom Two-Pass Encoding den Audio-Encoder ausgeschaltet. Der profitert nämlich nicht vom Two-Pass Verfahren und kostet somit im ersten Durchlauf nur unnötig Rechenzeit, wenn auch nicht viel.
Die Finale Bätsch-Datei. Eigentlich müsste man ja noch FPS ausrechnen (2*60*24/Sekunden), aber dazu hab ich keine Lust mehr.
@echo off
set VOPTS=-ovc x264 -x264encopts
set XOPTS=frameref=5:bframes=2:8x8dct:me=hex:subq=5:trellis=1:threads=1:bitrate=700
set AOPTS=-oac faac -faacopts quality=75
set OPTIONS=ED_1024.avi -vf scale=640:360 -endpos 2:00
:: set OPTIONS=ED_1024.avi -vf scale=640:360 -endpos 0:10 -idx -ss 0:20
set SingleOPTS=%VOPTS% %XOPTS% %AOPTS%
set FirstpOPTS=%VOPTS% %XOPTS%:pass=1:turbo=1 -oac copy
set SecondpOPTS=%VOPTS% %XOPTS%:pass=2 %AOPTS%
:: Temporaere Variablen: h, m, s, c
:: Rueckgabewerte: t, centis
:: Parameter: centis, t, msg
goto :main
:: Rechnet die Zeit im Format HH:MM:SS.CC aus der Variablen t in
:: Centisekunden um. Ja, richtig, Centi-Sekunden, keine Millis... :/
:getcentis
set h=%t:~0,2%
set m=%t:~3,2%
set s=%t:~6,2%
set c=%t:~9,2%
set /a centis=%h%*360000+%m%*6000+%s%*100+%c%
:: echo %h%,%m%,%s%,%c%
:: echo %centis%
goto :eof
:: End Of File? LOL! Wer denkt sich denn sowas aus?
:: Rechnet Centisekunden aus der Variablen CENTIS in eine Zeit im Format
:: HH:MM:SS:CC um und gibt diese im der Variablen T zurück. Des weiteren
:: wird in der Variablen SECONDS die Zeit in Sekunden als Fliesskommazahl
:: abgelegt.
:centisToTime
set /a s=%centis%/100
set /a c=%centis%%%100
if %c% LSS 10 set c=0%c%
set seconds=%s%,%c%
set /a h=%centis%/360000
set /a m=(%centis%/6000)%%60
set /a s%%=60
if %h% LSS 10 set h=0%h%
if %m% LSS 10 set m=0%m%
if %s% LSS 10 set s=0%s%
set t=%h%:%m%:%s%,%c%
goto :eof
:: Gibt die Nachricht aus der Variablen MSG mitsamt Zeitstempel
:: aus, sowohl im DOS-Fenster als auch in die Datei result.txt.
:: Außerdem wird :GETCENTIS aufgerufen, so dass nachher in der
:: Variablen CENTIS die Zeit zum Aufrufzeitpunkt in Centisekunden
:: enthalten ist.
:printmsg
set t=%time%
@echo %t% %msg%
@echo %t% %msg% >> result.txt
call :getcentis
goto :eof
:: ************ ::
:: Hauptroutine ::
:: ************ ::
:main
del result.txt
set msg=Start.
call :printmsg
set tstart=%centis%
@echo on
mencoder.exe %OPTIONS% %SingleOPTS% -o single.avi || goto :fehler
@echo off
set msg=Single Pass Encoding beendet.
call :printmsg
set tsingle=%centis%
@echo on
mencoder.exe %OPTIONS% %FirstpOPTS% -o first.avi || goto :fehler
@echo off
set msg=First Pass von Multi-Pass Encoding beendet.
call :printmsg
set tfirst=%centis%
@echo on
mencoder.exe %OPTIONS% %SecondpOPTS% -o second.avi || goto :fehler
@echo off
set msg=Second Pass von Multi-Pass Encoding beendet.
call :printmsg
set tsecond=%centis%
:: ****************************** ::
:: Zeitdifferrenzberechnungskrams ::
:: ****************************** ::
type result.txt >> zeiten.txt
echo -------------------- >>zeiten.txt
echo ====================================
echo Zusammenfassung:
echo ------------------------------------
set /a centis=%tsingle%-%tstart%
call :centisToTime
echo Single-Pass : %t% %seconds%
echo Single-Pass : %t% %seconds% >>result.txt
set /a centis=%tfirst%-%tsingle%
call :centisToTime
echo First-Pass : %t% %seconds%
echo First-Pass : %t% %seconds% >>result.txt
set /a centis=%tsecond%-%tfirst%
call :centisToTime
echo Second-Pass : %t% %seconds%
echo Second-Pass : %t% %seconds% >>result.txt
set /a centis=%tsecond%-%tstart%
call :centisToTime
echo Gesamtdauer : %t% %seconds%
echo Gesamtdauer : %t% %seconds% >>result.txt
echo ====================================
goto :ende
:fehler
@echo Fehler beim Ausfuehren von mencoder.exe - Stop.
:ende
@pause
Edit: Dazu nochmal die Anleitung:
1. Du entpackst folgende Datei:
mplayer 1.0RC1 try 2 (rev 20801) 09 jun 2007 (ohne CSS Support, um rechtlichen Problemen vorzubeugen) in ein neues Verzeichnis.
BTW: MPlayer ist ein Open Source Video-Player, der dank libavcodec von Haus aus eine riesige Menge von Videoformaten unterstützt. Da solls wohl auch ne grafische Oberfläche für geben, falls man das baucht, nur nicht in diesem Build. Mencoder nutzt den selben Code, kann aber die Videos nicht auf dem Bildschirm ausgeben, sondern "encodiert" sie in andere Formate. Wer's grafisch braucht soll nach MEgui suchen.
2. In das selbe Verzeichnis speicherst du das Video Elephants Dream in der Version "AVI, MPEG4 / AC3 5.1 Surround, 1024 Pixel Breite" unter dem Namen "ED_1024.avi". Auf
dieser Seite oben rechts gibts reichlich Mirrors. Die Datei ist 425MB groß, aber wir brauchen nur die ersten 80 bis 100MB. In dem Verzeichnis sollten jetzt unter anderem die beiden Dateien "mencoder.exe" und "ED_1024.avi" liegen - nur die beiden werden wirklich benötigt.
3. Den Inhalt des Code-Feldes oben in eine Batch-Datei - z.B. encode.bat - im selben Verzeichnis speichern und diese ausführen.