вы можете использовать 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 чем ниже, тем лучше качество за счет большей вычислительной мощности, которую необходимо выполнить за разумное время.
Чтобы обработать либо файл журнала, доступный для записи, либо файл журнала, который еще не существует, но находится в доступном для записи каталоге, наиболее надежным подходом является попытка:
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}"
каждый раз.