Wie konvertiert man ein gesamtes Verzeichnis/einen Ordner mit ffmpeg über die Befehlszeile oder mit einem Batch-Skript?
Die vorherige Antwort erstellt nur eine Ausgabedatei namens out.mov. Versuchen Sie Folgendes, um für jeden alten Film eine separate Ausgabedatei zu erstellen.
for i in *.avi;
do name=`echo $i | cut -d'.' -f1`;
echo $name;
ffmpeg -i "$i" "${name}.mov";
done
Für Linux und macOS kann dies in einer Zeile erfolgen. Verwenden Sie parameter extension , um die Dateinamenerweiterung der Ausgabedatei zu ändern:
for i in *.avi; do ffmpeg -i "$i" "${i%.*}.mp4"; done
Und unter Windows:
FOR /F "tokens=*" %G IN ('dir /b *.flac') DO ffmpeg -i "%G" -acodec mp3 "%~nG.mp3"
Ein einzeiliges Bash-Skript wäre leicht zu tun - ersetzen Sie *.avi
durch Ihren Dateityp:
for i in *.avi; do ffmpeg -i "$i" -qscale 0 "$(basename "$i" .avi)".mov ; done
Um mit Unterverzeichnissen zu konvertieren, verwenden Sie z.
find . -exec ffmpeg -i {} {}.mp3 \;
Für alle, die mit ffmpeg Batch-Konvertierungen durchführen möchten, aber eine praktische Windows-Oberfläche haben möchten, habe ich dieses Frontend entwickelt:
https://sourceforge.net/projects/ffmpeg-batch
Es fügt ffmpeg eine Fenster-Mode-Schnittstelle, Fortschrittsbalken und verbleibende Zeit hinzu. Funktionen, die mir bei der Verwendung von ffmpeg immer fehlten.
Wenn Sie GNU parallel haben, können Sie alle .avi-Dateien unterhalb von vid_dir
in mp4 parallel konvertieren, wobei Sie alle außer einem Ihrer CPU-Kerne verwenden
find vid_dir -type f -name '*.avi' -not -empty -print0 |
parallel -0 -j -1 ffmpeg -loglevel fatal -i {} {.}.mp4
Um von/in andere Formate zu konvertieren, ändern Sie '*.avi'
oder .mp4
nach Bedarf. GNU parallel ist in den meisten Repositorys der Linux-Distributionen in einem Paket aufgeführt, das normalerweise als parallel
bezeichnet wird.
Wenn Sie möchten, dass eine grafische Schnittstelle mit ffmpegX Batch verarbeitet, versuchen Sie Quick Batcher. Es ist kostenlos und benötigt die letzten ffmpegX-Einstellungen, um heruntergeladene Dateien zu konvertieren.
Beachten Sie, dass Sie keine Ordner per Drag & Drop auf den Quick Batcher ziehen können. Wählen Sie also Dateien aus und legen Sie sie durch Quick Batcher.
Ich weiß, dass dies möglicherweise redundant ist, aber ich verwende dieses Skript, um Dateien stapelweise zu konvertieren.
old_extension=$1
new_extension=$2
for i in *."$old_extension";
do ffmpeg -i "$i" "${i%.*}.$new_extension";
done
Um es flexibler zu machen, braucht es zwei Argumente:
Ich erstelle einen Alias, aber Sie können ihn auch manuell wie folgt verwenden:
sh batch_convert.sh mkv mp4
Dies würde alle mkv
-Dateien in mp4
-Dateien konvertieren.
Wie Sie sehen, ist es etwas vielseitiger. Solange ffmpeg
es konvertieren kann, können Sie zwei beliebige Erweiterungen angeben.
Für Windows:
Hier konvertiere ich alle (.mp4) Dateien in (.mp3) Dateien.
Öffne einfach cmd, gehe in den gewünschten Ordner und gib den Befehl ein.
Abkürzung: (optional)
1. Gehen Sie zu dem Ordner, in dem sich Ihre (.mp4) -Dateien befinden
2. Drücken Sie die Umschalttaste und klicken Sie mit der linken Maustaste und wählen Sie "PowerShell-Fenster hier öffnen".
oder "Eingabeaufforderungsfenster hier öffnen"
3. Geben Sie "cmd" ein. [HINWEIS: Überspringen Sie diesen Schritt, wenn cmd anstelle von PowerShell direkt geöffnet wird.]
4. Führen Sie den Befehl aus
for %i in (*.mp4) do ffmpeg -i "%i" "%~ni.mp3"
Nur dieses hat für mich funktioniert. Bitte beachten Sie, dass Sie den Ordner "newfiles" manuell erstellen müssen, in dem sich die Datei ffmpeg.exe befindet.
Konvertieren Sie . Dateien in .wav Audio Code:
for %%a in ("*.*") do ffmpeg.exe -i "%%a" "newfiles\%%~na.wav"
pause
wenn Sie alle MP3-Dateien in WAV konvertieren möchten, ändern Sie ("*.*")
in ("*.mp3")
.
Der Autor dieses Skripts ist:
https://forum.videohelp.com/threads/356314-How-to-batch-convert-multiplex-any-fileses-with-ffmpeg
hoffe es hat geholfen ????.
fenster:
@echo off
for /r %%d in (*.wav) do (
ffmpeg -i "%%~nd%%~xd" -codec:a libmp3lame -c:v copy -qscale:a 2 "%
%~nd.2.mp3"
)
dies ist eine variable Bitrate von Qualität 2. Sie können sie auf 0 setzen, wenn Sie möchten, aber wenn Sie kein wirklich gutes Lautsprechersystem haben, ist es imo wertlos
Eine andere einfache Lösung, die noch nicht vorgeschlagen wurde, wäre die Verwendung von xargs
:
ls *.avi | xargs -i -n1 ffmpeg -i {} "{}.mp4"
Eine kleine Schwachstelle ist die umständliche Benennung von Ausgabedateien (beispielsweise input.avi.mp4
). Eine mögliche Problemumgehung dafür könnte sein:
ls *.avi | xargs -i -n1 bash -c "i={}; ffmpeg -i {} "\${i%.*}.mp4"
"
Ein bisschen wie Code Golf hier zu bekommen, aber da fast alle Antworten bis jetzt bash sind (abgesehen von einem einsamen Cmd), hier ein fenster plattformübergreifender Befehl, der Powershell verwendet (weil fantastisch):
ls *.avi|%{ ffmpeg -i $_ <ffmpeg options here> $_.name.replace($_.extension, ".mp4")}
Sie können * .avi so ändern, wie es Ihrem Ausgangsmaterial entspricht.