Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Film-Montage mit ffmpeg mit NeuCodieren oder Umlabeln, Videogröße ändern und Streams umgruppieren (mappen)

Anleitung Multimedia Video & Streaming

Mitglied: max5moritz

max5moritz (Level 1) - Jetzt verbinden

27.01.2013, aktualisiert 29.01.2013, 3525 Aufrufe, 3 Danke

Für "ffmpeg" gibt es bereits viele Gui (Benutzer-Oberflächen), warum also dann diesen Skript.Zuerst weil es mir Spaß gemacht hat.
Zum anderen: Oft erschlagen mich die Einstell-Möglichkeiten. Dieser Skript fragt nur das, was für die Aufgabe notwendig ist.
Und das hübsch der Reihe nach. Selbst Anfänger können damit ihr Video-Material ihren Bedürfnissen anpassen.

Für die Eiligen


Das Wichtigste steht auch im Kopf des Skriptes "Film-Montage". Dass die DateiNamen eine -EndZiffer brauchen, muss ich das erwähnen?
Nicht vergessen: Die "MediaDat" wird auch noch benötigt.


Warum Film-Montage?


Ganz einfach, weil der Zusammenhang zwischen Eingangs- und Ausgangs-Bildgröße mit der Orignal-Filmgröße recht komplex ist, wie ein Blick
auf die folgende Tabelle zeigen mag:

f44b1208ecb5da70f0619d9e82cb9146 - Klicke auf das Bild, um es zu vergrößern

Damit kann der Schnitt für verschiedene Ausgaben errechnet werden, dort gibt es mehr Hintergrundwissen dazu.
"Film-Montage" erledigt das nebenbei. Wer Interesse an der Tabelle hat, kann sich gern melden.

Ursprünglich sollte es nur ein paar Zeilen-Code werden. Eben, um halt Filmteile zusammenzufügen. Doch dann dachte ich mir, es kann ja
nicht schaden, wenn der gesamte Prozess skriptgesteuert abläuft. Erstens macht man es ja vielleicht nicht so oft und zweitens, kann zwar "ffmpeg" viel,
und dass auch allein, aber den Rest, den will es dann immer ganz genau wissen. Sonst geht es schief.
So sind es dann gut 600, gefühlte 1000 Zeilen geworden. Ich hoffe: Ihr habt Spaß damit.

Update

Ja, es gibt bereits ein Update. Eine Kleinigkeit - Ich habe einen Zeitstempel eingefügt. Dieser ist Teil der start-set.bat.
Version-Stand: 1.3 - Der Zeitstempel hatte fehlende "AnführungsZeichen" angezeigt. Das ist nun behoben.
Er soll verhindern, dass die Skripte - auf Mehrkern-Rechnern kann ffmpeg auch mehrfach laufen - sich gegenseitig die Infos überschreiben.
Die Version-Nr. erscheint kurz nach dem Start als Fenster-Titel. Er sollte mit der von "MediaDat" übereinstimmen. Den Zeit-Stempel findet Ihr unten.
Fehlt die start-set wird sie jetzt mit erstellt. Allein das Anpassen müßt Ihr schon noch selbst. 0

Im Überblick


Und für die, die es genauer wissen wollen, folgt jetzt eine kurze Anleitung:

Ich habe den Skript modular aufgebaut. Der grobe Ablauf ergibt sich somit aus den Zeilen 24-37.

Welche Medien werden unterstützt?
Ich weiss es nicht, was "ffmpeg" alles kann. Da "Film-Montage" auch ein Einzelstück verarbeitet, kann das jeder einfach ausprobieren.

Einzige Bedingung:
Der Dateiname hat am Ende ein Zeichen und eine 1 (z.B.: Media-1.mp4), sonst gibt es eine Fehlermeldung, dass die Anzahl nicht stimmt.
Ansonsten haben Medien-Teilstücke wie die auf einer DVD ja bereits die enstprechende Namensgebung.

Das Zusammenfügen per copy /b habe ich für mp3, mpg, mpe und vob ausprobiert und hinterlegt. Dies kann in Zeile 19 modifiziert werden.
Das Seitenverhältnis, auch Aspect Ratio genannt ist in der Zeile 21 mit 16:9 festgelegt.
Die TestZeit für Probe-Arbeiten habe ich mit 3 min bestimmt. Wer es anders braucht, kann es in Zeile 22 verändern.
Das waren die drei Skript-Vor-Einstell-Möglichkeiten, der Rest wird während der Arbeit abgefragt.

Für die mp4-Montage wird "mp4box" verwendet und für alle anderen, außer den copy-Vorgaben, wird "mencoder" bemüht.
Diese Programme sind wie "ffmpeg" u.a. Teil von "Hybrid", welches ihr dort findet.
Die Namen aller Programme sind in der Zeile 18 als Variable angelegt. Sie dient zum Check, ob auch alle da sind!


Der Ablauf

1. MannerInput abklären und wie der Prozess ablaufen soll
2. ContainerWelchen Output-Container (z.B. mp4 / mkv)
3. TitelWelchen Namen soll das "Kind" kriegen?
4. ParameterDas passende Montage-Werkzeug wird vorbereitet
5. MontageAnzeige de gemachten Eingaben und Montage der Teile
- Abzweig zum AnfangFalls die Eingaben falsch waren, return to begin
- Sprung zum EncoderFalls mehrere Teile anstehen, wird erst der Encoder vorbereitet
6. MediaDatInfos einholen und Filmschnitt errechnen.
7. MappingIst mehr als ein Stream der gleichen Art (z.b. Audio) vorhanden, kann nun die Reihenfolge geändert werden
8. EncoderDie gewünschte Umwandlung.
9. Timer-LogNach einem Test-Lauf oder nach Fehlern, wird jetzt ein "reCall" angeboten. Ansonsten Dauer berechnen und ausgeben, fertig.


Der Skript

01.
@echo off&setlocal enabledelayedexpansion&mode con cols=91 lines=9&color 3F&title %~n0 - Vers. 1.3 
02.
REM Die Variablen wie z.B. %ffmpeg%, die Programme gleichen Namens starten sollen, sind in einer start-set.bat analog nach diesem Muster 
03.
REM anzulegen: set "ffmpeg=C:\Pfad zum Progs\ffmpeg.exe", wobei ".exe" auch weggelassen werden kann. Hauptsache der Rest stimmt ;-) 
04.
REM Damit dieser Skript funktioniert, wird noch meine MediaDat.bat benötigt. Alle Skripte sollten sich im selben Ordner befinden. 
05.
REM Der Skript läuft auch mit Doppelklick, falls sich alle Dateien (Skripte und z.B. Video_1-4.* in einem Ordner befinden.  
06.
REM Doch der sinnvollste Aufruf geht über eine Verknüpfung im SendTo-Ordner von WinXP etc. pp. 
07.
set "info=  Zusammenfgen von Video- oder Audio-Dateien&echo   mit wahlweiser Umwandlung (Encodierung) mittels "ffmpeg"" 
08.
set "info=%info%&echo   Container-Wahl nach Belieben (ffmpeg), die Eingaben erfolgen per Skript-Abfrage." 
09.
echo.& echo %info%&ping -n 3 localhost 1>nul 2>nul 
10.
if "%~1"=="" echo. & echo                  Entwurf und Layout by max5moritz&ping -n 12 localhost 1>nul 2>nul 
11.
if not "%~1"=="" set "input=%~1" & set "BatWindow=von "%~nx1"" 
12.
set "info=echo     Erst noch den Start-set-Skript ^(*.bat oder *.cmd^) anpassen." 
13.
if not exist "%~dp0start-set.*"	cls&echo.&echo.&echo.&%info%&ping -n 4 localhost 1>nul 2>nul &( 
14.
	call :startSet & ping -n 2 localhost 1>nul 2>nul) 
15.
set "li29=echo -----------------------------" 
16.
set "mod1=mode con cols=55 lines=8& color FC" 
17.
set "mod2=mode con cols=88 lines=24&color 70" 
18.
:reStart 
19.
%mod1% & call start-set "progs" "stamp" 
20.
set "prgs=ffmpeg,mp4box,mencoder,vsrip" 
21.
set "copy=mp3,mpg,mpe,vob" 
22.
set "path=%path%;%~dp0" 
23.
set "aspt=-aspect 16:9" 
24.
set "tcod= -t 0:03:00" 
25.
 
26.
:Main 
27.
call :Manner "%input%" 
28.
call :Container 
29.
call :Titel 
30.
call :Parameter 
31.
call :Montage 
32.
if "%newSet%"=="yes" goto :Main 
33.
if "%mapEnc%"=="yes" goto :mapEnc 
34.
call :MediaDat "%input%" 
35.
call :Mapping 
36.
:mapEnc 
37.
call :Encoder 
38.
call :Timer-Log 
39.
exit 
40.
 
41.
:Manner 
42.
if "%~1"=="" echo.&call :noinPut 
43.
if "%input%"=="" (goto :eof) ELSE call :pprob 
44.
title %~n0 %BatWindow% 
45.
%mod1%& set "encoder=no"& set "newSet=no" 
46.
if not "%~1"=="" set "inFile=%~n1" & set "inEXC=%~x1" 
47.
set "inFile=%inFile:~0,-1%" & set "Titel=%inFile:~0,-2%" 
48.
if "%inEXC%"==".mp3" (set "Medium=Musik") ELSE set "Medium=Film" 
49.
echo.&echo  %Medium% nur montieren?& set /P answer= j/n?  
50.
if /i "%answer%"=="j" set "code= -c copy -map 0 "& set "mont1=echo  %Medium% encodieren    : nein" 
51.
if /i "%answer%"=="n" set "encoder=yes" & set "code= "& set "mont1=echo  %Medium% encodieren    : ja" 
52.
if "%answer%"=="" set "code= -c copy -map 0 "& set "mont1=echo  %Medium% encodieren    : ja" 
53.
set answer=&echo.&echo  Montage testen?& set /P answer= j/n?  
54.
if /i "%answer%"=="j" set "tcod=%tcod%"& set "mont2=echo  %Medium%-Montage testen: ja" 
55.
if /i "%answer%"=="n" set "mont2=echo  %Medium%-Montage testen: nein" 
56.
if "%answer%"=="" set "mont2=echo  %Medium%-Montage testen: nein" 
57.
if "%mont2:~-2,2%"=="ja" (set "Test=Test") ELSE set "tcod=" 
58.
cls & set "answer=" & if not "%~1"=="" pushd %~dp1 
59.
goto :eof 
60.
 
61.
:Container 
62.
set "MiD-Info=%tmp%\%stamp%MiD-Info.txt"& set "exc=%inEXC%" 
63.
if not "%input%"=="" %ffmpeg% -i "%input%" 2> "%MiD-Info%" &(  
64.
	find /n /i "Subtitle" "%MiD-Info%" 1>nul 
65.
	if errorlevel 1 set "oxc=mp4" & set "subti=no" & goto :con1 
66.
	if errorlevel 0 (set "oxc=mkv"& set "subti=yes" 
67.
	) ELSE set "oxc=mp4 & set "subti=no" 
68.
69.
if not "%~1"=="" goto :eof 
70.
:con1 
71.
if "%exc:~0,1%"=="." set "exc=%exc:~1,3%" 
72.
cls&echo.&echo  %Medium%-Container selbst festlegen? 
73.
set /P answer= j/n?  
74.
if /i "%answer%"=="j" echo.&set /P oxc= Welchen %Medium%-Container?  &cls&echo. 
75.
if "%oxc%"=="" goto :con1 
76.
set answer=&set "mont3=echo  %Medium%-Container     : %oxc%" 
77.
if "%oxc:~0,1%"=="." set "oxc=%oxc:~1,3%" 
78.
if "%~1"=="Testen" goto :eof 
79.
FOR %%i IN (%copy%) DO if /i "%exc%"=="%%i" set "copy=yes" 
80.
:con2 
81.
echo.&echo.&set /P anz= Wie viele %Medium%teile?  
82.
if "%anz%"=="" cls&echo.&echo  Bitte eine Zahl eingeben&goto :con2 
83.
set /a anz2=%anz%+0  2>nul 
84.
if %anz% NEQ %anz2% cls&echo.&echo  "%anz%" ist keine Zahl&set "anz="&goto :con2 
85.
set "mont4=echo  %Medium%-Teile-Anzahl  : %anz%" 
86.
goto :eof 
87.
 
88.
:Titel 
89.
if "%input%"=="" (echo.& set /P Titel= Bitte %Medium%-Titel eingeben.   
90.
	) ELSE cls & echo. & echo  "%Titel%" & echo. 
91.
echo  %Medium%-Titel ok?&echo. & set /P answer= j/n?   
92.
if /i "%answer%"=="j" set "outFile=%Titel%" & goto :tit1 
93.
if /i "%answer%"=="n" cls&echo.&echo  Bitte einen %Medium%-Titel eingeben:&echo.& set /P outFile=  
94.
:tit1 
95.
if not "%outFile%"=="" set "mont5=echo  %Medium%-Datei-Name    : %outFile%"&goto :eof 
96.
cls & set answer=& goto :Titel 
97.
goto :eof 
98.
 
99.
:Parameter 
100.
set "Nr=2" 
101.
if "%anz%"=="1" goto :eof 
102.
if /i "%exc%"=="mp4" (set "parm=-cat "%inFile%2.%exc%"" 
103.
	) ELSE if /i "%copy%"=="yes" (set "parm=+"%inFile%2.%exc%"" 
104.
	) ELSE set "parm="%inFile%2.%exc%"" 
105.
if "%anz%"=="%Nr%" goto :eof 
106.
:prm1 
107.
set /A Nr=%Nr%+1 
108.
if /i "%exc%"=="mp4" (set "parm=%parm% -cat "%inFile%%Nr%.%exc%"" 
109.
	) ELSE if /i "%copy%"=="yes" (set "parm=%parm%+"%inFile%%Nr%.%exc%"" 
110.
	) ELSE set "parm=%parm% "%inFile%%Nr%.%exc%"" 
111.
if "%anz%" gtr "%Nr%" goto :prm1 
112.
goto :eof 
113.
 
114.
:Montage 
115.
if not exist "%inFile%%anz%.%exc%" cls&echo.&( 
116.
echo  %Medium%-Teile-Anzahl stimmt nicht 
117.
echo  "%inFile%%anz%.%exc%"&set "anz=no") 
118.
if "%anz%"=="no" call :con2 & goto :Montage 
119.
%mod2%& set "ffpg=no"& call :LenSet "%BatWindow% zu %outFile%.%oxc%"& set "BatWindow=%BatWindow:~0,-7%": %anz%x *.%exc% zu "%outFile%.%oxc%"" 
120.
set /A cols=15+%LenSet% 
121.
if %cols% lss 48 set "cols=48" 
122.
mode con cols=%cols% lines=24 
123.
set "monTitel=title %~n0 %BatWindow%" 
124.
%monTitel%& cls & echo.&echo  Zusammenfassung&%li29% 
125.
:mon1 
126.
set answer=&%mont1%&%mont2%&%mont5%&%mont3%&%mont4%&%li29% 
127.
echo.&echo  Montage starten?& set /P answer= j/n?  
128.
if "%answer%"=="" cls&echo.&echo  Bitte Freigabe, wenn ok.& %li29%& goto :mon1 
129.
if /i "%answer%"=="j" goto :mon2 
130.
if /i "%answer%"=="n" set "newSet=yes" & goto :eof 
131.
:mon2 
132.
if "%anz%"=="1" (set "ffpg=go" & goto :eof 
133.
	) ELSE call :MediaDat "%input%" & call :Mapping "mapEnc" 
134.
if "%mapEnc%"=="yes" goto :eof 
135.
:mon3 
136.
%monTitel% 
137.
if "%Test%"=="Test" set "ffpg=go"& goto :eof 
138.
if exist "%outFile%.%exc%" set "ffpg=go"&set "timLog=%outFile%.%exc%"& goto :eof 
139.
if /i "%exc%"=="mp4" (%mp4box% "%inFile%1.%inEXC%" %parm% -out "%outFile%.%exc%" 
140.
	) ELSE if /i "%copy%"=="yes" (cls&echo.& echo "%outFile%.%oxc%"&echo.&( 
141.
		   echo  %anz% %Medium%-Teile werden montiert&%li29%&echo. 
142.
		   copy /b "%inFile%1.%exc%"%parm% "%outFile%.%exc%") 
143.
	) ELSE %mencoder% -idx -ovc copy -oac copy -o "%outFile%.%exc%" "%inFile%1.%exc%" %parm% 
144.
color 1F& ping -n 5 localhost 1>nul 2>nul 
145.
if exist "%outFile%.%exc%" set "ffpg=go" 
146.
goto :eof 
147.
 
148.
:MediaDat 
149.
%mod2%&setlocal 
150.
if not "%input%"=="" call MediaDat "%input%" "%time:~0,8%" 
151.
title Prfen der Media-Daten von: %~nx1 
152.
pushd %~dp1 & set /A lines=16+%ziffer% 
153.
if %lines% lss 28 set "%lines%=28" 
154.
mode con cols=88 lines=%lines%&color 70 
155.
For /f "delims=x tokens=1,2" %%a IN ("%vi5%") DO @set "vi5B=%%a"& set "vi5H=%%b" 
156.
For /f "delims=DR: tokens=1-6" %%a IN ("%vi10%") DO @set "vi10B=%%b"& set "vi10C=%%c"& set "vi10E=%%e"& set "vi10F=%%f" 
157.
set "SB=%vi10B:~1,2%"& set "SH=%vi10C:~,-1%"& set "DB=%vi10E:~1,2%"& set "DH=%vi10F%" 
158.
if "%mont2:~-4,4%"=="nein" echo.& goto :mdd2 
159.
:mdd1 
160.
echo.&echo  Der %Medium% hat die folgende Video-Parameter:&%li29%%li29:~5,20% 
161.
echo  !vi10!&echo.&echo  Pixel : !vi5!&echo  Breite: %vi5B%&echo  H”he  : %vi5H%&echo. 
162.
echo      S1: %SB%&echo      S2: %SH%&echo      D1: %DB%&echo      D2: %DH%&echo. 
163.
:mdd2 
164.
echo.&echo  %Medium% skalieren oder Abmaáe ver„ndern?& set /P answer2= j/n?  
165.
if /i "%answer2%"=="n" goto :mdd9 
166.
if /i "%answer2%"=="j" goto :mdd3 
167.
cls & echo.& echo  Bitte beantworten. 
168.
goto :mdd1 
169.
:mdd3 
170.
if %DB% neq 4 set "topBot=no"& goto :mdd8 
171.
set /A OAR=(%SB%*100/%SH%)-100+%DH% 
172.
if %oar% equ 9 set "oar=1,78"& goto :mdd5 
173.
:mdd4 
174.
echo  SAR %SB%:%SH% u. DAR %DB%:%DH% 
175.
echo  Welchen OAR hat der %Medium%? 
176.
echo  z.B.: %Medium% mit 16:9 hat OAR= 1,78&echo.&set /P OAR= OAR:  
177.
if "%oar%"=="" cls &echo.&echo  Bitte einen Wert eingeben& goto :mdd4 
178.
if "%OAR-Wert%"=="" call :OAR-Wert "orw1" 
179.
FOR %%i IN (%OAR-Wert%) DO if "%oar%"==%%i goto :mdd5 
180.
call :OAR-Wert & goto :mdd4 
181.
:mdd5 
182.
call :InfoCut 
183.
echo.&echo  Werte okay?& set /P answer1= j/n?  
184.
if /i "%answer1%"=="n" goto :mdd4 
185.
if /i "%answer1%"=="j" goto :mdd6 
186.
goto :mdd4 
187.
:mdd6 
188.
set answer2=& echo. 
189.
echo  %Medium% mit den Werten skalieren?& set /P answer2= j/n?  
190.
if /i "%answer2%"=="n" goto :mdd7 
191.
if /i "%answer2%"=="j" if "%padN%"=="yes"  set "topBot= %Crop%"& goto :mdd8 
192.
if /i "%answer2%"=="j" if "%croN%"=="yes"  set "topBot= %Padd%"& goto :mdd8 
193.
if "%answer2%"=="" (if "%croN%"=="yes" set "topBot= %Padd%"&set "answer2=j"&goto :mdd8 
194.
			 ) ELSE if "%padN%"=="yes" set "topBot= %Crop%"&set "answer2=j"&goto :mdd8 
195.
cls & echo.& echo  Da war wohl ein Fehler.& goto :mdd4 
196.
:mdd7 
197.
goto :mdd9 
198.
echo  Eigene Crop- und Pad-Werte eingeben?& set /P answer3= j/n? 
199.
if /i "%answer3%"=="n" goto :mdd9 
200.
goto :mddx 
201.
:mdd8 
202.
if  "%topBot%"=="no" (echo.&echo  Pixel-/ Seitenverh„ltnisse sind ok.& ping -n 3 localhost 1>nul 2>nul 
203.
	) ELSE echo.&( 
204.
echo  %Medium% wird wie folgt angepaát: 
205.
echo                        topBot: "%topBot%" & ping -n 2 localhost 1>nul 2>nul&echo.) 
206.
if not "%topBot%"=="no" echo  Einen Moment noch, es geht gleich weiter ...&color 1F& ping -n 8 localhost 1>nul 2>nul 
207.
if "%subti%"=="yes" if exist  "%outFile%.%su9%" set "subFile= -i "%outFile%.%su9%"" 
208.
:mdd9 
209.
endlocal & set "subFile=%subFile%"&( 
210.
if /i "%answer2%"=="j" (set "topBot=%topBot%") ELSE set "topBot=no" 
211.
FOR /f "delims==" %%i IN ('set answer') DO @set "%%i=" 
212.
set "vi5=%vi5%"&set "su8=%su8%"&set "lin6=%lin6%"&set "StNr=%StNr%" 
213.
set "subFile=%subFile%") 
214.
goto :eof 
215.
 
216.
:Mapping 
217.
title Mapping-Check&color 70& setlocal 
218.
cls&echo.&set "map2map= " & set nr2nr=0 
219.
if exist "%tmp%\%stamp%MiD-map.tmp" del "%tmp%\%stamp%MiD-map.tmp" 
220.
FOR %%a IN (Video,Audio,Subtitle,Unknown) DO @( 
221.
	set mapChek=%%a 
222.
	:map1 
223.
	set "map=!map2map!" & set "mapNr=%nr2nr%" 
224.
	FOR /f "delims=-: tokens=1-3" %%i IN ('findstr /i /n "!mapChek!" "%tmp%\%stamp%MiD-Anzg.tmp"') DO @( 
225.
	set /A mapNr+=1 
226.
	set /A strNr=%%k 
227.
	echo  !mapChek!-!strNr! = !mapNr! 
228.
	echo  !mapChek!-!strNr! = !mapNr! >> "%tmp%\%stamp%MiD-map.tmp" 
229.
	ping -n 1 localhost 1>nul 2>nul 
230.
	set "map=!map!-map 0:!strNr! " 
231.
	set "map!mapNr!=-map 0:!strNr! " 
232.
233.
	if !mapNr! equ 0 echo  Keine !mapChek! vorhanden.&( 
234.
		set "map2map=!map!"& set "mapFrg=exit"&color 1F 
235.
		if not "!mapChek!"=="Unknown" ping -n 3 localhost 1>nul 2>nul 
236.
237.
	call :mapFrg 
238.
239.
:map2 
240.
if "%encoder%"=="yes" if "%subti%"=="yes" (if "%topBot%"=="no" (set "code= -s %vi5% -r 25 -c:a copy -c:s %su8%%map2map%" 
241.
																) ELSE set "code=%topBot% -c:a copy -c:s %su8%%map2map%" 
242.
									) ELSE if "%topBot%"=="no" (set "code= -s %vi5% -r 25 -c:a copy%map2map%" 
243.
																) ELSE set "code=%topBot% -c:a copy%map2map%" 
244.
endlocal & set "code=%code%"&set "map2map=%map2map%"&set "mapNsub=%mapNsub%"&if "%~1"=="mapEnc" set "%~1=yes" 
245.
goto :eof 
246.
 
247.
:Encoder 
248.
title Letzter Check vor Encoder-Start: 
249.
call :LenSet "%code%" 
250.
set /A cols=48+%LenSet%*2 
251.
if %cols% lss 119 (set "cols=119") ELSE if %cols% gtr 150 set "cols=150" 
252.
set /A Lines=24+%StNr%*3 
253.
if %Lines% lss 30 (set "Lines=30") ELSE if %Lines% gtr 70 (set "Lines=70") 
254.
mode con cols=%cols% lines=%Lines%&color 1F&echo. 
255.
if "%anz%"=="1" (echo  Dieser %Medium%: "%inFile%1%inEXC%") ELSE echo  Dieser %Medium%: "%outFile%.%exc%" 
256.
echo  soll umgewandelt werden. Die Streams haben diesen Inhalt: 
257.
echo  %lin6%%lin6:~0,9%&echo. 
258.
type "%tmp%\%stamp%MiD-Anzg.tmp"& echo  %lin6%%lin6%&echo. 
259.
echo  Diese sollen durch "ffmpeg" wie folgt verarbeitet werden: 
260.
echo  %lin6%%lin6:~0,9%&echo. 
261.
echo  inFile-Code: "%code%" 
262.
if ""=="%outCode%" (echo  outFileCode: ---) ELSE echo  outFileCode: "%outCode%" 
263.
ping -n 6 localhost 1>nul 2>nul&color 70 
264.
call :codeFrg 
265.
if "%mapEnc%"=="yes" call :mon3 
266.
:enc1 
267.
if "%anz%"=="1" (set "inFile=%inFile%1" & set "exc=%inEXC:~1,4%" 
268.
	) ELSE ( 
269.
	if "%Test%"=="Test" (set "inFile=%inFile%1" & set "exc=%inEXC:~1,4%" &( 
270.
		set "outFile=%outFile%_Test")		 
271.
	) ELSE set "inFile=%outFile%") 
272.
if "%Test%"=="Test" mode con cols=150 lines=70& call :InfoEnc 
273.
:enc2 
274.
if "%mont1:~0,-2%"=="ja" (set "BatWindow=Umlabeln %BatWindow%") ELSE set "BatWindow=Encodieren %BatWindow%" 
275.
if "%ffpg%"=="go" cls & title %BatWindow% von ffmpeg um %time:~0,5% gestartet ...&( 
276.
color 0F& %ffmpeg% -i "%inFile%.%exc%"%subFile%%tcod%%code%"%outFile%.%oxc%"%outCode%) 
277.
if "%Test%"=="Test" pause 
278.
goto :eof 
279.
 
280.
:Timer-Log 
281.
set "info=%Medium%-Montage " 
282.
title Montage-Zeit berechnen& setlocal 
283.
if "%Test%"=="Test" (%mod2%) ELSE %mod1% 
284.
if "%Test%"=="Test" set "dir4=1" & set "dir5=2"& goto :tim1 
285.
if "%timLog%"=="" (set "timLog=%outFile%.%oxc%"&set "txc=%oxc%") ELSE set "timLog=%timLog%"&set "txc=%exc%" 
286.
if exist "%timLog%" @( 
287.
if "%Test%"=="Test" echo  inFile&%li29%&echo. 
288.
For /F "tokens=3,4 Delims= " %%i in ('dir /tc "%timLog%"^|Find /i ".%txc%"') Do @( 
289.
	set "dir1=%%i"&set "dir2=%%j"&set "dir3=!dir1:.=!"&set "dir3=!dir3:~0,-3!" 
290.
	if "%Test%"=="Test" echo dir1: --!dir1!--&echo dir2: --!dir2!--&echo dir3: --!dir3!-- 
291.
292.
set /A dir5=!dir3!/10 
293.
if "%Test%"=="Test" echo  outFile&%li29%&echo. 
294.
For /F "tokens=3,4 Delims= " %%i in ('dir /tw "%outFile%.%oxc%"^|Find /i ".%oxc%"') Do @( 
295.
	set "dir1=%%i"&set "dir2=%%j"&set "dir4=!dir1:.=!"&set "dir4=!dir4:~0,-3!" 
296.
	if "%Test%"=="Test" echo dir1: --!dir1!--&echo dir2: --!dir2!--&echo dir4: --!dir4!--&( 
297.
	echo.& echo dir5= !dir5! lss !dir4! =dir4& pause) 
298.
	if "!dir4!"=="" set "dir4=1" & if "!dir5!"=="" set "dir5=2" 
299.
	)) 
300.
:tim1 
301.
if %dir5% lss %dir4% (set "info=%info%erfolgreich" 
302.
	) ELSE ( 
303.
	mode con cols=70 lines=20 
304.
	if "%Test%"=="Test" (set "info=%info%als Testlauf" 
305.
	) ELSE set "info=%info%fehlerhaft" 
306.
	call :InfoTim "tfo1%Test%" & set /P answer= j/n?  
307.
	if /i "!answer!"=="j" endlocal &start %vlc% "%outFile%.%oxc%"&( 
308.
	call :reCall "%input%" & goto :Timer-Log) 
309.
	if /i "!answer!"=="n" goto :tim4 
310.
	if "!answer!"=="" endlocal & goto :Timer-Log 
311.
312.
set "info=%info% beendet." 
313.
:tim2 
314.
FOR /f "tokens=1-5 delims=.: " %%i IN ('dir /tc "%timLog%"^|find /i ".%txc%"') DO @( 
315.
	set /a "ATdd = 100%%i, ATdd %%= 100, ATmm = 100%%j, ATmm %%= 100, AT1h = 100%%l, AT1h %%= 100, AT1m = 100%%m, AT1m %%= 100" 
316.
	set /A ATjj=%%k/4*4 
317.
	if not !ATjj! equ %%k set "ATSJ=no" 
318.
319.
set /A ATGm=(%AT1h%*60)+%AT1m% 
320.
if "%Test%"=="Test" cls & echo. &@( 
321.
	echo  ATdd: --%ATdd%--&echo ATmm: --%ATmm%--&echo ATSJ: --%ATSJ%--&echo AT1h: --%AT1h%--&echo AT1m: --%AT1m%-- 
322.
	echo  ------------ 
323.
	echo  ATGm: %ATGm% min) 
324.
FOR /f "tokens=1-5 delims=.: " %%i IN ('dir /tw "%outFile%.%oxc%"^|find /i ".%oxc%"') DO @( 
325.
	set /a "BTdd = 100%%i, BTdd %%= 100, BTmm = 100%%j, BTmm %%= 100, BT1h = 100%%l, BT1h %%= 100, BT1m = 100%%m, BT1m %%= 100" 
326.
	set /A BTjj=%%k/4*4 
327.
	if not !BTjj! equ %%k set "BTSJ=no" 
328.
	)	 
329.
set /A BTGm=(%BT1h%*60)+%BT1m% 
330.
if "%Test%"=="Test" @( 
331.
	echo  ================== 
332.
	echo  BTdd: --%BTdd%--&echo BTmm: --%BTmm%--&echo BTSJ: --%BTSJ%--&echo BT1h: --%BT1h%--&echo BT1m: --%BT1m%-- 
333.
	echo  ------------ 
334.
	echo  BTGm: %BTGm% min 
335.
	echo  ------------------ 
336.
337.
if %ATmm% lss %BTmm% @( 
338.
	FOR %%i IN (4,6,9,11) DO @if %ATmm% equ %%i set A1dd=30 
339.
	FOR %%i IN (1,3,5,7,8,10,12) DO @if %ATmm% equ %%i set A1dd=31 
340.
	if %ATmm% equ 2 if "%ATSJ%"=="no" (set "A1dd=28") ELSE set "A1dd=29" 
341.
	set /A DTdd=%BTdd%+!A1dd!-%ATdd% 
342.
	) ELSE ( 
343.
	if %ATmm% gtr %BTmm% (set /A DTdd=%BTdd%+31-%ATdd% 
344.
	) ELSE set /A DTdd=%BTdd%-%ATdd% 
345.
346.
if "%DTdd%" equ "0" (set /A DTGm=%BTGm%-%ATGm%) ELSE set /A DTGm=(DTdd*24*60)+%BTGm%-%ATGm% 
347.
cls &echo.&color 1F& echo  Gesamt-Dauer in min: %DTGm% 
348.
if "%Test%"=="Test" (echo  ==================& pause) ELSE ping -n 2 localhost 1>nul 2>nul 
349.
if %DTGm% lss 60 goto :tim3 
350.
set /A STD=%DTGm%/60 
351.
set /A MIN=%DTGm%-(%STD%*60) 
352.
:tim3 
353.
if not "%std%"=="0" if "%min%" lss "10" set "MIN=0%min%" 
354.
if %DTGm% lss 60 (if %DTGm% equ 0 (set "Dauer=keine Minute" 
355.
							) ELSE set "Dauer=%DTGm% min" 
356.
							) ELSE set "Dauer=%std%:%min% h" 
357.
set "Dauer=Die Umwandlung hat %Dauer% gedauert." 
358.
if "%Test%"=="Test" echo.&echo  %Dauer%& ping -n 3 localhost 1>nul 2>nul 
359.
:tim4 
360.
call :InfoTim "tfo2" 
361.
if exist "%tmp%\%stamp%MiD-*.*" del /q "%tmp%\%stamp%MiD*.*" 
362.
cls &echo.& echo  Habe fertig.& endlocal 
363.
ping -n 6 localhost 1>nul 2>nul 
364.
goto :eof 
365.
 
366.
::~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
367.
::------------------------------- Funktionen ---------------------- 
368.
 
369.
:codeFrg 
370.
setlocal 
371.
set "codeNew=%code%"&set "codeOK=yes" 
372.
if not "%StringOld%"=="" echo  old-String : "%StringOld%" 
373.
:cfr1 
374.
echo.& echo  Codec-Parameter ok?&set answer=&set /P answer= j/n?   
375.
if /i "%answer%"=="j" goto :cfr2 
376.
if /i "%answer%"=="n" set "codeOK=no"&cls&echo.&echo  inFile-Code: %codeNew%&( 
377.
echo  %lin6%%lin6:~0,-12%&echo.&color 70 
378.
echo  Bitte Code neu eingeben (kopieren / einfgen ist per Rechtsklick m”glich^)&set /P codeNew=  
379.
) & cls & echo.&echo  Ist nach und vor den Anfhrungszeichen ein leeres Zeichen vorhanden? 
380.
echo.&if not "%StringOld%"=="" echo  old-String : "%StringOld%"&( 
381.
echo  inFile-Code: " %codeNew% "&echo  %lin6%%lin6:~0,-12%&goto :cfr1) 
382.
:cfr2 
383.
if "%codeOK%"=="yes" endlocal & if not "%StringOld%"=="" (set "code=%StringOld%"& goto :eof 
384.
	) ELSE goto :eof  
385.
endlocal &  set "code= %codeNew% " 
386.
goto :eof 
387.
 
388.
:InfoCut 
389.
set "oar1=%oar:~0,1%"& set "oar2=%oar:~2,2%" 
390.
set /A OAR=(%oar1%*100)+%oar2% 
391.
set /A CroH=(((%vi5H%*10000)/(%OAR%*((%DH%*100)/%DB%)))/16+1)*16 
392.
set /A Crop=(%vi5H%-%CroH%)/2 
393.
set /A PadB=(((%vi5B%*10000)/(%OAR%*((%DH%*100)/%DB%)))/9+1)*16 
394.
set /A Padd=(%vi5B%-%PadB%)/2 
395.
if %Crop% lss 0 set "Crop=%Crop:~1,4%"& set "croN=yes" 
396.
if %Padd% lss 0 set "Padd=%Padd:~1,4%"& set "padN=yes" 
397.
if "%Test%"=="Test" ping -n 6 localhost 1>nul 2>nul 
398.
cls&echo.&echo    %Medium%-Input: !vi5! Pixel&%li29%%li29:~5,6% 
399.
if "%croN%"=="yes" (echo   %Medium%-Output: %PadB%x%vi5H% Pixel&( 
400.
					echo   %Medium%-Balken:   2x %Padd% (links u. rechts^)) 
401.
			 ) ELSE echo   %Medium%-Output: %vi5B%x%CroH% Pixel&( 
402.
					echo  %Medium%-Schnitt:   2x %Crop% (oben u. unten^)) 
403.
set "Crop=-s %vi5B%x%CroH% -vf crop=%vi5B%:%CroH%:0:%Crop% %aspt%" 
404.
set "Padd=-s %PadB%x%vi5H% -vf pad=%PadB%:%vi5H%:%Padd%:0 %aspt%" 
405.
::set "outCode= -s %vi5% -aspect 16:9" 
406.
goto :eof 
407.
 
408.
:InfoEnc 
409.
cls & echo.& color F0 
410.
echo  Der Encoder startet jetzt mit diesen Einstellungen: 
411.
%li29%%li29:~5,15%%li29:~5,15%&echo. 
412.
echo  "ffmpeg" -i "%inFile%.%exc%"%subFile%%tcod%%code%"%outFile%.%oxc%"%outCode% 
413.
echo.  
414.
if "%~1"=="rec" (goto :eof) ELSE pause 
415.
goto :eof 
416.
 
417.
:InfoTim 
418.
echo.& set answer=& color F0 
419.
echo  %info%&%li29%%li29:~5,20%& echo. 
420.
if "%~1"=="" (goto :eof) ELSE goto :%~1 
421.
:tfo1 
422.
echo  Vielleicht konnte "ffmpeg" die Untertitel nicht verarbeiten. 
423.
echo  Vorschlag: Am besten die Untertitel vorher extrahieren.& echo. 
424.
echo  Erst Untertitel demuxen und dann %Medium% encodieren?& echo. 
425.
goto :eof 
426.
:tfo1Test 
427.
echo  %outFile% mit %Medium%-Player 
428.
echo   abspielen und "ffmpeg" neu starten?& echo. 
429.
goto :eof 
430.
:tfo2 
431.
set "li58=%li29%%li29:~5,29%" 
432.
set "li116=%li58%%li58:~5,58%" 
433.
echo %monTitel:~23,-1%">"%outFile%_%oxc%.txt" 
434.
echo %info%>>"%outFile%_%oxc%.txt" 
435.
if not "%Hinweis%"=="" echo %Hinweis% >>"%outFile%_%oxc%.txt" 
436.
%li116%%li29:~5,29%>>"%outFile%_%oxc%.txt" 
437.
echo inFile-Code: "%code%">>"%outFile%_%oxc%.txt" 
438.
if "%DTGm%" equ "0" (set "linX=%li116:~0,-55%") ELSE set "linX=%li58:~0,-5%" 
439.
if "%outCode%"=="" (set "outFileCode=outFileCode: ---") ELSE set "outFileCode=outFileCode: "%outCode%"" 
440.
echo %outFileCode%>>"%outFile%_%oxc%.txt" 
441.
%linX%>>"%outFile%_%oxc%.txt" 
442.
echo %Dauer%>>"%outFile%_%oxc%.txt" 
443.
%linX%>>"%outFile%_%oxc%.txt" 
444.
%li116%%li29:~5,29%>>"%outFile%_%oxc%.txt" 
445.
type "%tmp%\%stamp%MiD-Anzg.tmp">>"%outFile%_%oxc%.txt" 
446.
%li116%%li29:~5,6%>>"%outFile%_%oxc%.txt" 
447.
type "%MiD-Info%">>"%outFile%_%oxc%.txt" 
448.
%li116%%li29:~5,6%>>"%outFile%_%oxc%.txt" 
449.
%ffmpeg% -i "%outFile%.%oxc%" 2> "%MiD-Info%"  
450.
%li116%%li29:~5,6%>>"%outFile%_%oxc%.txt" 
451.
type "%MiD-Info%">>"%outFile%_%oxc%.txt" 
452.
goto :eof 
453.
	 
454.
:LenSet 
455.
setlocal EnableDelayedExpansion 
456.
set "WorstCaseLen=200" 
457.
set "DerTestString=%~1" 
458.
For /L %%i in (%WorstCaseLen%,-1,1) do (if not defined myStrLen if "!DerTestString:~%%i,1!" NEQ "" Set /a myStrLen=1+%%i) 
459.
endlocal & set LenSet=%myStrLen% 
460.
goto :eof 
461.
 
462.
:mapFrg 
463.
if "!mapFrg!"=="exit" (goto :eof) ELSE set mpFrg= 
464.
if !mapNr! equ 1 set "map2map=!map!" & set "nr2nr=!mapNr!"& goto :mfr1 
465.
call :LenSet "%mapChek%-Map: %map%" 
466.
set /A cols=10+%LenSet% 
467.
if %cols% lss 55 set "cols=55" 
468.
call :LenSet %map% 
469.
set /A Lines=20+%mapNr% 
470.
mode con cols=%cols% lines=%Lines%&echo. 
471.
type "%tmp%\%stamp%MiD-map.tmp"&echo.  
472.
echo.& echo  !mapChek!-Map: "!map!" &echo.&echo  Mapping-Reihenfolge ok? 
473.
set /P mpFrg= j/n?  
474.
if /i "!mpFrg!"=="j" set "map2map=!map!" & set "nr2nr=!mapNr!"& goto :mfr1 
475.
if /i "!mpFrg!"=="n" call :newMap & echo.& goto :mapFrg 
476.
if "!mpFrg!"=="" cls&echo.&echo  Bitte Frage beantworten.& goto :mapfrg 
477.
cls&echo.&echo  Bitte richtig antworten.& goto :mapfrg 
478.
:mfr1 
479.
cls & echo. & set !mapNr!=0 
480.
FOR %%i IN (Audio,Video) DO @if "%mapChek%"=="%%i" set "mapNsub=!map!" 
481.
del "%tmp%\%stamp%MiD-map.tmp" 
482.
goto :eof 
483.
 
484.
:newMap 
485.
call :LenSet "%mapChek%-Map: %map%" 
486.
set /A cols=10+%LenSet% 
487.
if %cols% lss 55 set "cols=55" 
488.
call :LenSet %map% 
489.
set /A Lines=20+%mapNr% 
490.
if "%lines%"=="" set "lines=24" 
491.
mode con cols=%cols% lines=%Lines% 
492.
set "mapChek=new-total" & echo. 
493.
echo  Komma oder Leerzeichen zwischen den Zahlen setzen 
494.
echo  Falls kein Stream ausgew„hlt werden soll: 
495.
echo  Ein Leerzeichen eingeben.&echo. 
496.
echo  %mapChek%-Map: "%map%"&echo. 
497.
type "%tmp%\%stamp%MiD-map.tmp"&echo.  
498.
set /P Mapping= Žndere die Reihenfolge:   
499.
set "map=%map2map%" 
500.
FOR %%i IN (%Mapping%) DO @( 
501.
	call :Zahl "%%i" 
502.
	set "map=!map!!neuMap!" 
503.
504.
goto :eof 
505.
 
506.
:noinPut 
507.
echo  Name der 1. Input-Datei?& set /P inFile= &echo. 
508.
if "%inFile:~-4,1%"=="." set "inEXC=%inFile:~-4,4%"&( 
509.
set "inFile=%inFile:~0,-4%"& goto :noi1) 
510.
echo  Welche Input-Endung?& set /P inEXC= &echo. 
511.
if not "%inEXC:~0,1%"=="." set "inEXC=.%inEXC%" 
512.
:noi1 
513.
if exist "%inFile%%inEXC%" (set "input=%~dp0%inFile%%inEXC%" 
514.
	) ELSE cls &echo.&echo  Die Eingabe war nicht korrekt.& goto :noinPut 
515.
set "BatWindow=von "%inFile%%inEXC%"" 
516.
goto :eof 
517.
 
518.
:OAR-Wert 
519.
set "OAR-Wert="1,33","1,67","1,78","1,85","1,97","2,00","2,20","2,33","2,39","2,40","2,78"" 
520.
if "%~1"=="orw1" goto :eof 
521.
:orw2 
522.
cls & echo. 
523.
echo  OAR: %oar% ist ein falscher Wert&echo. 
524.
echo  M”gliche Werte sind: 
525.
echo  -------------------- 
526.
echo  OAR: 1,33 - 35-mm-%Medium%, TV-4:3 
527.
echo  OAR: 1,67 - europ„ische Widescreen (5:3) 
528.
echo  OAR: 1,78 - TV-16:9 (HDTV) 
529.
echo  OAR: 1,85 - Kino-Breitbildformat 
530.
echo  OAR: 1,97 - VistaVision (Paramont) 
531.
echo  OAR: 2,33 - CinemaScope (7:3) 
532.
echo  OAR: 2,39 - SMPTE-genormte Gr”áe (auch 2,40) 
533.
echo  OAR: 2,78 - Ultra-Panavision 
534.
echo. & pause &cls&echo. 
535.
goto :eof 
536.
 
537.
:pprob 
538.
setlocal enabledelayedexpansion 
539.
FOR %%a IN (%prgs%) DO @( 
540.
	call :ppr1 "%%a" 
541.
	if not exist "!pprob!" cls & echo.&( 
542.
	mode con cols=55 lines=8&color FC 
543.
	echo  Das Programm "%%a" ist nicht vorhanden, 
544.
	echo  oder der Pfad ist falsch deklariert.&echo. 
545.
	echo  Bitte jetzt die start-set.bat korrigieren 
546.
	echo  und abspeichern. Der Skript startet dann neu. 
547.
	For /F "tokens=1,2 Delims=." %%i in ('dir /b "%~dp0start-set.*"^|Find /i "start-set"') Do @Set "pprst=%%i.%%j" 
548.
	ping -n 5 localhost 1>nul 2>nul 
549.
	notepad "%~dp0!pprst!"& cls &echo.& echo  Suche "%%a" 
550.
	ping -n 2 localhost 1>nul 2>nul& goto :reStart 
551.
	)) 
552.
endlocal 
553.
goto :eof 
554.
:ppr1 
555.
set "pprob=!%~1!.exe" 
556.
:ppr2 
557.
if  "%pprob:~-4,1%"=="." if  "%pprob:~-4,1%"=="%pprob:~-8,1%" set "pprob=%pprob:~0,-4%" & goto :ppr2 
558.
goto :eof 
559.
 
560.
:reCall 
561.
mode con cols=%cols% lines=%Lines%&color 70& echo. 
562.
set "Media=%~n1"& title reCall gestartet ...& setlocal 
563.
echo  Neustart mit: "%Media%"& echo.& ping -n 3 localhost 1>nul 2>nul 
564.
set "Media-org=%Media:~0,-1%1%~x1"&set "inFile=%Media:~0,-1%"&set "StringOld=%code%" 
565.
if "%~1"=="Test" call :con1 "%Test%en" 
566.
:rec1 
567.
set answer=& echo. 
568.
echo  Untertitel separat extrahieren?& set /P answer= j/n?  
569.
if /i "%answer%"=="j" goto :rec2 
570.
if /i "%answer%"=="n" goto :rec3 
571.
if "%answer%"=="" cls &echo.& echo  Frage bitte beantworten& goto :rec1 
572.
set answer=& goto :reCall 
573.
:rec2 
574.
cls & echo.&echo  Gleich startet der "VobSub Ripper Wizard".&echo. 
575.
echo  Dort die Datei "%inFile%0.ifo" ”ffnen und als "%outFile%.idx" speichern.&echo. 
576.
ping -n 4 localhost 1>nul 2>nul 
577.
echo  Danach auf next klicken: Die gewnschte(n^) Sprache(n^) ausw„hlen. 
578.
echo  Aufpassen: Die tauchen manchmal ”fter auf - alle Teile markieren.&echo.  
579.
ping -n 4 localhost 1>nul 2>nul 
580.
echo  Erneut auf next klicken: Die K„sten 'beep' und 'close Dialog' anklicken. 
581.
echo  Und dann das Ergebnis abwarten ...&color 1F& ping -n 4 localhost 1>nul 2>nul 
582.
%vsrip% & cls & echo.&color 70&echo  Fertig, es geht gleich weiter ... 
583.
ping -n 3 localhost 1>nul 2>nul& cls 
584.
:rec3 
585.
set answer=& echo. 
586.
echo  Vorbereitung von "ffmpeg" zum Neustart.&echo. 
587.
echo  nochmal ein Testlauf?& set /P answer= j/n?  
588.
if /i "%answer%"=="j" goto :rec4 
589.
if /i "%answer%"=="n" set "tcod="& set "Test="&( 
590.
	set "outFile=%outFile:~0,-5%"& goto :rec4  ) 
591.
if "%answer%"=="" cls &echo.&echo  Frage bitte beantworten 
592.
goto :rec3 
593.
:rec4 
594.
set "answer="& echo. 
595.
call :LenSet "-c:s %su8%%map2map%" 
596.
set /A LenSet=%LenSet%+1 
597.
set "code=!code:~0,-%LenSet%!%mapNsub%" 
598.
call :codeFrg 
599.
call :InfoEnc rec & set answer=& echo. 
600.
echo  Encoding starten? & set /P answer= j/n?   
601.
if /i "%answer%"=="j" goto :rec5 
602.
if /i "%answer%"=="n" goto :rec4 
603.
if "%answer%"=="" cls &echo.&echo  Frage bitte beantworten 
604.
goto :rec4 
605.
:rec5 
606.
call :mon3 
607.
call :enc2 
608.
cls & set "answer="& echo. 
609.
set "Hinweis=Hinweis: mkv-Merge durchführen." 
610.
endlocal 
611.
goto :eof 
612.
 
613.
:startSet 
614.
> "%~dp0start-set.bat" echo.if "%%~1"=="progs" goto :%%~1 
615.
>>"%~dp0start-set.bat" echo.:start 
616.
>>"%~dp0start-set.bat" echo. 
617.
>>"%~dp0start-set.bat" echo.:progs 
618.
>>"%~dp0start-set.bat" echo.REM Diesen Bereich anpassen und abspeichern. 
619.
>>"%~dp0start-set.bat" echo.set "ffmpeg=C:\Programme\ffmpeg\bin\ffmpeg" 
620.
>>"%~dp0start-set.bat" echo. 
621.
>>"%~dp0start-set.bat" echo.if "%%~2"=="" (goto :eof) ELSE (goto :%%~2) 
622.
>>"%~dp0start-set.bat" echo. 
623.
>>"%~dp0start-set.bat" echo.:stamp 
624.
>>"%~dp0start-set.bat" echo.set "stamp=%%date:~-4%%%%date:~3,2%%%%date:~0,2%%_%%time::=%%" 
625.
>>"%~dp0start-set.bat" echo.set "stamp=%%stamp:~0,-3%%" 
626.
>>"%~dp0start-set.bat" echo.goto :eof 
627.
>>"%~dp0start-set.bat" echo. 
628.
>>"%~dp0start-set.bat" echo.:ende 
629.
ping -n 2 localhost 1>NUL 2>NUL 
630.
notepad "%~dp0start-set.bat" 
631.
goto :eof 
632.
 
633.
:Zahl 
634.
echo "map%~1">"%tmp%\%stamp%MiDnewSET.tmp" 
635.
set /p neuMap=<"%tmp%\%stamp%MiDnewSET.tmp" 
636.
set "neuMap=!%neuMap:~1,-1%!"&del "%tmp%\%stamp%MiDnewSET.tmp" 
637.
goto :eof 
638.
 
639.
:----------- Testfeld ------------- 
640.
:VariTest 
641.
::Befehl: call :VariTest "%~1" "%~2" 
642.
cls & echo. 
643.
echo      sub: %subti% 
644.
echo   topBot: %topBot% 
645.
echo     li29: %li29% 
646.
echo   Ziffer: %Ziffer% 
647.
echo     code: %code% 
648.
echo    Pixel: %vi5% 
649.
echo   vari-1: "%~1" 
650.
echo   vari-2: "%~2" 
651.
echo  OutFile: %outFile% 
652.
echo      M2M: %map2map% 
653.
echo     lin6: %lin6% 
654.
pause 
655.
goto :eof

Wie verwenden?


Am Einfachsten alle Skripte diesen, "MediaDat" und Eure Start-set.bat (oder *.cmd) in einen Ordner Eurer Wahl, dazu die Media-Dateien.
Keine Angst, diese bleiben völlig ungeschoren. Na, und "Film-Montage per Doppelklick starten.
Besser noch, eine Verküpfung zu "Film-Montage" im "sendTo-Ordner" anlegen, denn dann steht das Tool
jederzeit zur Verfügung. Die Dateien müssen sich auf der Festplatte befinden.
Ein Start direkt von der DVD z.B. ist noch nicht vorgesehen. Vielleicht kommt das ja ein Mal.


Start-set.bat mit Zeitstempel


Die erwähnten Programm-Pfade samt Dateinamen bitte unterhalb von :progs unterbringen.
ein Beispiel: set "ffmpeg=C:\Pfad zum Progs\ffmpeg.exe" (es geht auch ohne .exe )
Die Start-set.bat ist seit Version 1.1 Bestandteil des Skriptes (Zeilen 606 - 623)

Wer positive copy /b oder sonstige Ergebnisse findet, bitte posten. Ebenso Anregungen und Kritik.

Dank diesem Forum konnte ich die "Film-Montage" kreieren. Jedoch einen besonderen Dank an @Friemler für seine Hilfe bei der startSet-Routine
und an @rubberman für seine Idee zur führenden Null-Beseitigung. Die könnt Ihr auch dazu nutzen.

Danke für Euer Interesse.

max5moritz
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Windows Server
gelöst Word 2010 : Absatz - Abstand per GPO ändern (3)

Frage von johanna-p zum Thema Windows Server ...

Exchange Server
Exchange 2013, Outlook 2010 Standard-Absendeadresse ändern (4)

Frage von ingoue zum Thema Exchange Server ...

E-Mail
gelöst GMail: Anzeige der Mailübersicht ändern (7)

Frage von honeybee zum Thema E-Mail ...

Exchange Server
Exchange 2013 - Primäre eMail Adresse ändern (7)

Frage von staybb zum Thema Exchange Server ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...