✙rozho)))k✙🇺🇦 dan repost
Захотів зробити апку для скрінкастів
Коли я ще працював на теплій програмістській роботі, то мав потребу записувати короткі відео для користувачів та клієнтів.
Дуже проста функція — екран + кружечок з вебкамери + мікрофон. Розумні люди для цього зробили Loom та йому подібні, професіонали користуються OBS.
Але Loom не має апки для лінукса і працює лише як аддон у браузері. Я побачив тут opportunity та подумав — а чому б мені не зробити таку нативну апку? Задача звучить досить просто — іконка в треї, натискаєш на неї — починається запис, натискаєш ще раз — запис завершується і відкривається віконечко з посиланням на твоє відео, яке можна пошарити кому треба.
Чому нативну? В мене є незакритий гештальт. Дуже дратує веб-bloatware.
План був такий — зробити опенсорну апку та закритий сервер. З людей брати гроші за сторедж. Таких проєктів багато, а значить ідея провалідована.
Поліз робити, і...
Виявилося що все не так просто.
Я хотів взяти rust, ui бібліотеку egui, там зробити одну кнопку.
Почав копати як отримати доступ до екрана та вебки, і нічого кращого ніж ffmpeg не знайшов. Для раста є біндинги до ffmpeg, але вони настільки низькорівневі, що їх вивчення не вкладалося в бюджет mvp.
Мені вдалося зробити мікропрототип запису екрана, але я так і не зміг прокинути параметри кодування ffmpeg які регулюють якість і також зіткнувся з несумісністю версій.
Якщо пошукати, то є програми для запису екрана, які враплять виклики до бінарника ffmpeg, наприклад Blue Recorder. В принципі це те, що мені треба, туди тільки додати кружечок з вебки й аплоад на сервер.
Врешті через високу складність цю ідею я закинув.
Потім знову повернувся, з менш амбітною ціллю. Просто зробити клон Loom. Браузер дає високорівневе API яке ховає всі складності.
Давай думаю зроблю апку на електроні. Електрон — вчорашній день, розумні люди написали на расті Tauri, який швидший та компактніший. Ну, думаю, зараз заживемо, на джаваскріпті я вже точно подужаю зробити задачу.
Розгорнув хеловорлд, згенерував через Claude мінімальну версію запису екрана, запускаю, і... нічого. Дивлюся в чому справа — апка не може запитати дозвіл на запис. Йду на github, щоб дізнатися що Tauri не підтримує WebRTC і поки що не планує це робити🤦♂️
Потім я пішов ще раз подвитися як працює Loom та інші веб-додатки для запису екрану. Мені дуже не сподобалося що воно завжди запитує дозволи та також показує бейджик «ви шарите ваш екран». Я ж хочу нативне рішення, тому відмовився від електрону.
Давай думати далі, я ж Java-розробник? Напевне там щось має бути. Ось JetBrains зробили Compose Multiplatform, візьму його, а вже якесь АРІ в джаві має бути. Почав шукати — та ж проблема, є біндинги до ffmpeg якими хз як користуватися.
Якихось притомних бібліотек теж не знайшов — все або старе, або обмежене. Вирішив що раз на джаві тямущого не зможу зробити, то й котлін брати не варто.
Ще раз подивився на Loom. Ще раз подивився на ffmpeg.
Зібрав однорядкову команду на ffmpeg яка записує одночасно відео екрана, вебкамеру та звук з вебкамери в один файл і накладає вебкамеру власне на запис екрана.
В цілому можна було б взяти ту програму на расті яка врапила бінарник ffmpeg, додати туди аргументів та якось то зліпити докупи, але такий підхід має фатальний недолік — самого кружечка з вебкою воно не показує. Втім, Loom теж цього не робить.
Ніби проста задача — а все тааак складно! Ідеально б мати якесь високорівневе API яке б дозволяло отримувати потрібні відеопотоки та комбінувати їх і відразу стрімити. OBS цю задачу вирішує просто чудово, але виглядає це все абсолютно непідйомно.
Думаю що робити далі.
update: читач підказав рішення, автори якого вже пройшли увесь шлях та написали нативну апку на расті: Cap.
#проєкти
permalink | @full_of_hatred
👇Щоденні донати💰на ЗСУ🪖
🫡@Donate1024Bot
Коли я ще працював на теплій програмістській роботі, то мав потребу записувати короткі відео для користувачів та клієнтів.
Дуже проста функція — екран + кружечок з вебкамери + мікрофон. Розумні люди для цього зробили Loom та йому подібні, професіонали користуються OBS.
Але Loom не має апки для лінукса і працює лише як аддон у браузері. Я побачив тут opportunity та подумав — а чому б мені не зробити таку нативну апку? Задача звучить досить просто — іконка в треї, натискаєш на неї — починається запис, натискаєш ще раз — запис завершується і відкривається віконечко з посиланням на твоє відео, яке можна пошарити кому треба.
Чому нативну? В мене є незакритий гештальт. Дуже дратує веб-bloatware.
План був такий — зробити опенсорну апку та закритий сервер. З людей брати гроші за сторедж. Таких проєктів багато, а значить ідея провалідована.
Поліз робити, і...
Виявилося що все не так просто.
Я хотів взяти rust, ui бібліотеку egui, там зробити одну кнопку.
Почав копати як отримати доступ до екрана та вебки, і нічого кращого ніж ffmpeg не знайшов. Для раста є біндинги до ffmpeg, але вони настільки низькорівневі, що їх вивчення не вкладалося в бюджет mvp.
Мені вдалося зробити мікропрототип запису екрана, але я так і не зміг прокинути параметри кодування ffmpeg які регулюють якість і також зіткнувся з несумісністю версій.
Якщо пошукати, то є програми для запису екрана, які враплять виклики до бінарника ffmpeg, наприклад Blue Recorder. В принципі це те, що мені треба, туди тільки додати кружечок з вебки й аплоад на сервер.
Врешті через високу складність цю ідею я закинув.
Потім знову повернувся, з менш амбітною ціллю. Просто зробити клон Loom. Браузер дає високорівневе API яке ховає всі складності.
Давай думаю зроблю апку на електроні. Електрон — вчорашній день, розумні люди написали на расті Tauri, який швидший та компактніший. Ну, думаю, зараз заживемо, на джаваскріпті я вже точно подужаю зробити задачу.
Розгорнув хеловорлд, згенерував через Claude мінімальну версію запису екрана, запускаю, і... нічого. Дивлюся в чому справа — апка не може запитати дозвіл на запис. Йду на github, щоб дізнатися що Tauri не підтримує WebRTC і поки що не планує це робити🤦♂️
Потім я пішов ще раз подвитися як працює Loom та інші веб-додатки для запису екрану. Мені дуже не сподобалося що воно завжди запитує дозволи та також показує бейджик «ви шарите ваш екран». Я ж хочу нативне рішення, тому відмовився від електрону.
Давай думати далі, я ж Java-розробник? Напевне там щось має бути. Ось JetBrains зробили Compose Multiplatform, візьму його, а вже якесь АРІ в джаві має бути. Почав шукати — та ж проблема, є біндинги до ffmpeg якими хз як користуватися.
Якихось притомних бібліотек теж не знайшов — все або старе, або обмежене. Вирішив що раз на джаві тямущого не зможу зробити, то й котлін брати не варто.
Ще раз подивився на Loom. Ще раз подивився на ffmpeg.
Зібрав однорядкову команду на ffmpeg яка записує одночасно відео екрана, вебкамеру та звук з вебкамери в один файл і накладає вебкамеру власне на запис екрана.
В цілому можна було б взяти ту програму на расті яка врапила бінарник ffmpeg, додати туди аргументів та якось то зліпити докупи, але такий підхід має фатальний недолік — самого кружечка з вебкою воно не показує. Втім, Loom теж цього не робить.
Ніби проста задача — а все тааак складно! Ідеально б мати якесь високорівневе API яке б дозволяло отримувати потрібні відеопотоки та комбінувати їх і відразу стрімити. OBS цю задачу вирішує просто чудово, але виглядає це все абсолютно непідйомно.
Думаю що робити далі.
update: читач підказав рішення, автори якого вже пройшли увесь шлях та написали нативну апку на расті: Cap.
#проєкти
permalink | @full_of_hatred
👇Щоденні донати💰на ЗСУ🪖
🫡@Donate1024Bot