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

среда, 30 октября 2019 г.

запись cli asciinema

asciinema топаем https://docs.asciinema.org/getting-started/ регаемся (что бы было что сохранить или постримить можно )

в терминале пишем asciinema rec - получаем инфо что запись пошла
по окончанию шаманства пишем  exit - получаем предложение  

asciinema: recording finished
asciinema: press <enter> to upload to asciinema.org, <ctrl-c> to save locally

ну и в итоге посылаем кому нибудь ссылку на "щас покажу как это делать" в терминале 

четверг, 11 июля 2019 г.

вторник, 30 апреля 2019 г.

монитор охранника

задача:
- есть сарай и монитор , на нем надо показывать 4 камеры и если что то подвисло перезапустить плеер

2 скрипта
- первый (запускается из под пользователя) просто запускает окошки  плеера (mpv) без рамочек , предварительно померив экран и поделив его на 4 части (за это отвечает xdoottool)
- второй (запускается из под рута) читает первый скрипт цепляет из него ip с которых идет поток и пишет его в файл (если в файле строк меньше чем положено - поток перезапускается)

4mpl.sh 


#!/bin/bash
# тут указываем какие стримы будем вещать
scriptname=4mpl.sh
str1=rtsp://root:passsword@212.191.253.53:554/live/sub
str2=rtsp://root:passsword@212.191.253.61:554/live/sub
str3=rtsp://root:passsword@122.191.253.88:554/live/sub
str4=rtsp://root:passsword@212.191.253.18:554/live/sub
# глядим что за экран у нас, вдруг сменили и пригодиться в положениях плеера
export DISPLAY=':0.0'
xwin=`xdotool getdisplaygeometry | awk {'print $1'}`
ywin=`xdotool getdisplaygeometry | awk {'print $2'}`
# прячим мышку? помоему не работает
xdotool mousemove "$xwin $ywin"
# это статусбар убунту, мешается по умолчанию на 24 пикселя, сука
Barsize=24
# тут мы делем полученый размер экрана на 4 равных части за вычетом бара
let "wsizex=$xwin / 2"
let "wsizey=$ywin / 2 - ($Barsize / 2)"
wsize="$wsizex""x""$wsizey"
let "wsizeyY=$wsizey + $Barsize "
# водим переменные позиций окон
gpos1="+0+$Barsize"
gpos2="+$wsizex+$Barsize"
gpos3="+$wsizex+$wsizeyY"
gpos4="+0+$wsizeyY"
# гавнякаем переменными в syslog - тупо для дебага, можно удалить
logger "$scriptname str1=$str1"
logger "$scriptname str2=$str2"
logger "$scriptname str3=$str3"
logger "$scriptname str4=$str4"
logger "$scriptname xwin=$xwin"
logger "$scriptname ywin=$ywin"
logger "$scriptname wsize=$wsize"
logger "$scriptname gpos1=$gpos1"
logger "$scriptname gpos2=$gpos2"
logger "$scriptname gpos3=$gpos3"
logger "$scriptname gpos4=$gpos4"
# из соседнего скрипта тисипидампим ip переменных str и складываем
# в файл, если в файле меньше 2 х строк - потока нет, перезапускаемся
a=1
b=`cat /home/filalex/dump1 | wc -l `
c=`cat /home/filalex/dump2 | wc -l `
d=`cat /home/filalex/dump3 | wc -l `
e=`cat /home/filalex/dump4 | wc -l `
# тут я не понял как работет $переменная$а_тут_вторая_которая_подставляется_первой поэтому говнокод
if  [ "$b" -gt "$a" ]
    then
    logger "$scriptname поток $str1 в норме, что то прилетело работаем дальше "
    else
    logger "$scriptname поток $str1 упал, перезапускаем плеер"
    mpv -cache=32 -border=no -geometry "$wsize"$gpos1 $str1 &
fi
if  [ "$c" -gt "$a" ]
    then
    logger "$scriptname поток $str2 в норме, что то прилетело работаем дальше "
    else
    logger "$scriptname поток $str2 упал, перезапускаем плеер"
    mpv -cache=32 -border=no -geometry "$wsize"$gpos2 $str2 &
fi
if  [ "$d" -gt "$a" ]
    then
    logger "$scriptname поток $str3 в норме, что то прилетело работаем дальше "
    else
    logger "$scriptname поток $str3 упал, перезапускаем плеер"
    mpv -cache=32 -border=no -geometry "$wsize"$gpos3 $str3 &
fi
if  [ "$e" -gt "$a" ]
    then
    logger "$scriptname поток $str4 в норме, что то прилетело работаем дальше "
    else
    logger "$scriptname поток $str4 упал, перезапускаем плеер"
    mpv -cache=32 -border=no -geometry "$wsize"$gpos4 $str4 &
fi


strdumper.sh 

#!/bin/bash
for i in {1..4}
do
dumphost=`grep str$i /home/filalex/4mpl.sh | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}"`
timeout 5 tcpdump -i enp1s0 -n -q host $dumphost > /home/filalex/tdump$i
cp /home/filalex/tdump$i /home/filalex/dump$i`
done


enp1s0 - заменить на свой интерфейс 
filalex - заменить на пользователя 
в корон добавляем 

*/1 * * * * root /home/filalex/strdumper.sh
*/1 * * * * filalex /home/filalex/4mpl.sh

примерно как выглядит строка плеера 
mpv -cache=32 -border=no -geometry 640x512+0+512 rtsp://login:password@ip.190.23.46/1/2

так выглядит в процессах 

а так на мониторе

кому хачу программу чтоб поставить и забыть  - курим сыль
https://securityrussia.com/blog/vms-vs-cms.html  иил гуглим herospeed или iSpy 

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

запись видео с экрана

случайно наткнулся тут на командочку

ffmpeg -f x11grab -r 20 -s 1920x1080 -i :0.0 /tmp/outputFile2.mkv


ранее искал, попадались варианты через vlc, но как правило то не получалось, то качество не радовало, то просто тупило,

вариант вменяемый  (проц не уходит в топ) если
- не ставить частоту под 30 кадров
- делать запись с единственного монитора (если их 2)

суббота, 13 февраля 2016 г.

вырезать кусок видео

mencoder -ss 8542 -frames 6936 -o /home/filalex/sister.mp4 -oac pcm -ovc copy /home/filalex/Загрузки/1.mp4

начать с 8542 секунды, вырезать 6936 фреймов (24 фрейма в секунду)  файл будет называться sister.mp4 , аудио и видео копируем из оригинала , работаем с файлом 1.mp4
upd: не мешает поглядеть оригинал, частенько попадается и 30.000 fps