Ich versuche, ein paar hundert Videos zu X265 reencode, aber es gibt viele Verzeichnisse, die Leerzeichen in den Dateinamen haben, wie einige der Dateien. Ich habe mir eine Reihe von Skripten angeschaut und kämpfe um eine, die mit den Leerzeichen und den verschiedenen Verzeichnisebenen arbeitet.ffmpeg Batch Reencode mit Unterordnern
Dieser funktioniert, solange es keine Unterverzeichnisse ist:
#!/bin/bash
for i in *.avi;
do
ffmpeg -i "$i" -c:v libx265 -c:a copy X265_"$i"
done
Ich habe versucht, mit diesem Bash-Skript zu arbeiten, aber es funktioniert nicht mit der Whitespaces ich raten bin.
#!/bin/bash
inputdir=$PWD
outputdir=$PWD
while IFS= read -r file ; do
video=`basename "$file"`
dir=`dirname "$file"`
ffmpeg -fflags +genpts -i "$file" -c:v libx265 -c:a copy "$dir"/X265_"$video"
done < <(find "$inputdir" -name "*.avi" | head -100)
Auf diesem Thread es für Windows-Anwender wie eine gute Lösung aussieht, aber nicht linux. FFMPEG - Batch convert subfolders
FOR /r %%i in (*.mp4) DO ffmpeg32 -i "%%~fi" -map 0:0 -map 0:1 -map 0:1 -c:v copy -c:a:0 aac -b:a 128k -ac 2 -strict -2 -cutoff 15000 -c:a:1 copy "%%~dpni(2)%%~xi"
Wenn Sie mir die richtige Lösung zeigen kann, die für bash geeignet ist, würde ich es zu schätzen wissen.
Dank Olaf, sieht dies wie eine elegante Lösung aus, aber ich bekomme einen Fehler, wo es versucht, den X265_ dem Verzeichnisnamen voran zu stellen, wenn es zum ersten Verzeichnis geht. Ich erhalte diesen Fehler: 'X265_./Sub Directory/Datei mit Spaces.avi: Keine solche Datei oder dieses Verzeichnis' – Alan
@Alan Dies funktioniert möglicherweise nicht richtig. Vielleicht braucht es etwas Zitaten und Fliehen, aber ich bin jetzt nicht am Computer, um es zu testen. –
Danke @Olaf, Die Änderungen, die du gemacht hast, sind perfekt ausgearbeitet. – Alan