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

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

gamz 2021. 6. 7. 01:17

개발 요약

만들리에 두번째 프로젝트인 스크린레코더의 MVP(Minimal Viable Product) 개발을 완료했다.

- 녹화 길이 무제한, No 워터마크, 사용하기 쉬운 무료 스크린레코더
- 개발기간 4월초~6월초 (하루 평균 2시간, 약 2개월)
- 커밋 142개, 코드라인 +23409 (+36484 / -13075)
- 주요 언어 TypeScript, 프레임워크 Electron, 에디터 VSCode
- 지원 운영체제 MacOS / Windows

다운로드

https://kropsaurus.pineple.com


개발 중 주요 이슈

 

앱 이름 정하기

앱 이름을 짓기는 정말 어렵다. 뭔가 정체성이 나타나야하고 세련되고 입에 붙는 그런 이름.. 근데 그건 포기했다. 그냥 스크린 씹어먹으라고 애들이 좋아하는 공룡(Saurus)만 붙여서 Cropsaurus 라고 지었다가 한국이면 K로 시작해야지라는 생각에 Kropsaurus 라고 정했다. 크랍사우르스~ 크앙!

 

스크린캡쳐 방식

처음에는 플랫폼(맥/윈도우)에서 제공하는 API를 이용해 직접 레코딩을 하는 가장 강력하고 무식한 방법으로 접근했다가 내 몸 하나로 각 플랫폼 코드를 유지하면서 수많은 삽질과 함께 기능을 채워나가는게 현실적으로 어렵다고 판단했다.

그런데 마침 ffmpeg 에서도 데스크탑 캡쳐를 지원하고 있어서 이걸 써보기로 했다. 이것도 플랫폼 별로 사용하는 모듈이나 그에 따른 파라미터가 다르긴 하지만 직접 구현하는 것보다는 훨씬 용이하기에 최초버전은 이 방식으로 구현했다.

하지만 이 방식의 문제는 배포할때 ffmpeg 바이너리를 반드시 포함시켜야하는데 플랫폼별로 다른 바이너리이며 심지어 Apple Silicon 용은 ffmpeg을 직접 빌드해서 포함시켜야하는 번거로움이 있고 앱에서 MacOS 같은 경우는 ffmpeg을 실행할때 사용하는 터미널프로그램이 (앱 자체가 아니라) 스크린레코딩 권한을 요청한다. 뿐만 아니라 배포시에 코드 사이닝을 하는데 이때 같이 포함되는 ffmpeg 실행파일도 코드 사이닝을 요한다. 하지만 Apple Silicon(arm64) 용으로 사인할때는 계속 알수없는 에러가 떠서 더이상 진행을 할 수 없었다.

그래서 스크린 캡쳐를 ffmpeg을 사용하지 않는 방법으로 다시 작성하느라 시간을 좀 썼다.

 

코드싸이닝(Code-Signing)

MacOS나 Windows 모두 코드싸이닝을 권고(라고 쓰고 강제)한다. 사용자를 Malware로부터 보호하겠다는 취지지만 일단 마켓을 통하지 않는 앱은 초기에 거의 막힌다라고 보면 된다.

특히, Windows 같은 경우는 SmartScreen 필터라는 기능이 추가되면서 코드싸이닝을 하더라도 평판이 아직 쌓이지 않은 앱들은 경고 팝업이 뜨는데 가끔은 유명한 오픈소스 앱들조차도 피해갈 수 없을만큼 그 기준이 까다롭거나 애매한 것 같다. 어쨌든 이 코드싸이닝을 하기 위해서는 CSC(Code-Sign-Certificate)를 획득해서 이걸로 빌드한 앱 바이너리를 싸인하면 된다. 그런데 이 CSC 획득이 비용이 들고 번거롭다. 나는 리셀러 중에 하나인 comodosslstore.com 를 통해 sectigo CSC를 구매 및 인증했다. 광고하기는 1-3일 발급 보장이라고 써있지만 거의 열흘 정도 걸렸다. 신분/주소 인증 등으로 Ping-pong 하고 거의 발급 직전에 private key 길이 스펙이 바뀌었다고 해서 취소/재구매하는 문제까지 생겨서 정말 힘들었다.

반면 MacOS 같은 경우는 너무 쉽다. 애플 개발자 등록후에 제공하는 인증서로 코드 싸이닝 및 공증(Notorize)하면 끝. 애플 개발자 등록비가 비싸다고 하지만 CSC 직접 받는과정 겪어보니 애플 개발자 등록비는 그냥 거저다.