it-swarm.com.de

Wie konvertiert man ein gesamtes Verzeichnis mit ffmpeg?

Wie konvertiert man ein gesamtes Verzeichnis/einen Ordner mit ffmpeg über die Befehlszeile oder mit einem Batch-Skript?

100
Eugene

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
114
Isaac

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
131
llogan

Und unter Windows:

FOR /F "tokens=*" %G IN ('dir /b *.flac') DO ffmpeg -i "%G" -acodec mp3 "%~nG.mp3"
47
lxs

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
23
yolk

Um mit Unterverzeichnissen zu konvertieren, verwenden Sie z. 

find . -exec ffmpeg -i {} {}.mp3 \;
12
user2707001

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.

7
Eibel

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.

4

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.

3
Nirav Mehta

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:

  1. die Erweiterung, von der Sie konvertieren möchten
  2. die neue Erweiterung, in die Sie konvertieren möchten

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.

3
Alexander Luna
for i in *.flac;
  do name=`echo "${i%.*}"`;
  echo $name;
  ffmpeg -i "${i}" -ab 320k -map_metadata 0 -id3v2_version 3 "${name}".mp3;
done

Batch-Prozess flac-Dateien in mp3 (sicher für Dateinamen mit Leerzeichen) mit [1][2]

3
César

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"
3
shubhamr238

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 ????.

1
Mehrdad995

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

1
user151496

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""

0
telenachos

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.

0
stib