- Registriert
- 3 Aug. 2014
- Beiträge
- 28.557
Hallo in die Runde,
ich würde gerne ein Sammelthema bezüglich "Shell snippets" starten, bei dem wir nützliche Skripte hier sammeln und mit anderen teilen können.
Achte bitte darauf, wenn eure Skripte etwas löschen oder erstellen und oder Rekursiv arbeiten, das dies in der Beschreibung ersichtlich ist, vor einer möglichen Ausführung!
Dann fange ich mal an mit einem Skript an:
Bash:
Funktion:
Das Skript arbeitet einen Zielordner rekursiv ab, womit ffmpeg alle Videodateien als [kw].mkv[/kw] kodiert. Ich brauche das Skript dafür, um für meinen EbookReader, mit Videowiedergabe, Videos in ein spielbares Format umzukodieren. Der Ordner der Ausgabe der Videodatei ist mit dem Inputordner identisch.
Achtung: Der Befehl löscht die Quelldateie mittels [kw]rm[/kw], wenn das umkodierte Video als [kw].mkv[/kw] existiert nach der Ausführung von ffmpeg. (Zeile 14)
Das Skript sollte wie folgt aufgerufen werden: [kw]convert.sh Pfad/VideoQuellordner[/kw] mit Videoordnern/Dateien.
Update:
Hier eine verbesserte Version des Skripts.
ich würde gerne ein Sammelthema bezüglich "Shell snippets" starten, bei dem wir nützliche Skripte hier sammeln und mit anderen teilen können.
Achte bitte darauf, wenn eure Skripte etwas löschen oder erstellen und oder Rekursiv arbeiten, das dies in der Beschreibung ersichtlich ist, vor einer möglichen Ausführung!
Dann fange ich mal an mit einem Skript an:
Bash:
Funktion:
Das Skript arbeitet einen Zielordner rekursiv ab, womit ffmpeg alle Videodateien als [kw].mkv[/kw] kodiert. Ich brauche das Skript dafür, um für meinen EbookReader, mit Videowiedergabe, Videos in ein spielbares Format umzukodieren. Der Ordner der Ausgabe der Videodatei ist mit dem Inputordner identisch.
Achtung: Der Befehl löscht die Quelldateie mittels [kw]rm[/kw], wenn das umkodierte Video als [kw].mkv[/kw] existiert nach der Ausführung von ffmpeg. (Zeile 14)
Das Skript sollte wie folgt aufgerufen werden: [kw]convert.sh Pfad/VideoQuellordner[/kw] mit Videoordnern/Dateien.
[src=bash]#!/bin/bash
function traverseFolders {
for entry in "$1"/*
do
if [[ -d $entry ]]; then
echo "$entry"
traverseFolders "$entry"
else
FILE=$entry
echo "Start encoding ${FILE} to ${FILE%.*}.mkv"
ffmpeg -v 0 -stats -i "$FILE" "${FILE%.*}.mkv"
if [[ "${FILE%.*}.mkv" ]]; then
rm "$FILE"
fi
fi
done
}
traverseFolders "$1"
[/src]
function traverseFolders {
for entry in "$1"/*
do
if [[ -d $entry ]]; then
echo "$entry"
traverseFolders "$entry"
else
FILE=$entry
echo "Start encoding ${FILE} to ${FILE%.*}.mkv"
ffmpeg -v 0 -stats -i "$FILE" "${FILE%.*}.mkv"
if [[ "${FILE%.*}.mkv" ]]; then
rm "$FILE"
fi
fi
done
}
traverseFolders "$1"
[/src]
Update:
Hier eine verbesserte Version des Skripts.
[src="bash"]#!/bin/bash
TARGETFORMAT=".mkv"
function traverseFolders {
for entry in "$1"/*
do
if [[ -d $entry ]]; then
echo "$entry"
traverseFolders "$entry"
else
FILE=$entry
if [[ ! "${FILE%.*}$TARGETFORMAT" ]]; then
echo "Start encoding ${FILE} to ${FILE%.*}$TARGETFORMAT"
ffmpeg -v 0 -stats -i "$FILE" "${FILE%.*}$TARGETFORMAT"
if [[ "${FILE%.*}$TARGETFORMAT" ]]; then
echo "${FILE%.*}$TARGETFORMAT encoded. Removing src file."
rm "$FILE"
fi
else
echo "${FILE%.*}$TARGETFORMAT is already present. Skipping transcoding."
fi
fi
done
}
traverseFolders "$1"
[/src]
TARGETFORMAT=".mkv"
function traverseFolders {
for entry in "$1"/*
do
if [[ -d $entry ]]; then
echo "$entry"
traverseFolders "$entry"
else
FILE=$entry
if [[ ! "${FILE%.*}$TARGETFORMAT" ]]; then
echo "Start encoding ${FILE} to ${FILE%.*}$TARGETFORMAT"
ffmpeg -v 0 -stats -i "$FILE" "${FILE%.*}$TARGETFORMAT"
if [[ "${FILE%.*}$TARGETFORMAT" ]]; then
echo "${FILE%.*}$TARGETFORMAT encoded. Removing src file."
rm "$FILE"
fi
else
echo "${FILE%.*}$TARGETFORMAT is already present. Skipping transcoding."
fi
fi
done
}
traverseFolders "$1"
[/src]
Zuletzt bearbeitet: