만들리에/CropMon (스크린레코더) 8

크롭몬 버그픽스(v1.0.1) - 윈도우에서 레코딩 화질 깨지는 이슈

문제 크롭몬(v1.0.0)으로 윈도우 환경에서 레코딩시 가끔씩 아래 영상처럼 색상이 잘못 표현되는 문제가 있었다. (수평 라인들이 보이며 뭔가 패턴이 있는 것 같다) 삽질 일단 재현 경로만 확실히 알면 원인과 솔루션을 찾는건 쉽다. 하지만 이건 맥에서는 전혀 재현이 안되고 윈도우에서도 잘될때는 계속되고 안될때는 계속 안되는 등 도무지 패턴을 못 찾겠는거다. 이런저런 시도들을 해봤는데 효과가 없었다. (별로 의미 없음 무시) 두 영상 소스를 머지하는 부분을 Worker 에서 Renderer 프로세스로 다시 가져와보기 캔버스를 두개를 활용해서 일종의 더블버퍼링을 해보기 프레임레이트를 낮춰서 캔버스 Draw 빈도를 줄이기 아이디어 그렇게 주말이 지나가고 있었다. 빨리 정리하고 당분간 좀 쉬고 싶었다. 하지만 ..

CropMon 성능 개선 작업 PoC (2/2) - FFmpeg 리서치

이어서 계속 CropMon 성능 개선 작업 PoC (1/2) - FFmpeg 리서치에서는 여러 비디오 소스로부터 이를 Crop하고 Merge하는 실험을 해봤다. 이에 이어서 오디오 부분을 다뤄보고자 한다. 사실 마치 계획대로 잘 된 것 처럼 정리를 시도하고 있지만 엄청 많은 삽질과 고통속에서 몸부림쳤다. 개념도 없고 레퍼런스도 잘 못 찾는 상황에서 코드 한줄 못 나간채로 바닥에서 잠들기도 하고 시작피로를 못 넘어 며칠을 그냥 흘려보내기도 했다. 몇주간 마음의 부채를 안고 사는 지옥같은 시간에 포기의 유혹도 많았었다. 어쨌든 또 한번 작은 고개를 넘을 수 있어서 너무 개운하고 아직도 멀었지만 포스트를 남길 수 있게 되어 감사하다. 목표 두 비디오 소스의 병합(merge)에 더해 두 오디오 소스도 병합하는..

CropMon 성능 개선 작업 PoC (1/2) - FFmpeg 리서치

배경 CropMon 은 현재 일렉트론(Electron) 프레임워크가 제공하는 desktopCapturer 를 이용해서 스크린 레코딩을 하고 있다. 이는 다시 내부적으로는 Chromium 이 제공하는 화면 레코딩 API 을 이용하고 있다. 브라우저 환경에서 화상 회의 중에 화면 공유를 한다거나 하는 기능들이 모두 이 API 를 활용하고 있다. 다만, 이 API 가 제공하는 성능적인 제약이 있어서 일반적인 화상회의 유스케이스에는 크게 문제가 안되지만 고프레임레이트를 지원하기에는 다소 아쉬운 부분이 있다. ❌ 30fps 의 벽 (60fps 레코딩 불가) ❌ 음성의 경우 mono 만 지원 ❌ 영역 Crop 디코딩 -> 비디오 요소 캔바스에 그리기 -> 다시인코딩 과정이 필요한데 비효율적 스크린 레코딩 어플리케이..

CropMon (베타) 출시

“Kropsaurus” 라는 아명을 떼고 “CropMon” 이라는 새 이름으로 앱을 출시했다. [다운로드] 거의 2년이라는 시간동안 하루에 2–3시간 정도씩 짬을내서 24번의 주요/마이너 릴리즈를 했다. 중간 중간 이걸 내가 왜 하고 있나 지칠때도 있었지만 우공이산의 마음으로 꾸준히 끌고 왔다. 지금까지 추가한 주요 기능이다. Quick Accessible Recording: Fullscreen / Specific Area MP4 / GIF(Animation) Support Record Audio Source: Mic / System Audio (w/ virtual device) Appearance Configuration 아직 해결해야할 이슈도 많고 넣고 싶은 기능도 줄을 서있다. Native Reco..

스크린레코더- 백로그

현재 토이로 진행 중인 스크린레코더 Kropsaurus의 백로그에 대해서 메모겸 다짐겸 적어본다. Season 1 - 아주 심플 레코딩 (0.4.1 기준 여기까지 왔음) 캡쳐 영역 선택 + 레코딩 기본 동작 코드싸이닝 자동업데이트 사용자 단축키 지정 싱글 오버레이로 여러 스크린을 오버랩해서 레코딩 롱타임 레코딩 (파일 버퍼링) Season 2 - 레코딩 기능 보강 레코딩 후 간단한 편집 (Trimming) 오디오 레코딩 지원 특정 윈도우 및 전체화면 지정 모드 레코딩 중 간단한 드로우 지원 Season 3 - 레코딩 기능 고도화 웹캠 Mix 지원 GPU 레벨 레코딩 지원 (게임 등) Season 4 - 최적화 및 사용자 만족도 올리기 성능 병목 찾아 해소 및 리소스 사용률 줄이기 필요하면 일부 컴포넌트 ..

스크린레코더 - MVP 릴리즈 (Kropsaurus)

개발 요약 만들리에 두번째 프로젝트인 스크린레코더의 MVP(Minimal Viable Product) 개발을 완료했다. - 녹화 길이 무제한, No 워터마크, 사용하기 쉬운 무료 스크린레코더 - 개발기간 4월초~6월초 (하루 평균 2시간, 약 2개월) - 커밋 142개, 코드라인 +23409 (+36484 / -13075) - 주요 언어 TypeScript, 프레임워크 Electron, 에디터 VSCode - 지원 운영체제 MacOS / Windows 다운로드 https://kropsaurus.pineple.com 개발 중 주요 이슈 앱 이름 정하기 앱 이름을 짓기는 정말 어렵다. 뭔가 정체성이 나타나야하고 세련되고 입에 붙는 그런 이름.. 근데 그건 포기했다. 그냥 스크린 씹어먹으라고 애들이 좋아하는 ..

스크린레코더 - 개발 스택 / 환경 구성

개발 툴 조사 스크린레코더의 중요한 요구사항 중의 하나는 윈도우 / 맥 / (가능하다면) 리눅스까지 지원해야한다는 것이다. 이를 위해서 자연스럽게 크로스플랫폼 네이티브 앱 개발 툴들을 조사해봤다. * Qt / PyQt - 한번도 써보진 않았지만 전통을 가진 툴이라 익히 들어 한번 검토해봤다. 그런데 예제들을 보면서 이거 지금 내가 당장 썼을때 생산성이 나올까에 대한 의문이 들었다. Python으로 Wrapping한 PyQt를 보면 조금 낫긴 한데 여전히 이게 미래지향적인 방법이 맞는지에 대해 답이 잘 나오지 않았다. * JavaFX - Java 개발 환경이 주는 안정감과 IntelliJ와의 궁합 등이 꽤나 매력적으로 보였다. 플랫폼 관련 코드는 JNI을 통해 다소 우아하게 연결하는 부분도 생산적일 것 같..

회고 및 새로운 프로젝트 킥오프

추억의 오락실 개발의 마무리 정리 작업인 포스팅을 마치고 좀 쉬면서 회고 및 다음은 뭘 만들까 고민해봤다. 회고 - 기복은 있었지만 거의 1년 정도를 없는 시간 만들어가며 끌고온 열정에 스스로 박수를 보낸다. 아기띠 하고 애기 재우면서 폰으로 리서치하고 애기 자면 바짝 개발하고, 애기가 낮잠을 잘때도 졸리지만 놓칠 수 없는 타이밍이라 또 달리고.. 돌이켜보면 어떻게 했을까 다시 할 수 있을까도 싶다. - 스스로에게 물어봤다. 이런 허슬링의 본질적인 동기가 뭐였을까? 그나마 스스로 납득될만한 두가지가 떠오르긴 한다. 하나는 그냥 '강박'이다. 뭔가 계속 하고 있지 않으면 제대로 살고 있지 않은 느낌. 도태될까 두렵다라는 것과는 다른 것 같다. 별로 좋은 것 같지는 않다. 또 다른 건 '조바심'이다. 뭐에 ..