Initial commit: Added split2components.sh script
This commit is contained in:
parent
416061b325
commit
e7d708fc29
77
split2components.sh
Normal file
77
split2components.sh
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Überprüfe, ob ffmpeg und pv installiert sind
|
||||||
|
if ! command -v ffmpeg &> /dev/null || ! command -v pv &> /dev/null
|
||||||
|
then
|
||||||
|
echo "ffmpeg oder pv ist nicht installiert. Bitte installiere sie zuerst."
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Überprüfe, ob ein Zielpfad angegeben wurde
|
||||||
|
if [ "$#" -eq 0 ]
|
||||||
|
then
|
||||||
|
echo "Bitte gib den Zielpfad an, in dem die Dateien verarbeitet werden sollen."
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
target_path="$1"
|
||||||
|
|
||||||
|
# Überprüfe, ob der Zielpfad vorhanden ist
|
||||||
|
if [ ! -d "$target_path" ]
|
||||||
|
then
|
||||||
|
echo "Der angegebene Zielpfad existiert nicht."
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Erstelle die benötigten Verzeichnisse
|
||||||
|
mkdir -p "$target_path/mkv" "$target_path/flac" "$target_path/srt"
|
||||||
|
|
||||||
|
# Erstelle ein temporäres Verzeichnis für Untertiteldateien
|
||||||
|
temp_dir="temp_subs"
|
||||||
|
mkdir -p "$temp_dir" || { echo "Fehler beim Erstellen von $temp_dir"; exit 1; }
|
||||||
|
|
||||||
|
# Schleife durch alle unterstützten Video-Dateiformate im angegebenen Verzeichnis
|
||||||
|
find "$target_path" -type f \( -iname \*.mp4 -o -iname \*.mkv -o -iname \*.avi -o -iname \*.flv -o -iname \*.mov \) -print0 | while IFS= read -r -d '' video_file
|
||||||
|
|
||||||
|
do
|
||||||
|
# Prüfe, ob es eine passende Videodatei gibt
|
||||||
|
if [ -e "$video_file" ]
|
||||||
|
then
|
||||||
|
# Extrahiere den Dateinamen ohne Erweiterung
|
||||||
|
filename_no_ext=$(basename -- "$video_file" | cut -f 1 -d '.')
|
||||||
|
new_video_file="$target_path/mkv/$filename_no_ext.mkv"
|
||||||
|
srt_subtitle_file="$target_path/srt/$filename_no_ext.srt"
|
||||||
|
|
||||||
|
# Konvertiere Video in MKV-Format
|
||||||
|
ffmpeg -fflags +genpts -i "$video_file" -c:v copy -pix_fmt yuv420p -an -sn -fflags +genpts -avoid_negative_ts make_zero "$new_video_file" -y < /dev/null
|
||||||
|
|
||||||
|
|
||||||
|
# Extrahiere Untertitel ins SRT-Format (falls vorhanden)
|
||||||
|
subtitle_file="$temp_dir/$filename_no_ext.srt"
|
||||||
|
ffmpeg -i "$video_file" -map 0:s:0 "$subtitle_file"
|
||||||
|
|
||||||
|
# Konvertiere Untertitel ins SRT-Format, wenn vorhanden
|
||||||
|
if [ -e "$subtitle_file" ]
|
||||||
|
then
|
||||||
|
mv "$subtitle_file" "$srt_subtitle_file"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Schleife durch alle Audio-Streams und konvertiere sie in separate FLAC-Dateien
|
||||||
|
audio_stream_index=0
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
flac_audio_file="$target_path/flac/${filename_no_ext}_audio$audio_stream_index.flac"
|
||||||
|
if ! ffmpeg -i "$video_file" -map 0:a:"$audio_stream_index" -c:a flac -y "$flac_audio_file" < /dev/null
|
||||||
|
then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
echo "Audio-Stream $audio_stream_index konvertiert."
|
||||||
|
((audio_stream_index++))
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Verarbeitung von $filename_no_ext abgeschlossen."
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Lösche temporäres Verzeichnis
|
||||||
|
rm -r "$temp_dir"
|
||||||
Loading…
x
Reference in New Issue
Block a user