Показаны сообщения с ярлыком ffmpeg. Показать все сообщения
Показаны сообщения с ярлыком ffmpeg. Показать все сообщения

вторник, 6 июля 2021 г.

h265.sh

#!/bin/bash

file="../mp4"
if [ -d $file ]; then
        echo "  Директория существует :-) "
        for i in *.mp4; do ffmpeg -i "$i" -c:v libx265 -vtag hvc1 -s 720x480 -r 24 -threads 0 -af "volume=18dB" -crf 30 -ac 2 -strict experimental -c:a aac -b:a 160k "../mp4/${i%.*}.mp4"; done
else
        echo "   Директория не существует ;-( "
        mkdir ../mp4
        for i in *.mp4; do ffmpeg -i "$i" -c:v libx265 -vtag hvc1 -s 720x480 -r 24 -threads 0 -af "volume=18dB" -crf 30 -ac 2 -strict experimental -c:a aac -b:a 160k "../mp4/${i%.*}.mp4"; done
fi
for i in *.avi; do ffmpeg -i "$i" -c:v libx265 -vtag hvc1 -s 720x480 -r 24 -threads 0 -af "volume=18dB" -crf 30 -ac 2 -strict experimental -c:a aac -b:a 160k "../mp4/${i%.*}.mp4"; done
for i in *.mkv; do ffmpeg -i "$i" -c:v libx265 -vtag hvc1 -s 720x480 -r 24 -threads 0 -af "volume=18dB" -crf 30 -ac 2 -strict experimental -c:a aac -b:a 160k "../mp4/${i%.*}.mp4"; done

#-s 1280x720
#-c:a copy
#ffmpeg -i <input> -c:v libx264 -b:v 1M -x265-params pass=1 -f mp4 /dev/null
#ffmpeg -i <input> -c:v libx264 -b:v 1M -x265-params pass=2 <output>.mp4

воскресенье, 20 октября 2019 г.

rec stream mjpg

#!/bin/bash
echo "`date +%H\ %M\ %S\ %N` bash start"
#if ping -c 1 172.28.253.4 2>&1> /dev/null
# then ssh lv@172.28.253.4 '/sh/rec-stream.sh' &
#     echo "`date +%H\ %M\ %S\ %N` lv rec stream start [OK]"
#fi

if ping -c 1 192.168.0.11 2>&1> /dev/null
 then ssh evg@192.168.0.11 '/sh/rec_stream.sh' &
      echo "`date +%H\ %M\ %S\ %N` asus rec stream start [OK]"
fi

#if ls /tmp/ | grep -oE "*.mp4" &>/dev/null
# then rm /tmp/*.mp4
#fi
#echo "`date +%H\ %M\ %S\ %N` rm .mp4 [OK]"

DATA=$(date +%Y-%m-%d_%H-%M-%S_%N)
echo "`date +%H\ %M\ %S\ %N` ffmpeg rec [OK]"

#ffmpeg -i http://127.0.0.1:8000/stream.mjpg -to 0:02 -c:v copy -c:a copy /tmp/$DATA.mp4 2> /dev/null
#echo "`date +%H\ %M\ %S\ %N` ffmpeg stop [OK]"

#if ls /var/www/html/mrtg/ | grep -oE "cam1.jpg" &>/dev/null
# then rm /var/www/html/mrtg/cam1.jpg
#fi
#echo "`date +%H\ %M\ %S\ %N` bash rm jpg [OK]"

ffmpeg -f MJPEG -y -i http://127.0.0.1:8000/stream.mjpg \
 -r 1 -vframes 1 -q:v 1 /var/www/html/mrtg/cam1.jpg 2> /dev/null
echo "`date +%H\ %M\ %S\ %N` frames [OK]"

convert /var/www/html/mrtg/cam1.jpg -background none -fill black -box 'white' -gravity South \
 -pointsize 20 -annotate +0+1050 $DATA /var/www/html/mrtg/cam.jpg
echo "`date +%H\ %M\ %S\ %N` image convert [OK]"

if ping -c 1 192.168.0.11 2>&1> /dev/null
 then scp /var/www/html/mrtg/cam.jpg evg@192.168.0.11:/1TB/.zm/v/$DATA.jpg 2>&1 > /dev/null &
      echo "`date +%H\ %M\ %S\ %N` scp 11 jpg [OK]"
fi
if ping -c 1 172.28.253.4 2>&1> /dev/null
 then scp /var/www/html/mrtg/cam.jpg lv@172.28.253.4:/a/$DATA.jpg 2>&1 > /dev/null &
      echo "`date +%H\ %M\ %S\ %N` scp  4 jpg [OK]"
fi

--------------------------------------------------------------
nano rec_stream.sh asus
#!/bin/bash
if ! ps aux | grep -v color | grep -v grep | grep -E ffmpeg &> /dev/null
 then DATA=$(date +%Y-%m-%d_%H-%M-%S_%N)
   ffmpeg -i http://192.168.0.4:8000/stream.mjpg \
   -to 0:10 -c:v copy -c:a copy /1TB/.zm/v/$DATA.mp4 2> /dev/null
fi

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

ffmpeg запись с экрана

#!/bin/bash
TIME=$(date +%Y.%m.%d_%H:%M:%S)
ffmpeg -f x11grab -s "1920x1080" -i :0.0 -r "30" -f mp4 -vcodec libx264 /home/$USER/Изображения/screencast/screencast_$TIME.mp4 \
& DISPLAY=:0.0 /usr/bin/notify-send -t 10000 "Скринкаст запущен" "ия файла: screencast_$TIME.mp4"

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

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...