So… hier bin ich wieder.
Ich habe eine Lösung gefunden. Und diese die ganze letzte vergangene Woche getestet.
Habe es geschafft mir ein einfaches Skript zu schreiben, welches alle Videodateien in einem Ordner rekrusiv konvertiert mittels Handbrake und danach das Ursprungsmaterial löscht.
Also reiner Austausch.
Habe nun testweise ungefähr 3 TB Daten so konvertiert, wie ich es wollte um das Skript selbst und das Ausgangsmaterial zu begutachten. Dabei auf viele kleine Fehler gestoßen wie mehrere Punkte im Namen, sonderzeichen, etc. Da ist regex echt penibel…
Egal. Lange Rede, kuzer Sinn. Folgendes Skript lief einwandfrei bei ungefähr 3 TB Videomaterial (ca. 2600 einzelne Videodateien):
#!/bin/bash
if [ -z $1 ];then echo Bitte Pfad angeben; exit 0;fi
find "$1" -depth -name "*" | while read "file" ; do
directory=$(dirname "$file")
filename=$(basename "$file")
extension=$(echo "$filename" | tail -c 4)
withoutextension=${filename::-4}
if [ ! -d "$file" ]; then
if [ $extension == mp4 ]; then
mv "$directory/$filename" "$directory/$withoutextension.mp4bak"
filename="$withoutextension.mp4bak"
fi
HandBrakeCLI --preset-import-file /home/user/PLEX.json -Z PLEX -i "$directory/$filename" -o "$directory/$withoutextension.mp4" </dev/null
rm "$directory/$filename"
fi
done
Das Skript konnte deswegen so einfach ausfallen (war trotzdem hirnf*ck), weil die ganzen Abfragen und Parameter wie was wo umgewandelt wird von Handbrake abgenommen wird.
Dazu habe ich folgendes Handbrake Profil erstellt:
{
“PresetList”: [
{
“AlignAVStart”: true,
“AudioCopyMask”: ,
“AudioEncoderFallback”: “none”,
“AudioLanguageList”: [
“deu”,
“und”
],
“AudioList”: [
{
“AudioBitrate”: 320,
“AudioCompressionLevel”: -1.0,
“AudioDitherMethod”: “auto”,
“AudioEncoder”: “av_aac”,
“AudioMixdown”: “stereo”,
“AudioNormalizeMixLevel”: false,
“AudioSamplerate”: “auto”,
“AudioTrackDRCSlider”: 0.0,
“AudioTrackGainSlider”: 0.0,
“AudioTrackQuality”: 1.0,
“AudioTrackQualityEnable”: false
},
{
“AudioBitrate”: 640,
“AudioCompressionLevel”: -1.0,
“AudioDitherMethod”: “auto”,
“AudioEncoder”: “ac3”,
“AudioMixdown”: “none”,
“AudioNormalizeMixLevel”: false,
“AudioSamplerate”: “auto”,
“AudioTrackDRCSlider”: 0.0,
“AudioTrackGainSlider”: 0.0,
“AudioTrackQuality”: -1.0,
“AudioTrackQualityEnable”: false
}
],
“AudioSecondaryEncoderMode”: true,
“AudioTrackSelectionBehavior”: “first”,
“ChapterMarkers”: true,
“ChildrenArray”: ,
“Default”: false,
“FileFormat”: “av_mp4”,
“Folder”: false,
“FolderOpen”: false,
“InlineParameterSets”: false,
“Mp4HttpOptimize”: true,
“Mp4iPodCompatible”: false,
“PictureAutoCrop”: false,
“PictureBottomCrop”: 0,
“PictureChromaSmoothCustom”: “”,
“PictureChromaSmoothPreset”: “off”,
“PictureChromaSmoothTune”: “none”,
“PictureCombDetectCustom”: “”,
“PictureCombDetectPreset”: “default”,
“PictureDARWidth”: 0,
“PictureDeblockCustom”: “strength=strong:thresh=20:blocksize=8”,
“PictureDeblockPreset”: “off”,
“PictureDeblockTune”: “medium”,
“PictureDeinterlaceCustom”: “”,
“PictureDeinterlaceFilter”: “decomb”,
“PictureDeinterlacePreset”: “default”,
“PictureDenoiseCustom”: “”,
“PictureDenoiseFilter”: “off”,
“PictureDenoisePreset”: “”,
“PictureDenoiseTune”: “none”,
“PictureDetelecine”: “off”,
“PictureDetelecineCustom”: “”,
“PictureForceHeight”: 0,
“PictureForceWidth”: 0,
“PictureHeight”: 1080,
“PictureItuPAR”: false,
“PictureKeepRatio”: true,
“PictureLeftCrop”: 0,
“PictureLooseCrop”: true,
“PictureModulus”: 2,
“PicturePAR”: “off”,
“PicturePARHeight”: 1,
“PicturePARWidth”: 1,
“PictureRightCrop”: 0,
“PictureRotate”: “disable=1”,
“PictureSharpenCustom”: “”,
“PictureSharpenFilter”: “off”,
“PictureSharpenPreset”: “”,
“PictureSharpenTune”: “”,
“PictureTopCrop”: 0,
“PictureWidth”: 1920,
“PresetDescription”: “High quality H.264 video (up to 1080p30), AAC stereo audio, and Dolby Digital (AC-3) surround audio, in an MP4 container.”,
“PresetName”: “PLEX”,
“SubtitleAddCC”: false,
“SubtitleAddForeignAudioSearch”: true,
“SubtitleAddForeignAudioSubtitle”: false,
“SubtitleBurnBDSub”: true,
“SubtitleBurnBehavior”: “none”,
“SubtitleBurnDVDSub”: true,
“SubtitleLanguageList”: [
“deu”
],
“SubtitleTrackSelectionBehavior”: “none”,
“Type”: 1,
“UsesPictureFilters”: true,
“UsesPictureSettings”: 1,
“VideoAvgBitrate”: 9000,
“VideoColorMatrixCodeOverride”: 0,
“VideoEncoder”: “x264”,
“VideoFramerate”: “auto”,
“VideoFramerateMode”: “cfr”,
“VideoGrayScale”: false,
“VideoLevel”: “4.0”,
“VideoOptionExtra”: “”,
“VideoPreset”: “slow”,
“VideoProfile”: “high”,
“VideoQSVAsyncDepth”: 4,
“VideoQSVDecode”: false,
“VideoQualitySlider”: 20.0,
“VideoQualityType”: 2,
“VideoScaler”: “swscale”,
“VideoTune”: “”,
“VideoTurboTwoPass”: false,
“VideoTwoPass”: true,
“x264Option”: “”,
“x264UseAdvancedOptions”: false
}
],
“VersionMajor”: 42,
“VersionMicro”: 0,
“VersionMinor”: 0
}
Diesen Inhalt einfach unter “PLEX.json” speichern mit einem Editor der Wahl.
Ok, und was macht es nun genau? Das hier! :
Mittels
./dasplexumwandlungsskript.sh /dein/pfad/zur/bibliothek
wird der GESAMTE Inhalt nach jeglichen Dateien durchsucht. Und jeglicher Inhalt wird nach h264 mp4 konvertiert. Das Bild (wenn höher) wird auf 1920x1080 runtergerechnet. Es wird nichts beschnitten und es wird auch das Bildverhältniss beibehalten. Das heißt es kann sein das nicht genau 1920x1080 rauskommt, sondern 1920x1033 oder so. Sollte die Auflösung kleiner sein als 1920x1080, wird die Auflösung nicht runtergerechnet, sondern bleibt Original. Bildwiederholungsrate wird vom Original übernommen. Constantbitrate, und RF20. Genaueres zu Qualität kann man dem Profil entnehmen mittels Handbrake. Entspricht zu 99% dem “High 1080p Sourround” Profil.
Der Ton wird ebenfalls konvertiert. Und zwar die “unknown” und “Deutsch” Spuren. Und zwar einmal in Stereo (die erste Spur) und einmal nach 5.1 (die zweite Spur). Erste Spur ist AAC und zweite AC3 (Dolby Digital).
Deutsche Untertiteln werden nur hinzugefügt, wenn diese erzwungen wird.
Ich habe bestimmt einiges noch vergessen. Daher bitte entnehmt dies aus dem Profil “PLEX.json”. Diesen habe ich mit Handbrake selbst erstellt, und dann als JSON exportiert damit HandbrakeCLI dies nutzen kann.
Aber nochmal: WARNUNG! DIESES SKRIPT KONVERTIERT ALLES WAS ES FINDEN KANN REKRUSIV!!! EGAL OB ES SCHON MP4 IST ODER BEREITS RICHTIGE CODECS IN DER QUELLE GENUTZT WERDEN!! UND ENTFERNT UNWIDERRUFLICH DAS ORIGINAL!!!
Aber nun wirklich, nochmal: Das heißt natürlich in dem jeweiligen Ordner sollten sich keine Bilder, idx dateien, txt’s oder what ever liegen. Sondern nur Sachen die HandbrakeCLI auch verarbeiten kann. Bei mir befanden/befinden sich nur mkv’s.
Nun, jetzt lasse ich mein Rechenknecht die nächsten 15 Tage am Stück 24/7 weiter fleißig konvertieren… 