Videos Konvertieren

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.
Danke nochmal für die Verbesserungen, wobei ich den Hintergrund für das Löschen nicht erkenne.
Kannst Du da bitte noch ein paar Worte dazu sagen?
Den "Papierkorb" nutze ich nicht.
 
Was passiert, wenn der ffmpeg-Befehl nicht vollständig ausgeführt werden kann (z.B. Problem mit den Umlauten, Rechteproblem mit einer Datei, ect.)? Ungeachtet dessen würde als nächstes die weiteren Zeilen des Skriptes abgearbeitet, sprich, die Quelldatei unwiderruflich gelöscht. Dann hast du keinen neuen und keinen alten Film mehr ==> nicht gut.
Deshalb meine Empfehlung: Entweder prüfen, ob die Zieldatei erstellt wurde und erst dann löschen, oder wenigstens den Quellfilm in eine Art Papierkorb verschieben, um zur Not noch darauf Zugriff zu haben.
 
Natürlich hast Du recht! :-)

Dann wollen wir mal die Erbsen zählen ;-)

Dann müsste auch geprüft werden, ob die Zieldatei auch in Ordnung ist. Was nutzt eine Zieldatei, die nicht "funktioniert"?

Von daher ... Backup, Backup und nochmal Backup :-)

Meine DS wird jede Nacht voll gesichert => Sehr gut

Ich habe vor dieser Scriptaktion das Verzeichnis /volume1/MULTIMEDIA natürlich gesichert (Hyperbackup mit Versionierung) und das betreffende Backup gesperrt, damit das nicht automatisch gelöscht wird. So kann ich mir weiterhelfen für den Fall der Fälle.
 
Hallo bions,

prinzipiell sollte es ja funktionieren. Ich hatte hier (#14) bereits einmal nach deinen verwendeten Codecs gefragt. Auch was für eine DS du hast, wäre interessant zu wissen.
Bis jetzt ist mir aber keine GUI auf dem DSM für ffmpeg bekannt, es gibt aber php-ffmpeg Projekte.
Du könntest auch eine alternative ffmpeg-Installation probieren. In meinem synOTR-Paket findest du Binarys für Intel und ARMv7 DSen.
 
Du sprichst hier von Containern - die können (fast) alles enthalten. Codecs wären z.B. mpeg2 (DVD), mpeg4 (DivX), h264 …
Mit der DS716+II sollte man gut arbeiten können. Allerdings ist es mir noch nicht gelungen, die Hardwarecodierung (QuickSyncVideo - QSV) anzusprechen. Dafür müsste man ffmpeg mit dem passenden Treiber kompilieren. Die Videostation nutzt dafür nicht ffmpeg sondern den G-Streamer.

Hier gibt den Ansatz einer Web-Gui für ffmpeg (allerdings mit Upload vom Client): https://github.com/swooningfish/ffmpeg-web-gui
 
Warum so kompliziert Konvertiert am Rechner und kopier´s auf die NAS und fertig.
 
Zum rekursiven Abarbeiten:

Rich (BBCode):
for i in $(find "/volume1/MULTIMEDIA/Filme/" -maxdepth 1 -name "*.avi" -type f)
    do
        title=`basename "$i"`
        pfad=`dirname "$i"`

        /bin/ffmpeg -i "$i" -c mpeg4 -c:a copy "${pfad}/${title}.mp4"
    done

- mit -maxdepth gibst du die Ordnertiefe an
- die fertigen Filme werden parallel zu den Quellfilmen abgelegt

Danke für das Script. Das ist aber nicht rekursiv.

Wenn es rekursiv wäre, würde es z.B, so aussehen:

Das Skript wird mit einem Ordner als Parameter aufgerufen.
Im Skript loopt er einmal über alle Elemente des Ordners.
Ist das Element ein Video-File, wird es konvertiert
Ist das Element ein Ordner, ruft sich das Script mit diesem als Parameter selber auf.

Rekursives Programmieren macht den Code i.d.R. übersichtlicher/schlanker und ermöglicht eine dynamische Tiefe.

Nur so als Idee :)
 
Rekursives Programmieren macht den Code i.d.R. übersichtlicher/schlanker und ermöglicht eine dynamische Tiefe.
Wie @Benares schon schrieb, muss -maxdepth 1 noch weggelassen, bzw. angepasst werden.

Aber ganz ehrlich: mich würde deine Umsetzung mal interessieren.
Ich wüsste nicht, wie man es schlanker und gleichzeitig übersichtlicher darstellen könnte.
 
Ich denke mein Kommentar war überflüssig und passt nicht hierher.

Also.. Das Skript macht was es soll und ist auch gut so wie es ist. :)

Es ist halt nicht rekursiv programmiert. "-maxdepth 1" wegzulassen ändert daran auch nichts. :p

Wie gesagt: "Rekursives Programmieren macht den Code i.d.R. übersichtlicher/schlanker und ermöglicht eine dynamische Tiefe.". In diesem Fall finde ich die vorhandene Lösung mit dem find (welches bereits ein rekursives Ergebnis liefert) aber eher besser.
 
Doch, das schreibt er ja im letzten Satz.

Mich hätte dennoch mal ein Beispiel interessiert - man lernt ja immer gern dazu ??
 
Jamei, Männer und fertig lesen :rolleyes: ?
 
  • Haha
Reaktionen: geimist
nicht das ich Euch beim hobby coden stören will, aber warum nimmt ihr nicht Handbrake im Docker Container?
 
Doch, das schreibt er ja im letzten Satz.

Mich hätte dennoch mal ein Beispiel interessiert - man lernt ja immer gern dazu ??

Das wäre ein Beispiel für Rekursiv.

Das Skript macht so nichts außer Ausgaben, es dient also nur der Veranschaulichung. Ich konnte es bei mir leider nicht richtig testen da alle meine Files Leerzeichen haben :-(

Bash:
#!/bin/sh

folderaction() {

path=$1
for folder in $(find $path -type d)
    do
        if [ ${folder:0:1} = "." ]; then
            break
            # ignore . and ..
        fi
        folderaction $folder
        # call function recursively
    done

for file in $(find $path -type f)
    do
        echo "Doing something with ffmpeg on $file"
        # start ffmpeg here
    done
}

folderaction $1
 
  • Like
Reaktionen: geimist
Warum nachbauen was "find" schon automatisch macht?
Ich würde eher noch einen Check einbauen, ob die zug. .mp4-Datei bereits existiert bzw. auch neuer ist als die .avi-Datei, um unnötige Neukonvertierungen zu vermeiden. Neue Herausforderung für dich :ROFLMAO:
 
Es ging nur um die Frage "Was bedeutet rekursiv eigentlich im Kontext von Programmen und Skripten?".

In diesem Fall wäre das tatsächlich absoluter Unsinn :giggle:
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat