BASH 4 :tee для файла журнала, переход на /dev/null

вы можете использовать ffmpeg, чтобы преобразовать видео в h264.

ffmpeg -i input.mp4 -c:v libx264 -preset slower -crf 28 -c:a copy -maxrate 320 -minrate 20 output.mp4 Вы можете изменить предустановку maxrate minrate и crf, чтобы получить хорошее качество.

для 720p я бы предложил максимальную скорость 1500 -2500 в зависимости от того, много ли в видео движения.

для crf чем ниже, тем лучше качество за счет большей вычислительной мощности, которую необходимо выполнить за разумное время.

0
09.09.2021, 21:55
1 ответ

Чтобы обработать либо файл журнала, доступный для записи, либо файл журнала, который еще не существует, но находится в доступном для записи каталоге, наиболее надежным подходом является попытка:

LOG_FILE=loggit.log
( printf "" >>"$LOG_FILE" ) 2>/dev/null || LOG_FILE=/dev/null

#...
echo "Stuff to be logged" >>"$LOG_FILE"
some | pipeline >>"$LOG_FILE"

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

some | pipeline | tee -a "$LOG_FILE"

Если вы хотите делать разные вещи в зависимости от того, есть ли у вас значимый файл журнала или нет, мы можем справиться с этим с помощью более сложного сценария :вы можете установитьLOG_FILE=(т.е. ничего )во фрагменте выше, а затем проверьте его в своем более позднем коде:

[[ -n "$LOG_FILE" ]] && echo "Stuff to be logged" >>"$LOG_FILE"

и вы можете выполнять код безоговорочно, сохраняя журнал, если это возможно, с такой конструкцией:

some | pipeline >>"${LOG_FILE:-/dev/null}"
some | pipeline | tee -a "${LOG_FILE:-/dev/null}"

Также см. мой ответ на другой вопрос Способы добавления текста в файл о способе избежать повторения "${LOG_FILE:-/dev/null}"каждый раз.

2
10.09.2021, 06:50

Теги

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