Мой первый open source: ff!ck.mp0 — рекордер, который не вылетает
Всем привет, ребзя!
[перезалив]
У меня тут был один очень весёлый опыт: попытка записать видео на ноуте 2016 года с AMD A6-9220 и Radeon R4.
Казалось бы, ничего особенного, но на практике это было настоящее шоу.
Сначала я попробовал Kazam.
И вроде всё нормально, но чем дольше шла запись, тем страннее он себя вёл.
Потом кнопка остановки записи как будто просто перестала существовать, а сам результат в итоге оказался каким-то полумёртвым огрызком, который ещё и нормально не воспроизводился.
После этого решил попробовать OBS.
Ну и да, там всё было ещё веселее: лаги, жёсткая нагрузка, FPS в районе “ну почти слайдшоу”, и ощущение, что ноуту уже не очень хорошо.
Тогда я подумал: а может, ну его, и сделать что-то своё?
Сначала я собрал совсем простой bash-скрипт на ffmpeg, который просто писал экран по кускам:
bash
while true; do out="rec_$(date +%s).mkv" ffmpeg \ -loglevel warning \ -thread_queue_size 512 \ -framerate 30 -video_size 1280x720 -f x11grab -i :0.0 \ -thread_queue_size 512 \ -f pulse -i alsa_output.pci-0000_00_09.2.analog-stereo.monitor \ -c:v libx264 -preset ultrafast -crf 28 -pix_fmt yuv420p \ -c:a aac -b:a 128k \ -shortest -t 00:02:00 "$out" done
И, что самое приятное, это реально работало.
Не выносило мозг ноуту, не убивало запись, не делало из системы кашу.
Да, приходилось жить в 1280x720, потому что мне привычнее 16:9, но это вообще не критично.
А потом мне надоело каждый раз писать cd ... и запускать скрипт вручную, и я решил сделать уже нормальную GUI-программу на Python.
Так и появился ff!ck.mp0 — очень простой рекордер с одной особенностью: запись по кускам.
То есть:
не надо держать тяжёлую программу;
не надо надеяться, что кнопка “Стоп” оживёт;
не надо молиться на FPS;
просто пишешь кусками и живёшь спокойно.
Я ещё сначала хотел прикрутить туда VRM — Vlad’s Record Method — но потом решил не распыляться и оставил только то, что реально нужно.
Если кому-то нужна чистая запись, это тоже есть через галочку.
Потом я всё это ещё и упаковал в исполняемый файл:
bash
pyinstaller --onefile --noconsole ffuck.py
И да, оно теперь запускается как обычная программа.
Репозиторий тут:
https://github.com/lolchokolats/ffuck.mp0
Если кому-то интересно, могу потом отдельно расписать:
как именно это собирал;
как сделал запись по кускам;
как всё упаковал в один файл под Linux;
и почему старый ноут 2016 года оказался отличным тестом на выживание.
Буду рад багрепортам, идеям и вообще любым замечаниям.
