Ich muss ein Skript erstellen, das alle MKV-Dateien in einem Startverzeichnis und allen darunter liegenden Unterverzeichnissen in das MP4-Format konvertieren kann.
Ich konnte Dateien einzeln konvertieren, indem ich Folgendes verwendet habe:
avconv -i input.mkv -codec copy output.mp4
und das Konvertieren aller Dateien im aktuellen Verzeichnis wäre nicht allzu schwierig. Aber nach stundenlanger Suche kann ich keine Möglichkeit finden, dies rekursiv zu tun.
Ich habe herausgefunden, dass ich den Befehl „find“ verwenden muss, bin aber relativ neu bei Linux und komme überhaupt nicht damit klar, wie ich „find“ und „avconv“ kombinieren soll, um das zu erreichen, was ich brauche.
Antwort1
Sie müssen rekursives Globbing in Bash aktivieren:
shopt -s globstar
Dann eine einfache Schleife, die den Ausgabedateinamen ersetzt:
for f in **/*.mkv; do avconv -i "$f" -c copy "${f%.mkv}.mp4"; done
Beachten Sie, dass dies bei Videos fehlschlagen kann, die Codecs enthalten, die MP4-Container nicht verarbeiten können. MP4 ist restriktiver als MKV, das grundsätzlich alle Codecs enthalten kann.