Also:
Ich hab mich in den lezten Tagen viel mit HLS und FFmpeg beschäftigt. Nach unzähligen einzel Versuchen habe ich angefangen einautomatisiertes Batch-Script zu schreiben. Dieses ist leider inzwischen sehr komplex geworden, aber ich habe immer zwischendurch Versuche gemacht und somit weiß ich In welchem bereich der Fehler liegen muss. Hier das Script:
Relevanter Teil:
Sucht mit Strg+F die Stelle entering if 1
denn das ist das letzte was noch ausgegeben wird danach kommt nur noch Syntaxfehler.
Alles ab :converting funktioniert (den Teil hatte ich schon vorher und der funktioniert)
Das start Kommando in der CMD war: start.bat input.mp4 240 http://(hier meine url die ich aber als Fehlerquelle ausgeschlossen habe)
Es muss also an den if Schleifen liegen doch ich erkenne da keinen Fehler und blöderweise habe ich von vorherigen Versionen keine Sicherung angefertigt.
Ich hab mich in den lezten Tagen viel mit HLS und FFmpeg beschäftigt. Nach unzähligen einzel Versuchen habe ich angefangen einautomatisiertes Batch-Script zu schreiben. Dieses ist leider inzwischen sehr komplex geworden, aber ich habe immer zwischendurch Versuche gemacht und somit weiß ich In welchem bereich der Fehler liegen muss. Hier das Script:
Relevanter Teil:
Sucht mit Strg+F die Stelle entering if 1
denn das ist das letzte was noch ausgegeben wird danach kommt nur noch Syntaxfehler.
Alles ab :converting funktioniert (den Teil hatte ich schon vorher und der funktioniert)
Das start Kommando in der CMD war: start.bat input.mp4 240 http://(hier meine url die ich aber als Fehlerquelle ausgeschlossen habe)
Es muss also an den if Schleifen liegen doch ich erkenne da keinen Fehler und blöderweise habe ich von vorherigen Versionen keine Sicherung angefertigt.
Code:
@echo off
:start
set width=0
set height=0
set nw=0
set nh=0
set input="%cd%\%1"
set oth=%2
set url=%3
set quality=%oth%p
echo[
echo ====================
echo == Video Quality: %
:input
if exist "%input%" (
echo ===FILE=EXISTS====
echo ==Input==PATH=====
echo %input%
echo ==================
goto preparation
) else (
echo Input File doesnt exist.
goto error
)
:preparation
echo ====PREPARATION====
mkdir %quality%
mkdir tmp
attrib +h ./tmp
echo ==Capturing==Origninal==
echo =======Resolution=======
ffprobe -v error -select_streams v:0 -show_entries stream=width -of csv=s=x:p=0 %input% >./tmp/width.temp
ffprobe -v error -select_streams v:0 -show_entries stream=height -of csv=s=x:p=0 %input% >./tmp/height.temp
echo ===Saving=Resolution====
SET /p height=<./tmp/height.temp
SET /p width=<./tmp/width.temp
echo The origanal width is %width%
echo The original height is %height%
::Calculating Aspectfactor
call calc.exe %height%/%width% >./tmp/aspect.temp
SET /p ar=<./tmp/aspect.temp
::finding new height
call calc.exe Round((%oth%/1080)*%height%) >./tmp/nh.temp
SET /p nh=<./tmp/nh.temp
call calc.exe %nh%/2 >./tmp/hnh.temp
SET /p hnh=<./tmp/hnh.temp
echo The new height is %nh%
::finding new width
call calc.exe Round(%nh%/%ar%) >./tmp/nw.temp
SET /p nw=<./tmp/nw.temp
echo The new width is %nw%
echo The Aspectratiofactor is %ar%
echo The new Resolution is %nw%x%nh%
:searching
::searching for Final Resolution
echo ===========================================
echo Searching Part
echo ===========================================
call calc.exe Round(%nh%/2)*2 >./tmp/tmp.txt
set /p pnh=<./tmp/tmp.txt
call calc.exe Round(%nw%/2)*2 >./tmp/tmpw.txt
set /p pnw=<./tmp/tmpw.txt
echo pnw ist %pnw% pnh ist %pnh%
echo nw ist %nw% nh ist %nh%
echo entering if 1
if /i %pnh%==%nh% (
echo PNH ist Gerade
goto searching2
) else (
echo PNH Ungerade
call calc.exe %nh%+1 >./tmp/nh.temp
::type nh.temp
)
:searching2
echo entering if 2
if /i %pnw%==%nw% (
echo Pnw ist Gerade
goto converting
) else (
echo Ungerade
call calc.exe %nw%+1 >./tmp/nw.temp
::type nh.temp
)
echo if clauses passed
set /p nw=<./tmp/nw.temp
set /p nh=<./tmp/nh.temp
echo NH ist %nh%
echo NW ist %nw%
set counter=%counter%+1
goto searching
:converting
echo The origanal width %width% has been changed to %nw%
echo The original height %height% has been changed to %nh%
pause
:bitrate_settings
if /i %oth% LSS 360 (
echo 240p
set bv=450k
set maxrate=512k
set bufsize=800k
set ba=88k
) else if /i %oth% LSS 480 (
echo 360p
set bv=800k
set maxrate=856k
set bufsize=1200k
set ba=96k
) else if /i %oth% LSS 720 (
echo 480p
set bv=1400k
set maxrate=1498k
set bufsize=2100k
set ba=128k
) else if /i %oth% LSS 1080 (
echo 720p
set bv=2800k
set maxrate=2996k
set bufsize=4200k
set ba=192k
) else if /i %oth% EQU 1080 (
echo 1080p
set bv=5000k
set maxrate=5350k
set bufsize=7500k
set ba=256k
) else (
pause
)
:printout
echo[
echo =============================
echo == FFmpeg Settings ==
echo == ==
echo == b:v %bv% ==
echo == maxrate %maxrate% ==
echo == bufsize %bufsize% ==
echo == b:a %ba% ==
echo == ==
echo == height %nh% ==
echo == width %nw% ==
echo == ==
echo =============================
timeout /t 2
pause
ffmpeg -i %input% -y -vf scale=w=%nw%:h=%nh% -c:a aac -ar 48000 -c:v h264 -profile:v main -crf 20 -sc_threshold 0 -g 48 -keyint_min 48 -b:v %bv% -maxrate %maxrate% -bufsize %bufsize% -b:a %ba% -hls_time 4 -hls_base_url %url% -hls_playlist_type vod %quality%/%quality%.m3u8
goto end
:error
echo Some Error occured
:end
echo Thanks for Choosing