Liebe Gemeinde, ich habe eine Skript geschrieben, dass mir meine Kameravideos als Batch mit einem aktuellen Videocodec (H264) umrechnen soll. Hier seht ihr meinen Versuchsordner ~/Bilder/Videos
Code:
adi@bigdestruction ~/Bilder/Videos $ ll
total 24776
drwxr-xr-x 2 adi adi 4096 Feb 19 06:26 ./
drwxr-xr-x 7 adi adi 4096 Feb 19 06:26 ../
-rwxrw-r-- 1 adi adi 555 Feb 19 06:25 convert_mp4_mp4.sh*
-rw-r--r-- 1 adi adi 13021784 Jan 28 10:32 P1010067_old.MP4
-rw-r--r-- 1 adi adi 12307391 Feb 19 03:03 P1010067_standard.mp4
mein skript schaut so aus, an den neuen Dateinamen soll "_new" drangehängt werden.
Code:
#!/bin/bash
# converts *.all videos in the directory into *.mp4 container with h264- video codec
function convert {
oldname=$1
newname=${1%.*}_new.mp4
if [ -a "$newname_new" ]; then
echo "$newname_new already exists"
else
echo "Converting $oldname to $newname"
ffmpeg -i "$oldname" -vcodec libx264 -acodec mp3 "$newname"
fi
}
# - maxdepth1... don't enter Ordner recuslively
# | while IFS= read -r file ... don't be irritated by spaces in the name of file
find . -maxdepth 1 -name '*.mp4' | while IFS= read -r file; do
convert "$file"
done
Wenn ich das Skript durchlaufen lasse konvertiert er die Datei "P1010067_standard.mp4" (man beachte den Größenunterschied) und macht die Schleife für die anderen Dateien nicht weiter.
Code:
adi@bigdestruction ~/Bilder/Videos $ ll
total 29492
drwxr-xr-x 2 adi adi 4096 Feb 19 06:28 ./
drwxr-xr-x 7 adi adi 4096 Feb 19 06:26 ../
-rwxrw-r-- 1 adi adi 555 Feb 19 06:25 convert_mp4_mp4.sh*
-rw-r--r-- 1 adi adi 13021784 Jan 28 10:32 P1010067_old.MP4
-rw-r--r-- 1 adi adi 12307391 Feb 19 03:03 P1010067_standard.mp4
-rw-r--r-- 1 adi adi 4818947 Feb 19 06:27 P1010067_standard_new.mp4
Was läuft hier falsch, dass die Schleife nur ein mal durchlaufen wird?
Frage aus Neugier, weil ich als Anfänger die Lösung nicht finde... wenn ich an Dateinamen an einer anderen Stelle zusammenfügen möchte, funktioniort das überhaupt nicht, ich bin selbst darauf gekommen, dass der Dateiname sowieso falsch zu "P1010067_standard.mp4_new" zusammengesetzt werden sollte
Code:
#!/bin/bash
# converts *.all videos in the directory into *.mp4 container with h264- video codec
function convert {
oldname=$1
newname=${1%.*}.mp4
if [ -a "$newname_new" ]; then
echo "$newname_new already exists"
else
echo "Converting $oldname to $newname_new"
ffmpeg -i "$oldname" -vcodec libx264 -acodec mp3 "$newname_new"
fi
}
# - maxdepth1... don't enter Ordner recuslively
# | while IFS= read -r file ... don't be irritated by spaces in the name of file
find . -maxdepth 1 -name '*.mp4' | while IFS= read -r file; do
convert "$file"
done
aber warum diese Fehlermeldung? Ist es weil es das Dateiformat *.mp4_new nicht gibt?
[NULL @ 0x8434e0] Unable to find a suitable output format for ''
: Invalid argument
Danke und Lg
Lesezeichen