понедельник, 30 января 2017 г.

ffmpeg склеить 2 изображения

#!/bin/bash
TIME1=$(date +"%s")
echo "";
echo -en "\033[37;1;41m ВНИМЕНИЕ! Изображения ОБЯЗАТЕЛЬНО     \033[0m"; echo "";
echo -en "\033[37;1;41m ВНИМЕНИЕ! добжны быть ОДНОГО РАЗМЕРА! \033[0m"; echo -en "\E[0m";
echo "";
ls | grep ".jpg"; echo "";
# Заменяет пробелы символом подчеркивания в именах файлов в текущем каталоге.
ONE=1                     # единственное или множественное число (см. ниже).
number=0                  # Количество переименованных файлов.
FOUND=0                   # Код завершения в случае успеха.
for filename in *         # Перебор всех файлов в текущем каталоге.
do
     echo "$filename" | grep -q " "         #  Проверить — содержит ли имя файла
     if [ $? -eq $FOUND ]                   #+ пробелы.
     then
       fname=$filename                      # Удалить путь из имени файла.
       n=`echo $fname | sed -e "s/ /_/g"`   # Заменить пробелы символом подчеркивания.
       mv "$fname" "$n"                     # Переименование.
       let "number += 1"
     fi
done
if [ "$number" -eq "$ONE" ]
then
 echo "$number файл переименован."
else
 echo "Переименовано файлов: $number"
fi
#
echo "";
ls | grep ".jpg"
echo " Ввести имена 2-х файлов изображений:";
echo -en "\033[32m Введи img1 : \033[40m"; echo "";
read IMG1
echo -en "\033[32m Введи img2 : \033[40m"; echo "";
read IMG2
echo "";
echo -en "\033[37;1;41m Собрать анимацию ? (y/n) \033[0m"; echo "";
read item
case "$item" in
    y|Y) echo -en "\E[1;40;32m склеивание картинок ... \E[1;40;32m"; echo "";
        ffmpeg -loop 1 -i $IMG1.jpg -loop 1 -i $IMG2.jpg -filter_complex \
     "[0:0]format=rgba,trim=duration=10,fade=in:st=0:d=1:alpha=1,fade=out:st=4:d=1:alpha=1[a];[1:0]format=rgba,trim=duration=10,fade=in:st=5:d=1:alpha=1,fade=out:st=9:d=1:alpha=1[b];[a][b]overlay=[out1]" \
     -map [out1] -y -qscale 25 -vcodec libx264 -b:v 2550K -crf 26 -s "1280x720" \
     -threads auto -thread_type frame -strict -2 /home/$USER/anim_$(date +%Y-%m-%d_%H-%M-%S).mp4 2>/dev/null
        ;;
    n|N) echo -en "\033[32m Ввели «n», завершаем... \033[40m"; echo "";
        exit 0
        ;;
    *) echo "Ничего не ввели. Выполняем действие по умолчанию..."
        exit 0
        ;;
esac
# конец скрипта. записать контрольное время
TIME2=$(date +"%s")
# вычесть стоп-старт
TIME=$(($TIME1 - $TIME2))
# убрать не понятно откуда взявшийся символ "минус"
TIME0=$(echo "$TIME" | sed 's/^.//')
# при значениях менее 60, выдасть в секундах:
if [ "$TIME0" -lt "60" ];
        then echo "$TIME0 секунд" #YES
        else
 X=$(( TIME0 / 60 ));
# при значениях больше 60, разделит на 60 и подаст как минуты:
 echo "$X минут"
fi

Комментариев нет:

Отправить комментарий

h265.sh

#!/bin/bash file="../mp4" if [ -d $file ]; then         echo "  Директория существует :-) "         for i in *.mp4; do f...