Handbrake-Batch-Konvertierungsskriptunterstützung zum Festlegen der durch die offiziellen Voreinstellungen festgelegten Ausgabeerweiterung

566
Saidul Hassan

Mit Hilfe zahlreicher Diskussionen im SE-Netzwerk und an anderen Orten gelang es mir schließlich, ein Arbeitsskript zu erstellen, das mit Ausnahme der Matroska-Voreinstellungen gut funktioniert. Ich verstehe das Problem ist das Skript selbst, da es die Zielerweiterung als MP4 angibt.

Ich habe keine Erfahrung mit bash und konnte nicht herausfinden, wie ich das Skript verbessern kann. Anstatt die Ausgabeerweiterung vorzugeben, sind Erweiterungen erforderlich, die von den offiziellen Vorgaben vorgegeben werden .

Der größte Teil des Presets-Containers ist MP4, sodass er für die meisten Presets außer MKV geeignet ist. Hier ist ein Beispiel für das Skript, das für MP4 funktioniert:

#!/bin/bash # Configure these as needed SRC=~/hbCLI/src DEST=~/hbCLI/dest DEST_EXT=mp4 HANDBRAKE_CLI=HandBrakeCLI PRESET="Fast 480p30" IFS=$(echo -en "\n\b") # The script itself for FILE in `ls $SRC` do filename=$(basename $FILE) extension=$ filename=$ $HANDBRAKE_CLI -i $SRC/$FILE -o $DEST/$filename.$DEST_EXT --preset="$PRESET" --optimize --two-pass done 

Für Matroska-Voreinstellungen muss ich jedoch nur die Zeile ändern PRESET="Fast 480p30", PRESET="H.264 MKV 480p30"aber die Ausgabeerweiterung ist immer noch mp4statt mkv.


Weitere Anfrage:
Nicht Teil der Frage, aber wenn einer von euch mir helfen könnte das Skript weiter zu verbessern, so dass der Ausgang gespeichert wird, DEST=~/hbCLI/dest/$PRESETanstatt DEST=~/hbCLI/destdie Ausgabe Bedeutung wird in einen Ordner mit dem voreingestellten Namen gespeichert werden, wenn es nicht EXIST Erstellen Sie den Ordner.

Vielen Dank!

0
Wenn Sie den Namen der Voreinstellung manuell eingeben müssen, ist es nicht am einfachsten, die Erweiterung einfach manuell hinzuzufügen? slhck vor 5 Jahren 0
@slhck Ja, genau so verwalte ich gerade, aber dafür müsste ich das voreingestellte Containerformat kennen. Deshalb habe ich nach einem Weg gesucht, wenn das Containerformat automatisch gemäß der Voreinstellung ausgewählt werden könnte. Saidul Hassan vor 5 Jahren 0
Ich dachte, dass der Name des Containers bereits Teil des Namens des Presets ist, wie in Ihrem Beispiel gezeigt? (Das heißt, PRESET = "H.264 MKV 480p30" bedeutet, dass es MKV verwendet) slhck vor 5 Jahren 0
Nicht alle Preset-Namen sind so informativ, zum Beispiel "Gmail Large 3 Minutes 720p30". Trotzdem sehe ich, dass dein Standpunkt eine unbestreitbare Logik hat. Ich denke, ich versuche, die Dinge so automatisch wie möglich zu machen. Ein weniger Input wahrscheinlich :) Saidul Hassan vor 5 Jahren 0
Ich kann später nachschauen, aber im Prinzip könnte man nachsehen, wo Handbrake seine Voreinstellungen speichert (ich vermute, dass es sich nur um Klartextdateien auf Ihrem Computer handelt), aus denen Sie die erforderliche Erweiterung lesen können. In Ihrem Skript können Sie einige Änderungen vornehmen, um es zu automatisieren. (Ich gehe davon aus, dass es Ihr Ziel ist, dieselbe Eingabedatei oder mehrere Eingabedateien mit allen verfügbaren Voreinstellungen oder mindestens einer ausgewählten Teilmenge davon zu kodieren?) slhck vor 5 Jahren 0
Genau! Und vielen Dank für Ihre Rücksicht. In Erwartung warten. Saidul Hassan vor 5 Jahren 0
Auf welchem ​​Betriebssystem bist du? Die Presets scheinen in einer JSON-Datei unter `~ / Library / Application Support / HandBrake / UserPresets.json` gespeichert zu sein. Es wird also etwas komplizierter, sie aus einem Bash-Skript zu lesen. In der Tat kann es einfacher sein, Python zu verwenden, um diese Daten zu analysieren. slhck vor 5 Jahren 0
Ich bin auf Linux Mint 18.3 Cinnamon. Saidul Hassan vor 5 Jahren 0
Wie entscheidest du dich für welches Preset du willst? Vielleicht könnten Sie sich überlegen, ob Sie Ihre Voreinstellung basierend auf dem Dateityp auswählen möchten. Wenn $ extension = mkv, dann ist $ Preset = $ Presetmkv, sonst $ Presetmp4 Antony vor 5 Jahren 0

0 Antworten auf die Frage