REM ## Moegliche Relikte entfernen

del %1_image1.avs %1_image2.avs %1_image3.avs 2>NUL
del %1.ffindex %1.avs .aspect 2>NUL
del .length 2>NUL
del %1.avs 2>NUL

cls

@echo off
setlocal
color f0
 
echo ##  encode_simple (22.10.12)                                                 ##
echo ##  aka "Simple-Maurer" ;-)                                                  ##
echo ##  Voreingestellte Parameter werden in [ ] angezeigt                        ##
echo ##                                                                           ##
echo.
@echo off&&setLocal EnableDelayedExpansion
if [%1]==[] (
echo Bitte nur *eine* Videodatei per Drag^&Drop auf das Icon schubsen
echo.
pause&&goto :eof
)
if not [%2]==[] (
echo Bitte nur eine Datei zur Zeit
echo.
pause&&goto :eof
)

REM cls
echo Zielchannel (Wahl von Wasserzeichen und Farbe der Video-Bauchbinde): 
echo.

echo Zielseitenverhaeltnis (16:9=0, 4:3=1) 
echo.
set /p ar= [0]: 
if '%ar%' == '' set ar=0
echo.
echo Zielaufloesung (sd=0, hd=1, hd erzwingt 16:9)    
echo.
set /p hd= [0]: 
if '%hd%' == '' set hd=0
if %hd% == 1 set ar=0
echo. 
echo Bauchbindentext (^", ^<, ^>, ^', ^&, ^^^^, ^^!, nicht verwenden; kein Text -^> Return):
echo.
set /p bauchbinde=
echo.
echo Tonspur 15 dB leiser machen, z.B. bei Messevideos (nein=0, ja=1)
echo.
set /p amplify= [0]: 

if '%amplify%' == '' set amplify=0

set xres=640
set yres=480
set bitrate=900k
set aspect=4:3

if %ar% == 0 (set bitrate=800k) & (set yres=360) & (set aspect=16:9)  
if %hd% == 1 (set bitrate=2400k) & (set xres=1280) & (set yres=720) & (set aspect=16:9)


cls
echo.
echo ## Zur Kontrolle:
echo.
if "%bauchbinde%" == "" (echo Bauchbindentext:      -^> keiner) else (echo Bauchbindentext:      "%bauchbinde%" [%length% Zeichen])
echo.
echo Aufloesung:           %xres%x%yres%
echo.
echo Bitrate:              %bitrate% (automatisch gewaehlt, kann abweichen)
echo.
echo hd=%hd% > %1.avs
echo ar=%ar% >> %1.avs

@pause

chcp 1252

echo LoadPlugin("%~dp0\ffms2.dll") >> %1.avs

echo video = FFVideoSource("%~fn1") >> %1.avs
echo video = (FrameRate(video) ^>= 50.0) ? video.ChangeFPS(Round(video.Framerate/2)) : video >> %1.avs

echo Try { >> %1.avs
echo audio = FFAudioSource("%~fn1").ResampleAudio(44100) >> %1.avs
echo }  >> %1.avs
echo Catch(err_msg) {  >> %1.avs
echo audio = BlankClip(video, audio_rate=44100, sixteen_bit=true, stereo=true) >> %1.avs
echo return audio >> %1.avs
echo } >> %1.avs

echo audio = (audio.AudioChannels == 1) ? MergeChannels(audio,audio) : audio >> %1.avs
echo audio = (audio.AudioChannels ^> 2) ? GetChannel(audio,1,2) : audio >> %1.avs

if %amplify% == 1 echo audio = AmplifyDB(audio,-15.0) >> %1.avs

echo video = AudioDub(video,audio) >> %1.avs

echo res_x = 640 * (hd+1) >> %1.avs
echo res_y = (360 + ar*120)*(hd+1) >> %1.avs
echo video = video.LanczosResize(res_x,res_y) >> %1.avs


echo wasserzeichen = "%~dp0\watermark_dt.png" >>%1.avs

REM #### Wasserzeichen laden und Alphakanal bestimmen ####

echo logo = ImageSource(wasserzeichen,pixel_type="rgb32") >>%1.avs
echo logo_scaled = LanczosResize(logo, logo.width*(hd+1)/2, logo.height*(hd+1)/2) >>%1.avs
echo alpha = logo_scaled.ShowAlpha(pixel_type="rgb32")#.LanczosResize(logo.width*(hd+1)/2, logo.height*(hd+1)/2) >>%1.avs

echo fontsize= 24                   ## Schriftgröße >>%1.avs
echo fontwidth = 6.3                ## Schriftbreite >>%1.avs
echo bb_hoehe = 42                  ## Hoehe der Bauchbinde; bezogen auf 640x360 >>%1.avs
echo bb_abstand = 32                ## Abstand der Bauchbinde vom unteren Rand des Videos; bezogen auf 640x360 >>%1.avs
echo bb_text_x = 30                 ## horizontale Einrückung Bauchbindentext >> %1.avs
echo bb_text_y = 27                 ## vertikale Einrückung Bauchbindentext >> %1.avs
echo schatten = 0.7                 ## Schatten des Bauchbindentextes; Versatz in Pixeln >>%1.avs
echo wz_x = 532                     ## x-Versatz des Wasserzeichens >> %1.avs
echo wz_y = 292                     ## y-Versatz des Wasserzeichens >> %1.avs
echo fade = 5                       ## Ein-/Ausblenden der Bauchbinde (Zahl der Frames) >> %1.avs
echo anzeigedauer = 100             ## so lange wird die Bauchbinde angezeigt (Zahl der Frames) >> %1.avs
echo hintergrundfarbe = $4A58BB     ## Farbe der Bauchbinde >> %1.avs
echo textfarbe = $FFFFFF            ## Farbe der Bauchbindenschrift >> %1.avs
echo startframe = 18                ## Beginn der Bauchbinden-Animation (Zahl der Frames) >> %1.avs
echo duration = 12                  ## Dauer der Bauchbinden-Animation (Zahl der Frames) >> %1.avs

REM ###############

echo clip=Blankclip(length=anzeigedauer, width=res_x, height=bb_hoehe*(hd+1), color=hintergrundfarbe)  >> %1.avs

echo rein=Animate(video, startframe, startframe+duration, "Overlay", clip, res_x*(-1), (360 + 120*ar - bb_abstand - bb_hoehe)*(hd+1), clip, 0,(360 + 120*ar - bb_abstand - bb_hoehe)*(hd+1)) >> %1.avs

echo raus=Animate(video, startframe+duration+anzeigedauer+1, startframe+2*duration+anzeigedauer, "Overlay", clip, 0, (360 + 120*ar - bb_abstand - bb_hoehe)*(hd+1), clip, res_x,(360 + 120*ar - bb_abstand - bb_hoehe)*(hd+1)) >> %1.avs

echo rein_getrimmt=rein.Trim(0,startframe+duration) >> %1.avs
echo raus_getrimmt=raus.Trim(startframe+duration+anzeigedauer+2, 0) >> %1.avs

echo bauchbinde=clip.Trim(0,fade) >> %1.avs
echo bauchbinde_text=clip.Trim(0,anzeigedauer).Subtitle("%bauchbinde%",font="Comic Sans MS", x=(bb_text_x+schatten)*(hd+1),y=(bb_text_y+schatten)*(hd+1), size=fontsize*(hd+1), font_width=fontwidth*(hd+1), text_color=$000000, halo_color=$ff000000, align=4).Subtitle("%bauchbinde%",font="Comic Sans MS", x=bb_text_x*(hd+1),y=bb_text_y*(hd+1), size=fontsize*(hd+1), font_width=fontwidth*(hd+1), text_color=textfarbe, halo_color=$ff000000, align=4) >> %1.avs
echo content_bauchbinde=Dissolve(bauchbinde,bauchbinde_text,bauchbinde,fade) >> %1.avs

REM ##############

if "%bauchbinde%" == "" echo content_bauchbinde=LanczosResize(video,640*(hd+1),(360+ar*120)*(hd+1)).ConvertToRGB32 >> %1.avs

echo rein_getrimmt++Overlay(video.Trim(startframe+duration+1,startframe+duration+anzeigedauer+1),content_bauchbinde,0,(360-bb_abstand - bb_hoehe+120*ar)*(hd+1))++raus_getrimmt >>%1.avs 
echo complete = Overlay(logo_scaled, x=(wz_x)*(hd+1),y=(wz_y+120*ar)*(hd+1), mask = alpha) >>%1.avs
echo fadeio(complete, fade) >> %1.avs

REM Vorschaubilder erzeugen

@echo off
type %1.avs > %1_image.avs
echo ConvertToRGB(complete) >> %1_image.avs
echo SelectEvery(complete, FrameCount(complete)/3,(FrameCount(complete)/3)) >>  %1_image.avs
REM echo FlipVertical() >> %1_image.avs
"%~dp0ffmpeg.exe" -i "%~fn1_image.avs" -b 4k -f image2 "%~fn1_preview%%d.jpg"
REM @echo on 

chcp 850

echo Kodiere Video

if %hd% == 1 ("%~dp0ffmpeg.exe" -i %1.avs -threads 0 -profile main -sws_flags lanczos -s %xres%x%yres% -aspect %aspect% -level 31 -vcodec libx264 -b %bitrate% -g 250 -acodec libvo_aacenc -ab 96k "%~fn1_encoded.mp4") else ("%~dp0ffmpeg.exe" -i %1.avs -threads 0 -profile baseline -sws_flags lanczos -s %xres%x%yres% -aspect %aspect% -vcodec libx264 -b %bitrate% -g 250 -acodec libvo_aacenc -ab 96k "%~fn1_encoded.mp4")

echo Raeume Reste auf...
REM -------------------

REM del %1.ffindex %1.avs .aspect .length %1_image.avs

echo Bin hoffentlich fertig - schoenen Tag noch!

@pause