Можно ли передать и отфильтровать вывод HandbrakeCli или заставить его замолчать в Windows?

401
Euphoria

У меня есть видеоархив личных воспоминаний, организованных во множество папок. Видеофайлы имеют несколько типов файлов, и соотношение качества и размера ужасно (некоторые даже 20 Мбит / с для видео 720p.

Я хочу преобразовать каждое видео в формат 720p и заменить его преобразованным файлом, но только если преобразование прошло успешно.

Вот мой пресет Handbrake, экспортированный в json:

{ "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" } 

До сих пор мне удалось найти правильные аргументы для преобразования с HandbrakeCli. Используя пресет, который я настроил с помощью HandbrakeGui (дает качество почти YIFY):

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

Обновить:

Это моя текущая версия командного файла.

  1. Сначала вам нужно указать путь к вашему hanbrakecli.exeи вашему preset.jsonфайлу в командном файле ниже.
  2. Затем скопируйте пакетный файл в корневой каталог вашего видеоархива и дважды щелкните по нему.

Примечание: будьте осторожны с .DATрасширением. только скопируйте этот пакет в папку, где есть только видеофайлы, но нет данных приложения.

Вот содержимое пакетного файла:

@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 

Что это делает:

  1. Он ищет каждый файл с общими расширениями фильма.
  2. проверяет, успешно ли он преобразовал его раньше или нет (с помощью шаблона именования).
  3. начинает преобразование и помещение выходного файла в каталог входных файлов (с помощью команды hanbrakecli)
  4. проверяет успешное преобразование (по шаблону именования)
  5. удаляет входной файл

Мои текущие проблемы: Вывод команды handbrakecli очень многословен и безобразен. было бы лучше, если бы он выводил только прогресс конвертации и оставшееся время или вообще не вводил.

Возможно ли передать и отфильтровать выходной сигнал ручного тормоза или заставить его замолчать?

0
Я попытался `| findstr my string`, чтобы отфильтровать только определенные строки. это работает в других командах, но не в ** handbrakecli **. это почему? Ручной тормоз выводит на _CONSOLE_ вместо _Standard Output_? Euphoria 5 лет назад 0

0 ответов на вопрос

Похожие вопросы