Ist es möglich, die HandbrakeCli-Ausgabe zu pfeifen und zu filtern oder sie unter Windows zum Schweigen zu bringen

542
Euphoria

Ich habe ein Video-Archiv mit persönlichen Erinnerungen in vielen Ordnern. Die Videodateien haben mehrere Dateitypen und das Verhältnis von Qualität zu Größe ist schrecklich (einige sind sogar 20 MB / s für ein 720p-Video.

Ich möchte jedes Video in 720p konvertieren und durch die konvertierte Datei ersetzen, jedoch nur, wenn die Konvertierung erfolgreich ist.

Hier ist mein Handbrake-Preset nach Json exportiert:

{ "PresetList": [ { "AlignAVStart": true, "AudioCopyMask": [ "copy:aac", "copy:ac3", "copy:dtshd", "copy:dts", "copy:mp3", "copy:truehd", "copy:flac", "copy:eac3" ], "AudioEncoderFallback": "ac3", "AudioLanguageList": [], "AudioList": [ { "AudioBitrate": 128, "AudioCompressionLevel": 0.0, "AudioEncoder": "av_aac", "AudioMixdown": "stereo", "AudioNormalizeMixLevel": false, "AudioSamplerate": "44.1", "AudioTrackQualityEnable": false, "AudioTrackQuality": -1.0, "AudioTrackGainSlider": 0.0, "AudioTrackDRCSlider": 0.0 } ], "AudioSecondaryEncoderMode": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [], "Default": false, "FileFormat": "av_mp4", "Folder": false, "FolderOpen": false, "Mp4HttpOptimize": false, "Mp4iPodCompatible": false, "PictureAutoCrop": true, "PictureBottomCrop": 0, "PictureLeftCrop": 0, "PictureRightCrop": 0, "PictureTopCrop": 0, "PictureDARWidth": 240, "PictureDeblock": 4, "PictureDeinterlaceFilter": "decomb", "PictureCombDetectPreset": "default", "PictureCombDetectCustom": "", "PictureDeinterlacePreset": "default", "PictureDenoiseCustom": "", "PictureDenoiseFilter": "off", "PictureDenoisePreset": "light", "PictureDenoiseTune": "none", "PictureSharpenCustom": "", "PictureSharpenFilter": "off", "PictureSharpenPreset": "medium", "PictureSharpenTune": "none", "PictureDetelecine": "off", "PictureDetelecineCustom": "", "PictureItuPAR": false, "PictureKeepRatio": true, "PictureLooseCrop": false, "PictureModulus": 2, "PicturePAR": "auto", "PicturePARWidth": 1, "PicturePARHeight": 1, "PictureRotate": "0:0", "PictureForceHeight": 0, "PictureForceWidth": 0, "PresetName": "myarchivesd", "Type": 1, "UsesPictureFilters": false, "UsesPictureSettings": 2, "SubtitleAddCC": false, "SubtitleAddForeignAudioSearch": true, "SubtitleAddForeignAudioSubtitle": false, "SubtitleBurnBehavior": "foreign", "SubtitleBurnBDSub": false, "SubtitleBurnDVDSub": false, "SubtitleLanguageList": [], "SubtitleTrackSelectionBehavior": "none", "VideoAvgBitrate": 0, "VideoColorMatrixCode": 0, "VideoEncoder": "x264", "VideoFramerateMode": "vfr", "VideoGrayScale": false, "VideoHWDecode": false, "VideoScaler": "swscale", "VideoPreset": "fast", "VideoTune": "", "VideoProfile": "main", "VideoLevel": "4.1", "VideoOptionExtra": "", "VideoQualityType": 2, "VideoQualitySlider": 25.0, "VideoQSVDecode": false, "VideoQSVAsyncDepth": 4, "VideoTwoPass": false, "VideoTurboTwoPass": false, "x264Option": "level=4.1:vbv-bufsize=62500:vbv-maxrate=50000:rc-lookahead=30:ref=5:bframes=5:b-adapt=2:direct=auto:me=dia:subme=9:merange=15:trellis=0", "x264UseAdvancedOptions": true } ], "VersionMajor": "11", "VersionMicro": "0", "VersionMinor": "0" } 

Bisher ist es mir gelungen, mit HandbrakeCli die richtigen Argumente für die Konvertierung zu finden. Mit der Voreinstellung, die ich mit dem HandbrakeGui abgeglichen habe (ergibt nahezu YIFY-Qualität):

HandBrakeCLI.exe --maxHeight 720 --maxWidth 1280 --preset-import-file "mypreset.json" -Z "mypreset" -i "input.mp4" -o "output.mp4". 

Aktualisieren:

Dies ist meine aktuelle Version der Batchdatei.

  1. Zuerst müssen Sie den Pfad zu Ihrer hanbrakecli.exeund Ihrer preset.jsonDatei in die Batch-Datei unten einfügen.
  2. Kopieren Sie dann die Batchdatei in das Stammverzeichnis Ihres Videoarchivs und doppelklicken Sie darauf.

Hinweis: Achten Sie auf die .DATErweiterung. Kopieren Sie diesen Stapel nur in einen Ordner, in dem sich nur Videodateien und keine App-Daten befinden.

Hier ist der Inhalt der Batchdatei:

@echo off &setlocal for /R %%I in (*.DAT *.mpg *.mpeg *.wmv *.3gp *.mov *.avi *.mkv *.mp4) do ( set "fpath=%%~dpnI" set "fname=%%~nI" setlocal enabledelayedexpansion if exist "%%~dpnI.unfinished.mp4" ( echo "Found unfinished conversion of %%~nI. Deleting leftover files ..." del /F "%%~dpnI.unfinished.mp4" ) if "!fname!"=="!fname:.converted=!" ( echo "converting %%I ..." "[path to HandbrakeCli.exe]" --maxHeight 720 --maxWidth 1280 --preset-import-file "[path to your preset.json]" ^ -Z "[your preset name]" -i "%%I" -o "%%~dpnI.unfinished.mp4" if exist "%%~dpnI.unfinished.mp4" ( echo "conversion of %%I succeded. deleting the source file..." del /F "%%~dpnxI" move /Y "%%~dpnI.unfinished.mp4" "%%~dpnI.converted.mp4" )else ( echo "conversion of %%I was not successful. Keeping the source file!" if exist "%%~dpnI.unfinished.mp4" ( del /F "%%~dpnI.unfinished.mp4" ) ) )else ( echo "We already have %%I. No need to convert it again!" ) ) endlocal PAUSE 

Was es tut, ist:

  1. Es sucht nach jeder Datei mit üblichen Filmerweiterungen.
  2. prüft, ob es zuvor erfolgreich konvertiert wurde oder nicht (über ein Namensmuster).
  3. beginnt mit dem Konvertieren und setzt die Ausgabedatei in das Eingabedateiverzeichnis (wobei der Befehl hanbrakecli für die Datei ausgeführt wird)
  4. prüft auf erfolgreiche Konvertierung (durch Benennungsmuster)
  5. Entfernt die Eingabedatei.

Meine aktuellen Herausforderungen sind: Die Ausgabe des Handbrakecli-Befehls ist super wortreich und hässlich. Es wäre besser, wenn nur der Konvertierungsfortschritt und die verbleibende Zeit oder sogar keine Eingabe ausgegeben wird.

Ist es möglich, den Handbremsausgang zu pfeifen und zu filtern oder zum Schweigen zu bringen?

0
Ich habe versucht, | | findstr my string "nur bestimmte Zeilen herauszufiltern. es funktioniert in anderen Befehlen, aber nicht in ** handbrakecli **. Warum das? Wird die Handbremse an _CONSOLE_ statt an _Standard Output_ ausgegeben? Euphoria vor 5 Jahren 0

0 Antworten auf die Frage