ffmpeg
Merge to files:
ffmpeg -i input_video.mp4 -i input_audio.m4a -c copy output_file.mp4
Convert Videos to smaller files:
#!/bin/bash
# Pfad zum Verzeichnis mit den Originalvideos
VIDEO_DIR="./"
# Zielverzeichnis für die komprimierten Videos
OUTPUT_DIR="./converted"
# Erstelle das Zielverzeichnis, falls es nicht existiert
mkdir -p "$OUTPUT_DIR"
# Durchlaufe alle .mp4 Dateien im Verzeichnis
for original in "$VIDEO_DIR"/*.MP4; do
# Dateiname ohne Pfad
filename=$(basename -- "$original")
# Vollständiger Pfad zur Ausgabedatei
output="$OUTPUT_DIR/$filename"
echo "Komprimiere: $original -> $output"
# Führe ffmpeg aus, um das Video zu komprimieren
ffmpeg -i "$original" -c:v libx265 -crf 23 -preset medium -c:a copy "$output"
done
echo "Kompression aller Videos abgeschlossen."
Anleitung: Videos in Einzelbilder aufteilen mit ffmpeg
Ziel
Mit dieser Anleitung können Sie Videos in Einzelbilder aufteilen. Dies kann nützlich sein, wenn Sie beispielsweise eine Struktur-aus-Bewegung-Rekonstruktion mit Tools wie COLMAP durchführen möchten.
Voraussetzungen
-
ffmpeg
muss auf Ihrem System installiert sein. Wenn es noch nicht installiert ist, können Sie es mit dem folgenden Befehl installieren:sudo apt install ffmpeg
Schritte
-
Bash-Skript erstellen und an die richtige Stelle verschieben
Führen Sie den folgenden Befehl aus, um das Skript zu erstellen und es direkt nach
/usr/local/bin/split-videos
zu schreiben:echo '#!/bin/bash # Überprüfen Sie, ob ffmpeg installiert ist if ! command -v ffmpeg &> /dev/null; then echo "ffmpeg ist nicht installiert. Bitte installieren Sie es zuerst." exit 1 fi # Standardwerte für Eingabe- und Ausgabepfade INPUT_PATH="." OUTPUT_PATH="." # Optionen mit getopts verarbeiten while getopts "i:o:" opt; do case "$opt" in i) INPUT_PATH="$OPTARG" ;; o) OUTPUT_PATH="$OPTARG" ;; *) echo "Ungültige Option: -$OPTARG" >&2; exit 1 ;; esac done # Gängige Videoformate VIDEO_FORMATS=("*.mp4" "*.avi" "*.mkv" "*.mov" "*.flv" "*.wmv") # Durchlaufen Sie alle gängigen Videoformate im angegebenen Eingabeverzeichnis shopt -s nullglob for format in "${VIDEO_FORMATS[@]}"; do videos=($INPUT_PATH/$format) for video in "${videos[@]}"; do # Entfernen Sie die Dateierweiterung, um den Ordnernamen zu erhalten dir_name="${video##*/}" dir_name="${dir_name%.*}" echo "Verarbeite Video: $video" # Erstellen Sie ein Verzeichnis im angegebenen Ausgabepfad mit dem Namen des Videos mkdir -p "$OUTPUT_PATH/$dir_name" # Teilen Sie das Video in Einzelbilder auf und speichern Sie sie im entsprechenden Verzeichnis ffmpeg -i "$video" -q:v 2 "$OUTPUT_PATH/$dir_name/frame_%04d.jpg" echo "Bilder gespeichert in: $OUTPUT_PATH/$dir_name/" done done echo "Alle Videos wurden erfolgreich in Einzelbilder aufgeteilt!"' | sudo tee /usr/local/bin/split-videos > /dev/null
-
Skript ausführbar machen
Machen Sie das Skript mit dem folgenden Befehl ausführbar:
sudo chmod +x /usr/local/bin/split-videos
-
Skript ausführen
Sie können das Skript jetzt von überall auf Ihrem System ausführen:
split-videos
Oder mit spezifischen Eingabe- und Ausgabepfaden:
split-videos -i /path/to/videos -o /path/to/output
Hinweis
- Das Skript sucht automatisch nach den gängigsten Videoformaten, sodass Sie nichts anpassen müssen.
Normalize-Audio:
Just normalize
create file normalize_wav.sh
#!/bin/bash
# Verzeichnis mit den WAV-Dateien
input_dir="$1"
# Zielverzeichnis für die normalisierten Dateien
output_dir="${input_dir}/loudness-normalized"
# Erstelle das Zielverzeichnis, falls es nicht existiert
mkdir -p "$output_dir"
# Durchlaufe alle WAV-Dateien im Eingabeverzeichnis
for wav_file in "$input_dir"/*.WAV; do
# Dateiname ohne Verzeichnis
filename=$(basename "$wav_file")
# Normalisierte Datei im Zielverzeichnis
normalized_file="${output_dir}/${filename}"
# Normalisieren der Lautstärke
ffmpeg -i "$wav_file" -af "loudnorm=I=-23:LRA=7:TP=-2" "$normalized_file"
echo "Normalisiert: $filename -> $normalized_file"
done
echo "Alle Dateien wurden normalisiert und nach $output_dir verschoben."
run zsh normalize_wav.sh ./
or
bash normalize_wav.sh ./
with to pass noize remover:
#!/bin/bash
# Verzeichnis mit den WAV-Dateien
input_dir="$1"
# Zielverzeichnis für die normalisierten Dateien
output_dir="${input_dir}/loudness-normalized"
# Temporäres Verzeichnis für die rauschgefilterten Dateien
temp_dir="${input_dir}/temp-noise-removed"
# Erstelle die Verzeichnisse, falls sie nicht existieren
mkdir -p "$output_dir"
mkdir -p "$temp_dir"
# Durchlaufe alle WAV-Dateien im Eingabeverzeichnis
for wav_file in "$input_dir"/*.WAV; do
# Dateiname ohne Verzeichnis
filename=$(basename "$wav_file")
# Temporäre Datei für rauschgefilterte Datei
temp_file="${temp_dir}/${filename}"
# Normalisierte Datei im Zielverzeichnis
normalized_file="${output_dir}/${filename}"
# Erstelle eine temporäre Rauschprofildatei
noise_profile="${temp_dir}/${filename}.prof"
# Extrahiere eine kurze Rauschprobe und erstelle das Rauschprofil
sox "$wav_file" -n trim 0 1 noiseprof "$noise_profile"
# Rauschentfernung mit sox
sox "$wav_file" "$temp_file" noisered "$noise_profile" 0.21
# Überprüfen, ob die Datei erfolgreich erstellt wurde
if [ -s "$temp_file" ]; then
# Lautstärke normalisieren mit ffmpeg
ffmpeg -i "$temp_file" -af "loudnorm=I=-23:LRA=7:TP=-2" "$normalized_file"
echo "Rauschentfernung und Normalisierung: $filename -> $normalized_file"
else
echo "Fehler bei der Rauschentfernung: $filename"
fi
# Entferne die temporäre Rauschprofildatei
rm "$noise_profile"
done
# Entferne das temporäre Verzeichnis und die darin enthaltenen Dateien
rm -r "$temp_dir"
echo "Alle Dateien wurden rauschgefiltert, normalisiert und nach $output_dir verschoben."
you need sox:
apt install -y sox
No Comments