LINUX.ORG.RU
ФорумTalks

Видео записывалка для вашего ПеКа

 , slop, , ,


3

3

Я внезапно открыл для себя утилиту slop, очень удобная и полезная в домашних делах. Ага я слоупок.
Надо было записать кусочек экрана несколько раз и удобно выделять мышкой область на экране для записи видео.

Наваял вот, может кому пригодится.

  • Переменная use_recorder задаёт то чем вы ходите записывать
    • ffmpeg
    • recordmydesktop
  • Если передать скрипту аргументы то они прокинутся к утилите записи
    • например record --no-sound если используется recordmydesktop
      • но прокидывайе аргументы с умом рм рф и прочую копипасту туда писать не надо.

Ключи под себя

  • ffmpeg быстро пишет и сразу кодирует без звука.
  • recordmydesktop со звуком и отложенным долгим кодированием

Сам использую нубский recordmydesktop так как вокруг него не надо с бубном бегать по поводу звука (он меня сломан на ПК и чисто программный идёт по сети)

touch $HOME/.local/bin/record
#copy-paste code
chmod +x $HOME/.local/bin/record
  • Прерывать запись через ctrl+C
  • Зависимости в теле написаны какие надо.

Если кажется многословным перепишете на bash, всё можно переписать на bash :)

#!/usr/bin/env lua
-----------------------------------------
-- Depends for recordmydesktop: ogv out
-- apt install lua slop recordmydesktop
-----------------------------------------
-- Depends for ffmpeg: mp4 out
-- apt install lua slop ffmpeg
-----------------------------------------
-- Use ffmpeg or recordmydesktop recorder
--local use_recorder = 'ffmpeg'
local use_recorder = 'recordmydesktop'
-------------------------------------------------------------------------------
local separator = ' '
local arguments = table.concat({...},separator)
local visualfmt = '-b 5 -c 0.5,1.0,0.5,0.8 -o'
local slop_pipe = io.popen('slop -f "%x %y %w %h" '..visualfmt)
local x,y , w,h = slop_pipe:read('*l'):match('(%d+) (%d+) (%d+) (%d+)')
-------------------------------------------------------------------------------
local out_filename = os.date('%Y-%m-%H-%M-%S');
-------------------------------------------------------------------------------
local command = {};
-------------------------------------------------------------------------------
if use_recorder == 'ffmpeg' then
   command = table.concat(
   {
       'ffmpeg ','-f x11grab';
                 '-video_size',w..'x'..h;
                 '-grab_x',x;
                 '-grab_y',y;
                 '-i :0.0';
                 '-framerate 60';
                 '-vcodec libx264';
                  arguments;
                  out_filename..'.mp4';
   },separator)
   print('Run command:\n'..command)
   os.execute(command)
   return 0
end
-------------------------------------------------------------------------------
if use_recorder == 'recordmydesktop' then
   command = table.concat(
   {
       'recordmydesktop','-x='..x;
                         '-y='..y;
                         '--width='..w;
                         '--height='..h;
                         '--fps=60';
                          arguments;
                         '-o',out_filename..'.ogv';
   },separator)
   print('Run command:\n'..command)
   os.execute(command)
   return 0
end
-------------------------------------------------------------------------------
print("[ERROR]: Bad 'use_recorder' value.")
return 1

Вроде мелочёвка, а очень и очень удобно.
Всё. Досвиданья.

★★★★★

Последнее исправление: LINUX-ORG-RU (всего исправлений: 6)

В смысле? В гноме нажимаешь на Print Screen, выделяешь нужную область и жмешь красную кнопащку. Причем работает в вяленом, а не вот это вот x11grab

cobold ★★★★★
()
Последнее исправление: cobold (всего исправлений: 1)
Ответ на: комментарий от cobold

Осталось только всем линуксоидам добровольно принудительно установить гном и валянд, ага :)
Пользуйся тем что тебе удобно, я просто выложил, кому пригодится тот возьмёт, кому нет, тому и не надо. :D

P.S. Не проверял, но recordmydesktop тоже тоже должен в вяленом вроде работать.

LINUX-ORG-RU ★★★★★
() автор топика
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от cobold

А разве нет? Всякий, у кого установлен mpv, является счастливым обладателем и пакета lua. )

Vlc, кстати, тоже тянет это пакет.

krasnh ★★★★
()
Последнее исправление: krasnh (всего исправлений: 2)
Ответ на: комментарий от cobold

Ты вообще предложил целый гном накатить вместо 250 килобайтной луа :D А так, у кого есть у того есть, у кого нет те установят, кто не установит тот под себя на своём домашнем языке перепишет.

У тебя весь гном javascript работает (как и у меня корица), и чооо? И чо вот и чооо :D

LINUX-ORG-RU ★★★★★
() автор топика
Ответ на: комментарий от krasnh

Да не, mvp луа как библиотеку тянет, но если очень захочется можно его как интерпретатор lua использовать :D Впрочем как и всё что угодно куда она встроена, nmap,darktable,mpv,vim и так далее и так далее.

LINUX-ORG-RU ★★★★★
() автор топика
Ответ на: комментарий от cobold

Так тебе и не надо, у тебя из коробки IDE позволяет записывать видео через селект области мышкой.

LINUX-ORG-RU ★★★★★
() автор топика
Ответ на: комментарий от cobold

Хз, я сужу по арчу, lua в зависимостях у этих плееров.

krasnh ★★★★
()

recordmydesktop

так было уже здесь такое - из плюсов мало жрет пока пишет, но есть минус - надо подождать после окончания записи пока кодирует видео, если видео длинное - ждать придется очень долго, в итоге я поигрался с этим и вернулся к старому варианту с ffmpeg

amd_amd ★★★★★
()
Ответ на: комментарий от amd_amd

Да, но у меня потому и два варианта, ffmpeg если при записи комп загружен даёт рваную картинку, так как кодирует в процессе. От того когда надо по быстрому то он, когда торопится некуда то recordmydesktop, зато во время записи ничего не грузится. Тупо две копии скрипта валяются recordr и recordf и норм.

Хотя длинное видео recordmydesktop кодирует долго прям кабзда конечно.

LINUX-ORG-RU ★★★★★
() автор топика
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от amd_amd

Ну мне вяленый пока не особо интересен. Хотя недавно пробовал cinnamon под вайландом запустить, ну, оболочка работает, программы особо не тыкал, что-то работает, наверное под xwayland половина. Так как анимации у меня отключены, на вид никакой разницы, ну кроме той что куча всего не работает родного, буфер обмена, зачем то запускается ещё один аплет сети и ещё десяток таких мелочей, а при выходе из сесии крашится (но этого не видно) и в хомяке core.out для отладки валяется. В общем ничего особо интересного пока, ну разве что проблемы разгребать. Хотя если под чистой оболочкой запустить и не иметь желания всякие иксовые фичи использовать, может и норм.

так было уже здесь такое

Здесь всё навреное уже было. Но про slop я не знал (или забыл), а из коробки у утилит записи возможности выделения нет как у scrot скриншотилки

LINUX-ORG-RU ★★★★★
() автор топика
Последнее исправление: LINUX-ORG-RU (всего исправлений: 3)
Ответ на: комментарий от LINUX-ORG-RU

про slop я не знал

в чего так длинно? нельзя ли в одну строчку прикрутить по аналогии с этим wf-recorder -f ~/$(date +"%F_%T").mp4 -g "$(slurp)" оно кстати то же выделяет

amd_amd ★★★★★
()
Ответ на: комментарий от question4

Она

dron@gnu:~$ apt show slop
Package: slop
Version: 7.6-4
Priority: optional
Section: x11
Maintainer: Jakob Haufe <sur5r@debian.org>
Installed-Size: 288 kB
Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.0), libicu72 (>= 72.1~rc-1~), libslopy7.6, libstdc++6 (>= 11)
Homepage: https://github.com/naelstrof/slop

LINUX-ORG-RU ★★★★★
() автор топика
Ответ на: комментарий от question4

Ой, а там аналог моего говокода, но в 2 строчки на баше, а не в 100500 строк на луа гыыы

#!/bin/bash
slop=$(slop -f "%x %y %w %h %g %i") || exit 1
read -r X Y W H G ID <<< $slop
ffmpeg -f x11grab -s "$W"x"$H" -i :0.0+$X,$Y -f alsa -i pulse ~/myfile.webm

Но я её через apt нашёл и на примеры даже не смотрел… Ну и ладна :D Путь будут разные пути реализации применения и так и сяк и на том и на этом.

LINUX-ORG-RU ★★★★★
() автор топика
Последнее исправление: LINUX-ORG-RU (всего исправлений: 3)
Ответ на: комментарий от LINUX-ORG-RU
#!/bin/bash
slop=$(slop -f "%x %y %w %h %g %i") || exit 1
read -r X Y W H G ID <<< $slop
ffmpeg -f x11grab -s "$W"x"$H" -i :0.0+$X,$Y -f alsa -i pulse ~/myfile.webm

у меня с видео не работает - просит выделить, выделяю, но снимает целый экран, а не выделеную область… со скриншотами работает нормально, но это значительно жирнее привычного scrot -s - плюс лишь в том что линия выделения не лагает на мелких выделениях.

amd_amd ★★★★★
()
Ответ на: комментарий от amd_amd

Может bash не тот, read не тот, это ‘<<<’ не то ещё чего не то. Можно через print/echo глянуть где X,Y,W,H пустые появляются. Мне лень, то что в шапке работает и ладно, я как есть от сюда https://github.com/naelstrof/slop притащил

LINUX-ORG-RU ★★★★★
() автор топика
Ответ на: комментарий от LINUX-ORG-RU

Может bash не тот

да не это я немного нарукожопил во время велосипедостроения, вот так работает - жиманул горячую, выделил, пошла запись, жиманул горячую еще раз - запись прервалась и сохранилось видео.

#!/bin/bash
fuser -sk -SIGINT "$0"
test "$1" = off && exit 0
[ "${FLOCKER}" != "$0" ] && exec env FLOCKER="$0" flock -enx "$0" "$0" "$@" || :
slop=$(slop -f "%x %y %w %h %g %i") || exit 1
read -r X Y W H G ID <<< $slop
ffmpeg -f x11grab -s "$W"x"$H" -i :0.0+$X,$Y ~/$(date +"%F_%T").mp4
amd_amd ★★★★★
()
Ответ на: комментарий от dataman

qt5 за собой тянет

$ sudo xbps-install ssr

Name          Action    Version           New version            Download size
glu           install   -                 9.0.3_1                161KB 
qt5-core      install   -                 5.15.11+20231124_3     2441KB 
qt5-dbus      install   -                 5.15.11+20231124_3     209KB 
qt5-network   install   -                 5.15.11+20231124_3     746KB 
qt5-gui       install   -                 5.15.11+20231124_3     4090KB 
qt5-widgets   install   -                 5.15.11+20231124_3     2652KB 
qt5-x11extras install   -                 5.15.11+20231124_3     7231B 
ssr           install   -                 0.4.4_2                1449KB 

Size to download:               11MB
Size required on disk:          31MB
Space available on disk:        34GB

Do you want to continue? [Y/n]

подожду когда на qt6 переедут - не хочу систему засирать

amd_amd ★★★★★
()
Ответ на: комментарий от dataman

Ну до вяленого мне ещё далеко, пока удобно просто из терминала запустить и записывать сразу после выделения область и всё.

LINUX-ORG-RU ★★★★★
() автор топика
Ответ на: комментарий от amd_amd

подожду когда на qt6 переедут

Зря. Автора начали доставать с 2016 г. И он уже почти два года ничего не коммитит.

dataman ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)