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

Filme und Medienstreams einfach konvertieren

Anleitung Multimedia Video & Streaming

Mitglied: max5moritz

max5moritz (Level 1) - Jetzt verbinden

08.05.2012, aktualisiert 10.05.2012, 6722 Aufrufe, 2 Kommentare

ffmpeg als Lösung

Hallo Users,

Konvertierungstools gibt es reichlich, oft verlangen selbst die Programme mit Oberfläche mehr, als der "Durchschnitts"-User versteht.
Fast entsteht der Eindruck, dass selbst das produzierende Film-Gewerbe bei der Vielzahl der Verpackungs-Möglichkeiten nicht mehr "durchsieht".
Doch Dank der Freeware "ffmpeg" ist es möglich, sich die "Arbeit" ganz einfach zu machen!

Bevor gleich alle aufschreien: "ffmpeg" versteht ja nur Kommandozeile!
Doch es geht - ffmpeg kann es wirklich, man muss dem Programm nur sagen, was man will.

Dabei hilft das folgende Bat-File. Und in Verbindung mit einem Link auf diese Bat-File benötigt niemand besondere Kodierungs- oder BAT-Kenntnisse.
Speicher-Ort und Name für BAT und Link sind beliebig, einfach eine Datei oder einen Ordner auf den Link ziehen, fertig. Aber: Bitte den Hinweis beachten!

Derzeit sind im Auto-Betrieb folgende Eingangs-Formate implementiert: *.avi, *.flv, *.mpg, *.ps, *.ts, *.wmv
Per Einzel-Test können alle Dateien ausprobiert werden, deren EXT (Erweiterung) genau 3 Zeichen enthält - ffmpeg ist wirklich mächtig.
Wer will, kann auch per Aufruf: Bat-File "Input-Datei" "Parameter" Output-EXT spezielle Tests durchführen.
Die Output-EXT sollte genau 3 Zeichen enthalten.
Wer erst einmal einen Probelauf machen will, hängt an den Datei- oder Ordnernamen "_test" an (ohne Anführungszeichen).
Dann werden kurze Test-Files von ca. 30 s Länge erzeugt. Damit kann bereits die Qualität recht gut beurteilt werden.
Die Eingabe-Dateien (Input) werden natürlich nicht verändert oder gelöscht. Sie "landen" nur in dem Spezial-Ordner.

01.
::Bat-File-Name: Media-Convert, Version: 0.99_2012-05-10 
02.
::Media-Container-File(s) in *.mp4 oder *.mkv oder *.mp3 umwandeln 
03.
::Unterstützte Eingangs-Formate mindestens siehe set "auto= / Alternativ per Einzelprobe testen / ffmpeg ist recht clever! 
04.
::Hinweis zu den Variablen %ffmpeg%, %sox% und %mediainfo% (Pfad+Programmename), im Programm-Paket "Hybrid"  
05.
::ist alles enthalten, sowie %weg% (Ordner, der als zentraler Spezial-Papierkorb dient). 
06.
::Diese werden durch den Aufruf von start-set gesetzt, d.h., beide BAT-File sollten im gleichen Verzeichnis sein. 
07.
::SOX dient dem Anheben der Lautstärke von ac3-Stream, da diese of zu leise sind 
08.
::Der Parameter "-t 30" (ohne Anführungszeichen) muss immer am Ende von %para% stehen, damit der Test-Lauf richtig funktioniert. 
09.
::Die Tests beginnen ab der 5. Video-Minute - eventuell set "start=-ss 00:05:00.000"  anpassen. 
10.
::%para% "-sameq" - ffmpeg versucht, das Beste aus dem Input zu machen. Dieser Wert kann zu Testzwecken verändert werden. 
11.
::Die Input-Dateien werden nicht verändert oder gelöscht - diese oder die Test-Files befinden sich immer im "Spezial-Ordner"  
12.
::Entwurf und Layout by max5moritz 
13.
@echo off&setlocal enabledelayedexpansion 
14.
set "inex=flv" 
15.
set "input=%1" 
16.
set "para=-sameq" 
17.
set "start=-ss 00:05:00.000" 
18.
set "Verzeichnis=%~dp0" 
19.
set "auto=*.avi, *.flv, *.mpg, *.ps, *.ts, *.wmv" 
20.
if n%1==n goto help 
21.
set "parm1=-vcodec copy"&set "parm2=-acodec copy" 
22.
set "parmstd=%parm1% %parm2%" 
23.
echo "%input%" >%tmp%\input.tmp 
24.
find /n /i "_test" %tmp%\input.tmp 
25.
if errorlevel 1 set "para=%para%"&goto :weiter 
26.
set "para=%para% -t 30" 
27.
:weiter 
28.
del %tmp%\input.tmp 
29.
if not "%2"=="" (set "para=%2") ELSE set "para=%para%" 
30.
if "%para:~0,1%"=="-" (set "parm3=%para%") ELSE set "parm3=%para%" 
31.
if not "%3"=="" (set "outex=%3") ELSE set "outex=mkv" 
32.
echo %outex%>%tmp%\getlen.tmp 
33.
FOR %%i IN ("%tmp%\getlen.tmp") DO set /a "theLen=%%~zi-2"&del %tmp%\getlen.tmp 
34.
if "%theLen%"=="3" (set "outex=%3") ELSE set "outex=mkv" 
35.
echo Verzeichnis der Bat-Datei "%verzeichnis%" 
36.
if "%input:~1,1%"==":" (goto Abfrage1) ELSE goto Abfrage2 
37.
 
38.
:Abfrage1 
39.
set "name=%input:~0,-4%"&set "inex=%input:~-4,4%" 
40.
if /I "%inex:~1,3%"==".ps" set "inex=%inex:~1,3%"&set "input=%input:~0,-3%" 
41.
if /I "%inex:~1,3%"==".ts" set "inex=%inex:~1,3%"&set "input=%input:~0,-3%" 
42.
if "%inex:~-3,1%%inex:~-1,1%"==".s" set "name=%input%" 
43.
goto :run 
44.
 
45.
:Abfrage2 
46.
set "name=%input:~1,-5%"&set "inex=%input:~-5,4%" 
47.
if /I "%inex:~1,3%"==".ps" set "inex=%inex:~1,4%"&set "input=%input:~1,-4%" 
48.
if /I "%inex:~1,3%"==".ts" set "inex=%inex:~1,4%"&set "input=%input:~1,-4%" 
49.
if "%inex:~-3,1%%inex:~-1,1%"==".s" set "name=%input%" 
50.
goto :run 
51.
 
52.
:run 
53.
if /I "%inex%"==".mkv" set "anzeig=Datei ist eine *.mkv"&goto ende 
54.
if /I "%inex%"==".mp3" set "anzeig=Datei ist eine *.mp3"&goto ende 
55.
call start-set 
56.
if not "%inex:~0,1%"=="." goto auto 
57.
 
58.
:run-once 
59.
set "run=once 
60.
if "%inex:~-3,1%"=="." (set "inex=%inex:~1,2%") ELSE set "inex=%inex:~1,3%" 
61.
call :process 
62.
call :post-process 
63.
cls&set "anzeig=Process-once hat fertig" 
64.
goto ende 
65.
 
66.
:auto 
67.
set "run=auto"&pushd "%input%" 
68.
FOR /r "%cd%" %%i IN (%auto%) DO ( 
69.
	set "input=%%i" 
70.
	set "outex=mkv" 
71.
	set "inex=!input:~-3,3!"&set "name=!input:~0,-4!" 
72.
	if "!inex:~-3,1!!inex:~-1,1!"==".s" set "inex=!input:~-2,2!"&set "name=!input:~0,-3!" 
73.
	set "parm=-vcodec copy -acodec copy" 
74.
	echo aktuelles Verzeichnis ist "%cd%"	 
75.
	call :process 
76.
	call :post-process 
77.
78.
cls&set "anzeig=Process-auto hat fertig" 
79.
goto ende 
80.
 
81.
:process 
82.
mode con cols=130 lines=63&cls&color 0F&echo. 
83.
echo --"!name!.!inex!"-- 
84.
ping -n 5 localhost 1>nul 2>nul 
85.
call :suche 
86.
if "!bild!"=="mpeg1" call :process1 
87.
if "!ton!"=="ac3" call :process2 
88.
echo --"!name!.!inex!"--&echo.&title !inex! to !outex! with !parm! 
89.
if "%para:~-5,2%"=="-t"  (%ffmpeg% %start% -i "!name!.!inex!" !parm! "!name!+.!outex!") ELSE %ffmpeg% -i "!name!.!inex!" !parm! "!name!+.!outex!" 
90.
REM pause 
91.
:process-info 
92.
cls&color 0E&echo.&echo  MediaInfo werden geladen... 
93.
%mediainfo% -f "!name!+.!outex!">"!name!+.txt" 
94.
%mediainfo% -f "!name!+.!outex!" 
95.
echo.&echo  Fenster schlieát in 8 Sekunden 
96.
ping -n 15 localhost 1>nul 2>nul 
97.
call :processend 
98.
goto :eof 
99.
 
100.
:processend 
101.
mode con cols=75 lines=5&cls&color 0A&echo. 
102.
cls&color 0A&echo.&echo  Dateien werden verschoben... 
103.
if "!run!"=="auto" if not "%para:~-5,2%"=="-t" move /y "!name!.*" "%weg%" 
104.
if "%para:~-5,2%"=="-t" ( 
105.
	move /y "!name!+.!outex!" "!name!_TEST.!outex!" 
106.
	move /y "!name!+.txt" "!name!_TEST.txt" 
107.
	ping -n 5 localhost 1>nul 2>nul 
108.
	move /y "!name!_TEST.*" "%weg%" 
109.
110.
if "!run!"=="auto" if exist "!name!-.*" move /y "!name!-.*" "%weg%" 
111.
goto :eof 
112.
 
113.
:process1 
114.
set "outex=mp4" 
115.
echo --!name!--&echo.&title !inex! to !outex! with !parmstd! als mp3-process 
116.
if "%para:~-5,2%"=="-t"  (%ffmpeg% %start% -i "!name!.!inex!" -vcodec copy -an "!name!-.mpeg") ELSE %ffmpeg% -i "!name!.!inex!" -vcodec copy -an "!name!-.mpeg" 
117.
if "%para:~-5,2%"=="-t"  (%ffmpeg% %start% -i "!name!.!inex!" -vn -acodec libmp3lame -sameq "!name!-.mp3") ELSE %ffmpeg% -i "!name!.!inex!" -vn -acodec libmp3lame -sameq "!name!-.mp3" 
118.
%ffmpeg% -i "!name!-.mpeg" -i "!name!-.mp3" !parmstd! "!name!+.!outex!" 
119.
ping -n 8 localhost 1>nul 2>nul 
120.
set "run=auto" 
121.
goto :process-info 
122.
 
123.
:process2 
124.
set "outex=mkv" 
125.
echo --!name!--&echo.&title !inex! to !outex! with !parmstd! als ac3-process 
126.
if "%para:~-5,2%"=="-t"  (%ffmpeg% %start%  -i "!name!.!inex!" -vcodec copy -an "!name!-.mp4") ELSE %ffmpeg% -i "!name!.!inex!" -vcodec copy -an "!name!-.mp4" 
127.
if "%para:~-5,2%"=="-t"  (%ffmpeg% %start%  -i "!name!.!inex!" -vn -acodec copy "!name!-.aac") ELSE %ffmpeg% -i "!name!.!inex!" -vn -acodec copy "!name!-.aac" 
128.
%ffmpeg% -y -i "!name!-.aac" -ac 6 -ar 48000 -acodec pcm_s16le -f wav - | %sox% -G --volume 2.5 -s -b 16 -c 6 -r 48000 -t raw - -t wav - | %ffmpeg% -y -i - -ab 576000 -ac 6 -ar 48000 "!name!-.ac3" 
129.
%ffmpeg% -i "!name!-.mp4" -i "!name!-.ac3" !parmstd! "!name!+.!outex!" 
130.
ping -n 8 localhost 1>nul 2>nul 
131.
set "run=auto" 
132.
goto :process-info 
133.
 
134.
:post-process 
135.
mode con cols=75 lines=5&cls&color 0A&echo. 
136.
if "!run!"=="auto" (echo  ein neuer Prozess wird gestartet...) ELSE echo  Prozess wird beendet...  
137.
ping -n 5 localhost 1>nul 2>nul&color 0F 
138.
if exist "!name!+.!outex!" move /y "!name!+.!outex!" "!name!.!outex!" 
139.
if exist "!name!+.txt" move /y "!name!+.txt" "!name!.txt" 
140.
ping -n 5 localhost 1>nul 2>nul 
141.
goto :eof 
142.
 
143.
:suche 
144.
set "info=suche Parameter..."&title !info! 
145.
%ffmpeg% -i "!name!.!inex!" 2> %tmp%\!inex!.txt 
146.
::kein Video >> mp3 
147.
find /n /i "Video:" %tmp%\!inex!.txt 
148.
if errorlevel 1 set "outex=mp3"&goto :audio-mp2 
149.
findstr /c:"Video: none" %tmp%\!inex!.txt 
150.
if not errorlevel 1 set "outex=mp3"&goto :audio-mp2 
151.
 
152.
::Video: "flv1 vp6f" Zuordnung noch offen 
153.
::Video: wmv1 >>-vcodec mpeg4>> mp4 
154.
::Video: mpeg1video >>process1 
155.
::Video: mpeg2video >>-vcodec mpeg4>> mp4 
156.
::Video: mpeg4 >>-vcodec copy >> mp4 
157.
::Video: h264, mjpeg >>-vcodec copy >> mkv 
158.
 
159.
if /I "%inex%"=="mp4" set "sv=mp4"&goto :audio-mp2 
160.
:video1 
161.
findstr "mpeg1video" %tmp%\!inex!.txt 
162.
if not errorlevel 1 set "bild=mpeg1" 
163.
:video2 
164.
findstr "wmv1 mpeg2video" %tmp%\!inex!.txt 
165.
if not errorlevel 1 set "parm1=-vcodec mpeg4"&set "outex=mp4" 
166.
:video4 
167.
findstr "mpeg4" %tmp%\!inex!.txt 
168.
if not errorlevel 1 set "outex=mp4" 
169.
:videoHD 
170.
findstr "h264" %tmp%\!inex!.txt 
171.
if not errorlevel 1 set "outex=mkv" 
172.
 
173.
::Audio: mp3 >>-acodec copy 
174.
::Audio: ac3 >>process2 
175.
::Audio: wmav2 >>-acodec libmp3lame 
176.
::Audio: mp2 >>-acodec libmp3lame 
177.
 
178.
:audio-mp2 
179.
findstr "wmav2 mp2 pcm_u8" %tmp%\!inex!.txt 
180.
REM if not errorlevel 1 set "parm2=-acodec libmp3lame" 
181.
if not errorlevel 1 set "parm=-acodec libmp3lame"&goto :suchend 
182.
:audio-ac3 
183.
findstr "ac3" %tmp%\!inex!.txt 
184.
if not errorlevel 1 set "ton=ac3" 
185.
if "!sv!"=="mp4" set "outex=mkv"&set "parm=!parm2!"&goto :suchend 
186.
if "!parm3:~0,6!"=="-sameq" (set "parm=!parm1! !parm2! !parm3!") ELSE set "parm=!parm3!" 
187.
 
188.
:suchend 
189.
if "!parm3:~0,6!"=="-sameq" (set "parm=!parm! !parm3!") ELSE set "parm=!parm3!" 
190.
if exist "!name!.!outex!" move /y "!name!.!outex!" "!name!_save.!outex!" 
191.
cls&color 0A&echo.&echo   Parameter-Suche beendet... 
192.
echo.&echo --"!name!.!inex!"-- 
193.
ping -n 3 localhost 1>nul 2>nul&color 0F&echo. 
194.
type %tmp%\!inex!.txt 
195.
ping -n 10 localhost 1>nul 2>nul 
196.
cls&color 0A&echo.&echo   Umwandlung wird gestartet...&echo. 
197.
ping -n 3 localhost 1>nul 2>nul&color 0F 
198.
goto :eof 
199.
 
200.
:help 
201.
mode con cols=75 lines=10&cls&color 3E&echo.&title Hilfe zu %~n0 
202.
echo  Entweder eine Media-Container-Datei 
203.
echo  (%auto%)&echo. 
204.
echo  auf den Link ziehen oder&echo. 
205.
echo  ein komplettes Verzeichnis mit Media-Dateien.&echo. 
206.
ping -n 12 localhost 1>nul 2>nul 
207.
 
208.
:ende 
209.
if not n%1==n mode con cols=75 lines=5&color 3E&title %~n0 ist beendet&echo.&echo  %anzeig%&echo. 
210.
echo  Fenster schlieát in 8 Sekunden 
211.
ping -n 8 localhost 1>nul 2>nul
Die Hinweise stehen zwar bereits in der BAT, doch für die Schnell-Leser:
%ffmpeg%, %sox% und %mediainfo% sind als Variable in der start-set definiert. Diese enthält den Pfad inlusive Programm (z.B.: ...\bin\ffmpeg),
ebenso %weg% ein Ordner zum Sammeln der bearbeiteten Dateien bevor der letzte Lösch-Befehl kommt.
Wer das so nicht mag (extra BAT), kann diese Angaben mit oben "set"-zen.
Benötigt werden also die Freeware-Programme "ffmpeg", "SOX" und "MediaInfo", die per Internet-Suche schnell gefunden sind.
Am einfachsten das Paket Hybrid, dort erhältlich, herunterladen. Darin sind alle Programme enthalten.

Das Tool sagt also ffmpeg folgendes:
1. Name der zu bearbeitenden Datei(en)
2. Inhalt der Streams
3. Prozecc der verwendet werden soll
3.1. Einfaches Umlabeln (Containern) auf MP4 oder MKV oder, falls nur Audio, MP3
3.2. Trennen der Streams, umkodieren der Audiospur und zusammenfügen zu MP4
3.3. Trennen der Streams und zusammenfügen zu MKV
3.4. Komplett neu Umkodieren zu MKV
4. Erstellen von Output-Infos
5. Verschieben der Input-Datei oder Test-Files in den "Spezial-Papierkorb"

Der Link läßt die Wahl zwischen einer einzelnen Datei oder komplette Ordner samt Unterordner.
"_test" - mit Unterstrich, Schreibweise sonst ist es egal - erzeugt einen Probelauf, der ab der 5. Video-Minute beginnt.
Dank der eigenen tollen Programm-Routinen sorgt ffmpeg dafür, dass die Qualität nicht leidet und reichlich Platz gespart wird.
Die Zwei REM-Stellen haben folgenden Grund:
Zeile 90 - Pause, damit bei Bedarf die Hinweise von ffmpeg gelesen werden können.
Zeile 180 - IF, auf Wunsch mal ausprobieren. Dann den REM in Zeile 181 setzen!
Die Gewählte Einstellung (Zeile 181) bewirkt ein Umkodieren des Films, die Zeile 180 nur ein "Umlabeln"

Nun bitte ich um fleißiges Ausprobieren und Rückinfos, insbesondere zu gefundenen Codecs, damit ich diese einpflegen kann.
Verbesserungsvorschläge zum Skript-Ablauf freuen mich natürlich auch, dito, Fehlerhinweise.
Die geteste Umgebung: WinXP + SP3.
Doch dürfte das Bat-File sicherlich auch auf den anderen Win-Systemen laufen, auf denen auch ffmpeg es kann.

Ich danke für Eure Aufmerksamkeit.
max5moritz
Mitglied: drnatur
10.05.2012 um 19:06 Uhr
hallo max5moritz,

Hut ab vor deiner Arbeit

da du dich anscheinend sehr für Video- und Audiobearbeitung interessierst, könnte dir vielleicht das Tool "WinFF", zu finden unter http://www.winff.org eine große Hilfe sein.
Denn das ist so ähnlich wie deine Batch-Datei, nur eben eine grafische Oberfläche für FFMPEG.
D.h., in das GUI können mehrere Dateien per Drag-&-Drop gezogen werden, die dann alle ins gewünschte Verzeichnis und Ausgabeformat gebracht werden.

liebe Grüße,
drnatur
Bitte warten ..
Mitglied: max5moritz
18.05.2012 um 15:30 Uhr
Hallo drnatur,

danke für Deinen Hinweis. Zwar gehört WinFF bereits schon zu den GUI, die die Sache versuchen, möglichst einfach zu gestalten.
Doch ist mir das aber immer noch nicht einfach genug. Deshalb die Batch.

Einfach eine Datei darauf, oder einen Ordner, Umwandlung abwarten, fertig. Nix zum Einstellen, etc. p.p.
Mein Ansatz war, möglichst beste Qualität bei höchster Komprimierung - ffmpeg organisert das selbst ganz gut.
Die Umwandlung findet immer in dem Ordner statt, in welchem sich der Input befindet.

Inzwischen habe ich den Skipt weiter entwicklet.
In Kombination mit einem AutoHotKey-Skript (*.ahk) können jetzt "Sonderwünsche" verarbeitet werden.

Herzlichst,
max5moritz
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Server
gelöst SQL-Tabelle portieren und dabei Daten konvertieren (1)

Frage von menace zum Thema Server ...

Sicherheits-Tools
gelöst Gutes einfach zu bedienendes VPN gesucht - am besten kostenlos (19)

Frage von power-user zum Thema Sicherheits-Tools ...

C und C++
C++ mit Qt bekomme ich einfach nicht zum laufen (3)

Frage von PeterPann zum Thema C und C ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...