Прогресс Zenity: никакое окно

Бит вопроса о новичке, я знаю...

Я хочу к пакетному преобразованию свои видео к h265, который я могу сделать с помощью Zernity и ffmpeg, но у меня есть немного проблемы с индикатором выполнения, в котором нет того.

Фактический "мясистый бит" работает замечательно, с или без последней части, которая является:

zenity --pulsate --title "Processing " --text "${filename} " --pulsate --auto-close --auto-kill

Целый код:

d1="$(zenity  --file-selection --title="Bulk Move    Choose starting directory"  --directory)"
d2="$(zenity  --file-selection --title="Bulk Move    Choose destination directory"  --directory)"
if [ "$?" != 0 ]; then
   exit
fi
##
for i in "$d1"/*
  do
## filter out the actual file name
  filename=$(basename -- "$i")
## the meaty bit
ffmpeg -i "$i" -c:v libx265 -preset medium -x265-params crf=28 -c:a aac -strict experimental -b:a 128k "$d2"/"${filename%.*}.mkv" ; done | zenity --pulsate --title "Processing " --text "${filename} " --pulsate --auto-close --auto-kill

Единственным путем я знаю, что это работает, или вызовом сценария на командной строке и наблюдении ffmpeg (очень подробный) вывод, или контролем использования ЦП.

Кто-то может указать на меня в правильном направлении?

Спасибо

2
задан 18 October 2019 в 02:56

1 ответ

Вы не проверяете, был ли начальный каталог прерван только целевой каталог. Также можно сократиться if - then - fi как это:

d1="$(zenity  --file-selection --title="Bulk Move    Choose starting directory"  --directory)"
[[ "$?" != 0 ]] && exit
d2="$(zenity  --file-selection --title="Bulk Move    Choose destination directory"  --directory)"
[[ "$?" != 0 ]] && exit

Это дает дважды сумму аварийного прекращения работы, сверяющегося 1 меньше строки кода.

Для тестирования индикатора выполнения в любой системе используют это:

$ for i in ./* ; do echo $i ; sleep .1 ;  done | zenity --pulsate --title "Processing " --text "${filename} " --pulsate --auto-close --auto-kill

--pulsate is not supported for this dialogue

А-ч там является сообщением об ошибке! --progress пропавший без вести должен сказать zenity индикатор выполнения желаем. Таким образом, рабочий сценарий был бы:

d1="$(zenity  --file-selection --title="Bulk Move    Choose starting directory" \
    --directory)"
[[ "$?" != 0 ]] && exit

d2="$(zenity  --file-selection --title="Bulk Move    Choose destination     directory" \
    --directory)"
[[ "$?" != 0 ]] && exit

for i in "$d1"/* ; do

    ## filter out the actual file name
    filename=$(basename -- "$i")
    ## the meaty bit
    ffmpeg -i "$i" -c:v libx265 -preset medium -x265-params crf=28 \
        -c:a aac -strict experimental -b:a 128k "$d2"/"${filename%.*}.mkv"

done | zenity --progress --pulsate --title "Processing " \
              --text "ffmpeg - convert files" \
              --pulsate --auto-close --auto-kill

Передача ${filename} кому: --text опция не обновит дисплей с каждым обработанным именем файла. Если Вы захотите это, то необходимо будет переключиться на yad (Еще одно Диалоговое окно), который является перегруженной версией zenity:

yad-progress-bar.gif

Хотя исходный код появляется в .gif можно скопировать и вставить в собственном сценарии от этого Вопросы и ответы:

2
ответ дан 2 December 2019 в 03:26

Другие вопросы по тегам:

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