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

ffmpeg bash. замена пробелов в имени файла

#!/bin/bash
TIME1=$(date +"%s")
echo "";
echo " -vcodec libx264 -b:v 2550K -crf 23 -s 1280x720"
echo " -threads auto -thread_type frame -c:a aac -b:a 128k -strict -2"
echo "";
ls | grep ".avi"
echo "";
#ls | grep " "
# Заменяет пробелы символом подчеркивания в именах файлов в текущем каталоге.
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 ".avi"
#
echo -en "\033[32m Введи число = мах(18-26)мин Качество: \033[40m"; echo "";
read CRF
echo "";
echo -en "\033[37;1;41m Конвертировать видео из .avi в .mp4 ? (y/n) \033[0m"; echo "";
read item
case "$item" in
    y|Y) echo -en "\E[1;40;32m конвертирование в .mp4 ... \E[1;40;32m"; echo -en "\E[0m"; echo "";
    for i in *.avi; do
# -crf 18-26
        ffmpeg -i $i -vcodec libx264 -b:v 2550K -crf $CRF -s 1280x720 \
         -threads auto -thread_type frame -c:a aac -b:a 128k -strict -2 -y $i.mp4 2> /tmp/ffname;
        cat /tmp/ffname | grep -E "(Stream \#0:0)|(Stream \#0:1)" | sed -n '1,2p'
    done
echo "";
    for i in *.mp4; do
                ffmpeg -i $i 2> /tmp/ffname;
                cat /tmp/ffname | grep -E "(Stream \#0:0)|(Stream \#0:1)"
        done
        ;;
    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 -en "\E[1;40;32m $X минут \E[1;40;32m"; echo "";
fi

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

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

h265.sh

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